1 module libwasm.bindings.U2F; 2 3 import libwasm.types; 4 5 import memutils.ct: tuple; 6 @safe: 7 nothrow: 8 9 alias ErrorCode = ushort; 10 struct GlobalU2F { 11 nothrow: 12 JsHandle handle; 13 alias handle this; 14 this(Handle h) { 15 this.handle = JsHandle(h); 16 } 17 auto u2f()() { 18 return U2F(Object_Getter__Handle(this.handle, "u2f")); 19 } 20 } 21 struct RegisterRequest { 22 nothrow: 23 JsHandle handle; 24 alias handle this; 25 this(Handle h) { 26 this.handle = JsHandle(h); 27 } 28 static auto create() { 29 return RegisterRequest(libwasm_add__object()); 30 } 31 void version_()(string version_) { 32 Object_Call_string__void(this.handle, "version", version_); 33 } 34 string version_()() { 35 return Object_Getter__string(this.handle, "version"); 36 } 37 void challenge()(string challenge) { 38 Object_Call_string__void(this.handle, "challenge", challenge); 39 } 40 string challenge()() { 41 return Object_Getter__string(this.handle, "challenge"); 42 } 43 } 44 struct RegisterResponse { 45 nothrow: 46 JsHandle handle; 47 alias handle this; 48 this(Handle h) { 49 this.handle = JsHandle(h); 50 } 51 static auto create() { 52 return RegisterResponse(libwasm_add__object()); 53 } 54 void version_()(string version_) { 55 Object_Call_string__void(this.handle, "version", version_); 56 } 57 string version_()() { 58 return Object_Getter__string(this.handle, "version"); 59 } 60 void registrationData()(string registrationData) { 61 Object_Call_string__void(this.handle, "registrationData", registrationData); 62 } 63 string registrationData()() { 64 return Object_Getter__string(this.handle, "registrationData"); 65 } 66 void clientData()(string clientData) { 67 Object_Call_string__void(this.handle, "clientData", clientData); 68 } 69 string clientData()() { 70 return Object_Getter__string(this.handle, "clientData"); 71 } 72 void errorCode(T0)(scope auto ref Optional!(T0) errorCode) if (isTOrPointer!(T0, ushort)) { 73 Serialize_Object_VarArgCall!void(this.handle, "errorCode", "Optional!(ushort)", tuple(!errorCode.empty, errorCode.front)); 74 } 75 Optional!(ushort) errorCode()() { 76 return RegisterResponse_errorCode_Get(this.handle); 77 } 78 void errorMessage(T0)(scope auto ref Optional!(T0) errorMessage) if (isTOrPointer!(T0, string)) { 79 Serialize_Object_VarArgCall!void(this.handle, "errorMessage", "Optional!(string)", tuple(!errorMessage.empty, errorMessage.front)); 80 } 81 Optional!(string) errorMessage()() { 82 return Object_Getter__OptionalString(this.handle, "errorMessage"); 83 } 84 } 85 struct RegisteredKey { 86 nothrow: 87 JsHandle handle; 88 alias handle this; 89 this(Handle h) { 90 this.handle = JsHandle(h); 91 } 92 static auto create() { 93 return RegisteredKey(libwasm_add__object()); 94 } 95 void version_()(string version_) { 96 Object_Call_string__void(this.handle, "version", version_); 97 } 98 string version_()() { 99 return Object_Getter__string(this.handle, "version"); 100 } 101 void keyHandle()(string keyHandle) { 102 Object_Call_string__void(this.handle, "keyHandle", keyHandle); 103 } 104 string keyHandle()() { 105 return Object_Getter__string(this.handle, "keyHandle"); 106 } 107 void transports(T0)(scope auto ref Optional!(T0) transports) if (isTOrPointer!(T0, Transports)) { 108 Serialize_Object_VarArgCall!void(this.handle, "transports", "Optional!Handle", tuple(!transports.empty, cast(Handle)transports.front.handle)); 109 } 110 auto transports()() { 111 return recastOpt!(Transports)(Object_Getter__OptionalHandle(this.handle, "transports")); 112 } 113 void appId(T0)(scope auto ref Optional!(T0) appId) if (isTOrPointer!(T0, string)) { 114 Serialize_Object_VarArgCall!void(this.handle, "appId", "Optional!(string)", tuple(!appId.empty, appId.front)); 115 } 116 Optional!(string) appId()() { 117 return Object_Getter__OptionalString(this.handle, "appId"); 118 } 119 } 120 struct SignResponse { 121 nothrow: 122 JsHandle handle; 123 alias handle this; 124 this(Handle h) { 125 this.handle = JsHandle(h); 126 } 127 static auto create() { 128 return SignResponse(libwasm_add__object()); 129 } 130 void keyHandle()(string keyHandle) { 131 Object_Call_string__void(this.handle, "keyHandle", keyHandle); 132 } 133 string keyHandle()() { 134 return Object_Getter__string(this.handle, "keyHandle"); 135 } 136 void signatureData()(string signatureData) { 137 Object_Call_string__void(this.handle, "signatureData", signatureData); 138 } 139 string signatureData()() { 140 return Object_Getter__string(this.handle, "signatureData"); 141 } 142 void clientData()(string clientData) { 143 Object_Call_string__void(this.handle, "clientData", clientData); 144 } 145 string clientData()() { 146 return Object_Getter__string(this.handle, "clientData"); 147 } 148 void errorCode(T0)(scope auto ref Optional!(T0) errorCode) if (isTOrPointer!(T0, ushort)) { 149 Serialize_Object_VarArgCall!void(this.handle, "errorCode", "Optional!(ushort)", tuple(!errorCode.empty, errorCode.front)); 150 } 151 Optional!(ushort) errorCode()() { 152 return SignResponse_errorCode_Get(this.handle); 153 } 154 void errorMessage(T0)(scope auto ref Optional!(T0) errorMessage) if (isTOrPointer!(T0, string)) { 155 Serialize_Object_VarArgCall!void(this.handle, "errorMessage", "Optional!(string)", tuple(!errorMessage.empty, errorMessage.front)); 156 } 157 Optional!(string) errorMessage()() { 158 return Object_Getter__OptionalString(this.handle, "errorMessage"); 159 } 160 } 161 enum Transport { 162 bt, 163 ble, 164 nfc, 165 usb 166 } 167 alias Transports = Sequence!(Transport); 168 struct U2F { 169 nothrow: 170 JsHandle handle; 171 alias handle this; 172 this(Handle h) { 173 this.handle = JsHandle(h); 174 } 175 enum ushort OK = 0; 176 enum ushort OTHER_ERROR = 1; 177 enum ushort BAD_REQUEST = 2; 178 enum ushort CONFIGURATION_UNSUPPORTED = 3; 179 enum ushort DEVICE_INELIGIBLE = 4; 180 enum ushort TIMEOUT = 5; 181 void register(T4)(string appId, scope ref Sequence!(RegisterRequest) registerRequests, scope ref Sequence!(RegisteredKey) registeredKeys, U2FRegisterCallback callback, scope auto ref Optional!(T4) opt_timeoutSeconds) if (isTOrPointer!(T4, int)) { 182 U2F_register(this.handle, appId, registerRequests.handle, registeredKeys.handle, callback, !opt_timeoutSeconds.empty, opt_timeoutSeconds.front); 183 } 184 void register()(string appId, scope ref Sequence!(RegisterRequest) registerRequests, scope ref Sequence!(RegisteredKey) registeredKeys, U2FRegisterCallback callback) { 185 U2F_register_0(this.handle, appId, registerRequests.handle, registeredKeys.handle, callback); 186 } 187 void sign(T4)(string appId, string challenge, scope ref Sequence!(RegisteredKey) registeredKeys, U2FSignCallback callback, scope auto ref Optional!(T4) opt_timeoutSeconds) if (isTOrPointer!(T4, int)) { 188 U2F_sign(this.handle, appId, challenge, registeredKeys.handle, callback, !opt_timeoutSeconds.empty, opt_timeoutSeconds.front); 189 } 190 void sign()(string appId, string challenge, scope ref Sequence!(RegisteredKey) registeredKeys, U2FSignCallback callback) { 191 U2F_sign_0(this.handle, appId, challenge, registeredKeys.handle, callback); 192 } 193 } 194 struct U2FClientData { 195 nothrow: 196 JsHandle handle; 197 alias handle this; 198 this(Handle h) { 199 this.handle = JsHandle(h); 200 } 201 static auto create() { 202 return U2FClientData(libwasm_add__object()); 203 } 204 void typ()(string typ) { 205 Object_Call_string__void(this.handle, "typ", typ); 206 } 207 string typ()() { 208 return Object_Getter__string(this.handle, "typ"); 209 } 210 void challenge()(string challenge) { 211 Object_Call_string__void(this.handle, "challenge", challenge); 212 } 213 string challenge()() { 214 return Object_Getter__string(this.handle, "challenge"); 215 } 216 void origin()(string origin) { 217 Object_Call_string__void(this.handle, "origin", origin); 218 } 219 string origin()() { 220 return Object_Getter__string(this.handle, "origin"); 221 } 222 } 223 alias U2FRegisterCallback = void delegate(RegisterResponse); 224 alias U2FSignCallback = void delegate(SignResponse); 225 226 227 extern (C) Optional!(ushort) RegisterResponse_errorCode_Get(Handle); 228 extern (C) Optional!(ushort) SignResponse_errorCode_Get(Handle); 229 extern (C) void U2F_register(Handle, string, Handle, Handle, U2FRegisterCallback, bool, int); 230 extern (C) void U2F_register_0(Handle, string, Handle, Handle, U2FRegisterCallback); 231 extern (C) void U2F_sign(Handle, string, string, Handle, U2FSignCallback, bool, int); 232 extern (C) void U2F_sign_0(Handle, string, string, Handle, U2FSignCallback);