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);