@bwalletx/connect 0.5.4 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +97 -9
  3. package/dist/bwalletx-connect.global.js +97 -25
  4. package/dist/bwalletx-connect.global.js.map +1 -1
  5. package/dist/choice-B97AjqF4.d.cts +442 -0
  6. package/dist/choice-B97AjqF4.d.ts +442 -0
  7. package/dist/chunk-6EFFOIHK.js +2441 -0
  8. package/dist/chunk-6EFFOIHK.js.map +1 -0
  9. package/dist/{chunk-QRXFL66W.js → chunk-A2WLGS25.js} +6 -4
  10. package/dist/chunk-A2WLGS25.js.map +1 -0
  11. package/dist/chunk-DIKJFKND.js +239 -0
  12. package/dist/chunk-DIKJFKND.js.map +1 -0
  13. package/dist/chunk-TNRI7ARM.js +206 -0
  14. package/dist/chunk-TNRI7ARM.js.map +1 -0
  15. package/dist/element-BXEoOdXY.d.cts +53 -0
  16. package/dist/element-BXEoOdXY.d.ts +53 -0
  17. package/dist/element.cjs +1576 -60
  18. package/dist/element.cjs.map +1 -1
  19. package/dist/element.d.cts +26 -26
  20. package/dist/element.d.ts +26 -26
  21. package/dist/element.js +35 -2
  22. package/dist/element.js.map +1 -1
  23. package/dist/index.cjs +2046 -454
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +323 -16
  26. package/dist/index.d.ts +323 -16
  27. package/dist/index.js +186 -12
  28. package/dist/index.js.map +1 -1
  29. package/dist/next.cjs +5 -3
  30. package/dist/next.cjs.map +1 -1
  31. package/dist/next.js +1 -1
  32. package/dist/react.cjs +1601 -210
  33. package/dist/react.cjs.map +1 -1
  34. package/dist/react.d.cts +115 -9
  35. package/dist/react.d.ts +115 -9
  36. package/dist/react.js +262 -46
  37. package/dist/react.js.map +1 -1
  38. package/dist/server.cjs +5 -3
  39. package/dist/server.cjs.map +1 -1
  40. package/dist/server.d.cts +8 -3
  41. package/dist/server.d.ts +8 -3
  42. package/dist/server.js +1 -1
  43. package/package.json +10 -9
  44. package/dist/chunk-EXRQJTXF.js +0 -910
  45. package/dist/chunk-EXRQJTXF.js.map +0 -1
  46. package/dist/chunk-QRXFL66W.js.map +0 -1
  47. package/dist/chunk-RIOHG5JH.js +0 -459
  48. package/dist/chunk-RIOHG5JH.js.map +0 -1
  49. package/dist/wallets-CbzMtxrf.d.cts +0 -250
  50. package/dist/wallets-CbzMtxrf.d.ts +0 -250
package/dist/index.js CHANGED
@@ -1,53 +1,141 @@
1
+ import {
2
+ BUTTON_TAG,
3
+ CONNECTED_KEY,
4
+ defineBwalletxButton,
5
+ dropLegacyConnectedKey,
6
+ getUrlFor,
7
+ handleLabel,
8
+ migrateConnectedKey,
9
+ stateFor
10
+ } from "./chunk-DIKJFKND.js";
1
11
  import {
2
12
  BRC29_PROTOCOL,
13
+ NO_COINS_TEXT,
3
14
  PaymentError,
4
15
  WALLET_THEME_META,
5
16
  amountInSats,
6
- brc100Option,
7
17
  buyToken,
8
18
  declareWalletTheme,
9
- discoverWallets,
10
- handcashAdapter,
11
19
  isIdentityKeyHex,
20
+ isInsufficientFunds,
12
21
  isPaymail,
13
- isTouchDevice,
14
- pairingModal,
15
- pairingOption,
16
22
  pay,
17
- pickWallet,
18
- qrSvg,
19
23
  resolvePaymailP2P,
20
24
  tip
21
- } from "./chunk-RIOHG5JH.js";
25
+ } from "./chunk-TNRI7ARM.js";
22
26
  import {
27
+ BAVATAR_URL,
23
28
  BWALLETX_RDNS,
29
+ BWALLETX_TYPE,
30
+ CONTINUE_OTHER_LABEL,
24
31
  DEFAULT_DISCOVER_MS,
32
+ DESKTOP_OPTION_ID,
25
33
  GET_URL,
34
+ IDENTITY_HINT_KEY,
35
+ KNOWN_KEYS_KEY,
26
36
  LOGIN_PROTOCOL,
37
+ MENU_CSS,
38
+ METANET_ANSWER_MS,
39
+ METANET_JSON_API,
40
+ METANET_LABEL,
41
+ METANET_NOTE,
42
+ METANET_OPTION_ID,
43
+ METANET_REMEMBERED_NOTE,
44
+ METANET_SILENT_MS,
45
+ METANET_TYPE,
46
+ METANET_UNREACHABLE,
47
+ MetanetUnreachableError,
48
+ NOT_YOU_LABEL,
49
+ PAYMAIL_LOOKUP_URL,
50
+ PENDING_LABEL,
51
+ PENDING_LABEL_OTHER,
52
+ PENDING_NOTE,
27
53
  RDNS_EXTENSION,
28
54
  RDNS_MOBILE,
29
55
  SIGNIN_CSS,
30
56
  SIGNIN_TAG,
57
+ SWITCH_NOTE,
58
+ WALLET_CHOICE_KEY,
31
59
  WEB_WALLET_URL,
60
+ accountLabel,
61
+ attachRemembered,
62
+ attemptFor,
63
+ autoChoice,
64
+ avatarUrlFor,
32
65
  bindPrewarm,
66
+ brc100Option,
33
67
  buildAuthorizeUrl,
68
+ challengeWantsIdentityKey,
69
+ chooseWallet,
70
+ chooserOrder,
71
+ claimSilentAttempt,
34
72
  clearPairing,
35
73
  connectBwalletX,
74
+ connectMetanetDesktop,
75
+ cwiIsAnnounced,
76
+ decideWallet,
36
77
  defineBwalletxSignin,
78
+ desktopOption,
37
79
  discoverBwalletX,
80
+ discoverWallets,
38
81
  findBwalletX,
82
+ forgetWalletChoice,
83
+ handcashAdapter,
84
+ hasBwalletX,
85
+ inAnyFrame,
39
86
  inOrder,
87
+ isExplicitPick,
88
+ isFramed,
89
+ isKnownIdentityKey,
90
+ isLocalDesktop,
91
+ isLocalDesktopType,
92
+ isPresentBwalletX,
93
+ isRememberable,
94
+ isTouchDevice,
95
+ isUserRejection,
96
+ knownIdentityKeys,
97
+ lookupPaymail,
40
98
  markSvg,
99
+ matchRemembered,
100
+ metanetOffered,
101
+ metanetOption,
102
+ needsBwalletX,
103
+ otherDetected,
104
+ outcomeOf,
41
105
  pairBwalletX,
106
+ pairingModal,
107
+ pairingOption,
108
+ pickWallet,
109
+ planAutoConnect,
42
110
  prewarmBwalletX,
43
111
  proveHoldings,
112
+ qrSvg,
113
+ rememberIdentity,
114
+ rememberKnownIdentityKey,
115
+ rememberWalletChoice,
116
+ rememberedIdentity,
117
+ rememberedWalletChoice,
118
+ reportAttempt,
44
119
  requestAccess,
120
+ resetSilentAttempt,
45
121
  restorePairing,
122
+ runConnect,
123
+ runSilentMetanet,
124
+ shortKey,
125
+ signInAndVerify,
126
+ signInErrorText,
46
127
  signInWithBwalletX,
47
128
  signinText,
129
+ silentAttemptUsed,
130
+ substrateOf,
131
+ tapGoesElsewhere,
48
132
  throwIfAccessError,
49
- toAccessError
50
- } from "./chunk-EXRQJTXF.js";
133
+ toAccessError,
134
+ trySilentMetanet,
135
+ waitIfLocked,
136
+ walletTypeOf,
137
+ warnIfNoLogout
138
+ } from "./chunk-6EFFOIHK.js";
51
139
  import {
52
140
  ACCESS_ERROR_STATUS,
53
141
  ACCESS_PROTOCOL,
@@ -107,57 +195,143 @@ export {
107
195
  ACCESS_PROTOCOL,
108
196
  ACCESS_VERSION,
109
197
  AccessError,
198
+ BAVATAR_URL,
110
199
  BRC29_PROTOCOL,
200
+ BUTTON_TAG,
111
201
  BWALLETX_RDNS,
202
+ BWALLETX_TYPE,
203
+ CONNECTED_KEY,
204
+ CONTINUE_OTHER_LABEL,
112
205
  DEFAULT_DISCOVER_MS,
206
+ DESKTOP_OPTION_ID,
113
207
  GET_URL,
208
+ IDENTITY_HINT_KEY,
209
+ KNOWN_KEYS_KEY,
114
210
  LOGIN_PROTOCOL,
115
211
  LOGO_URL,
212
+ MENU_CSS,
213
+ METANET_ANSWER_MS,
214
+ METANET_JSON_API,
215
+ METANET_LABEL,
216
+ METANET_NOTE,
217
+ METANET_OPTION_ID,
218
+ METANET_REMEMBERED_NOTE,
219
+ METANET_SILENT_MS,
220
+ METANET_TYPE,
221
+ METANET_UNREACHABLE,
222
+ MetanetUnreachableError,
223
+ NOT_YOU_LABEL,
224
+ NO_COINS_TEXT,
225
+ PAYMAIL_LOOKUP_URL,
226
+ PENDING_LABEL,
227
+ PENDING_LABEL_OTHER,
228
+ PENDING_NOTE,
116
229
  PROTOCOL_MEDIA,
117
230
  PaymentError,
118
231
  RDNS_EXTENSION,
119
232
  RDNS_MOBILE,
120
233
  SIGNIN_CSS,
121
234
  SIGNIN_TAG,
235
+ SWITCH_NOTE,
236
+ WALLET_CHOICE_KEY,
122
237
  WALLET_THEME_META,
123
238
  WEB_WALLET_URL,
124
239
  accessErrorMessage,
240
+ accountLabel,
125
241
  amountInSats,
242
+ attachRemembered,
243
+ attemptFor,
244
+ autoChoice,
245
+ avatarUrlFor,
126
246
  bindPrewarm,
127
247
  brc100Option,
128
248
  buildAuthorizeUrl,
129
249
  buyToken,
130
250
  canonicalJson,
251
+ challengeWantsIdentityKey,
252
+ chooseWallet,
253
+ chooserOrder,
254
+ claimSilentAttempt,
131
255
  clearPairing,
132
256
  connectBwalletX,
257
+ connectMetanetDesktop,
258
+ cwiIsAnnounced,
259
+ decideWallet,
133
260
  declareWalletTheme,
261
+ defineBwalletxButton,
134
262
  defineBwalletxSignin,
263
+ desktopOption,
135
264
  discoverBwalletX,
136
265
  discoverWallets,
266
+ dropLegacyConnectedKey,
137
267
  findBwalletX,
268
+ forgetWalletChoice,
269
+ getUrlFor,
138
270
  handcashAdapter,
271
+ handleLabel,
272
+ hasBwalletX,
273
+ inAnyFrame,
139
274
  inOrder,
275
+ isExplicitPick,
276
+ isFramed,
140
277
  isIdentityKeyHex,
278
+ isInsufficientFunds,
279
+ isKnownIdentityKey,
280
+ isLocalDesktop,
281
+ isLocalDesktopType,
141
282
  isPaymail,
283
+ isPresentBwalletX,
284
+ isRememberable,
142
285
  isTouchDevice,
286
+ isUserRejection,
287
+ knownIdentityKeys,
288
+ lookupPaymail,
143
289
  markSvg,
290
+ matchRemembered,
291
+ metanetOffered,
292
+ metanetOption,
293
+ migrateConnectedKey,
294
+ needsBwalletX,
295
+ otherDetected,
296
+ outcomeOf,
144
297
  pairBwalletX,
145
298
  pairingModal,
146
299
  pairingOption,
147
300
  pay,
148
301
  pickWallet,
302
+ planAutoConnect,
149
303
  prewarmBwalletX,
150
304
  protocolMediaUrl,
151
305
  proveHoldings,
152
306
  qrSvg,
307
+ rememberIdentity,
308
+ rememberKnownIdentityKey,
309
+ rememberWalletChoice,
310
+ rememberedIdentity,
311
+ rememberedWalletChoice,
153
312
  renderButton,
313
+ reportAttempt,
154
314
  requestAccess,
315
+ resetSilentAttempt,
155
316
  resolvePaymailP2P,
156
317
  restorePairing,
318
+ runConnect,
319
+ runSilentMetanet,
320
+ shortKey,
321
+ signInAndVerify,
322
+ signInErrorText,
157
323
  signInWithBwalletX,
158
324
  signinText,
325
+ silentAttemptUsed,
326
+ stateFor,
327
+ substrateOf,
328
+ tapGoesElsewhere,
159
329
  throwIfAccessError,
160
330
  tip,
161
- toAccessError
331
+ toAccessError,
332
+ trySilentMetanet,
333
+ waitIfLocked,
334
+ walletTypeOf,
335
+ warnIfNoLogout
162
336
  };
163
337
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/button.ts"],"sourcesContent":["const CSS = `\n.bwx-signin{display:inline-flex;align-items:center;gap:12px;min-height:48px;padding:10px 22px 10px 10px;border:0;border-radius:12px;cursor:pointer;background:linear-gradient(180deg,#fcd34d,#f59e0b);color:#000;text-align:left;font:700 16px/1.2 system-ui,-apple-system,\"Segoe UI\",sans-serif;box-shadow:0 8px 24px rgba(245,158,11,.2)}\n.bwx-signin:hover{background:linear-gradient(180deg,#fde68a,#fbbf24)}\n.bwx-signin:focus-visible{outline:2px solid #ffd24d;outline-offset:3px}\n.bwx-signin:disabled{opacity:.6;cursor:wait}\n.bwx-signin .bwx-mark{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:#000;flex:none}\n.bwx-signin small{display:block;font-size:11px;font-weight:500;color:rgba(0,0,0,.6)}`;\n\nexport const LOGO_URL = 'https://bwalletx.com/logo.svg';\n\nexport interface ButtonOptions {\n /** Second line under the label. Default \"also works with bWallet\". false hides it. */\n subtitle?: string | false;\n onClick?: (button: HTMLButtonElement) => void;\n}\n\n/** Put the gold \"Sign in with bWalletX\" button into `el` (replacing its contents). */\nexport function renderButton(el: HTMLElement | string, opts: ButtonOptions = {}): HTMLButtonElement {\n const host = typeof el === 'string' ? document.querySelector<HTMLElement>(el) : el;\n if (!host) throw new Error(`renderButton: no element ${String(el)}`);\n if (!document.getElementById('bwx-signin-css')) {\n const style = document.createElement('style');\n style.id = 'bwx-signin-css';\n style.textContent = CSS;\n document.head.appendChild(style);\n }\n const b = document.createElement('button');\n b.type = 'button';\n b.className = 'bwx-signin';\n const mark = document.createElement('span');\n mark.className = 'bwx-mark';\n const img = document.createElement('img');\n img.src = LOGO_URL;\n img.alt = '';\n img.width = 15;\n img.height = 20;\n mark.appendChild(img);\n const label = document.createElement('span');\n label.className = 'bwx-label';\n label.textContent = 'Sign in with bWalletX';\n const sub = opts.subtitle === undefined ? 'also works with bWallet' : opts.subtitle;\n if (sub) {\n const small = document.createElement('small');\n small.textContent = sub;\n label.appendChild(small);\n }\n b.append(mark, label);\n if (opts.onClick) b.addEventListener('click', () => opts.onClick!(b));\n host.replaceChildren(b);\n return b;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQL,IAAM,WAAW;AASjB,SAAS,aAAa,IAA0B,OAAsB,CAAC,GAAsB;AAClG,QAAM,OAAO,OAAO,OAAO,WAAW,SAAS,cAA2B,EAAE,IAAI;AAChF,MAAI,CAAC,KAAM,OAAM,IAAI,MAAM,4BAA4B,OAAO,EAAE,CAAC,EAAE;AACnE,MAAI,CAAC,SAAS,eAAe,gBAAgB,GAAG;AAC9C,UAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,UAAM,KAAK;AACX,UAAM,cAAc;AACpB,aAAS,KAAK,YAAY,KAAK;AAAA,EACjC;AACA,QAAM,IAAI,SAAS,cAAc,QAAQ;AACzC,IAAE,OAAO;AACT,IAAE,YAAY;AACd,QAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,OAAK,YAAY;AACjB,QAAM,MAAM,SAAS,cAAc,KAAK;AACxC,MAAI,MAAM;AACV,MAAI,MAAM;AACV,MAAI,QAAQ;AACZ,MAAI,SAAS;AACb,OAAK,YAAY,GAAG;AACpB,QAAM,QAAQ,SAAS,cAAc,MAAM;AAC3C,QAAM,YAAY;AAClB,QAAM,cAAc;AACpB,QAAM,MAAM,KAAK,aAAa,SAAY,4BAA4B,KAAK;AAC3E,MAAI,KAAK;AACP,UAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,UAAM,cAAc;AACpB,UAAM,YAAY,KAAK;AAAA,EACzB;AACA,IAAE,OAAO,MAAM,KAAK;AACpB,MAAI,KAAK,QAAS,GAAE,iBAAiB,SAAS,MAAM,KAAK,QAAS,CAAC,CAAC;AACpE,OAAK,gBAAgB,CAAC;AACtB,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../src/button.ts"],"sourcesContent":["const CSS = `\n.bwx-signin{display:inline-flex;align-items:center;gap:12px;min-height:48px;padding:10px 22px 10px 10px;border:0;border-radius:12px;cursor:pointer;background:linear-gradient(180deg,#fcd34d,#f59e0b);color:#000;text-align:left;font:700 16px/1.2 system-ui,-apple-system,\"Segoe UI\",sans-serif;box-shadow:0 8px 24px rgba(245,158,11,.2)}\n.bwx-signin:hover{background:linear-gradient(180deg,#fde68a,#fbbf24)}\n.bwx-signin:focus-visible{outline:2px solid #ffd24d;outline-offset:3px}\n.bwx-signin:disabled{opacity:.6;cursor:wait}\n.bwx-signin .bwx-mark{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:#000;flex:none}\n.bwx-signin small{display:block;font-size:11px;font-weight:500;color:rgba(0,0,0,.6)}`;\n\nexport const LOGO_URL = 'https://bwalletx.com/logo.svg';\n\nexport interface ButtonOptions {\n /** Second line under the label. Default \"also works with bWallet\". false hides it. */\n subtitle?: string | false;\n onClick?: (button: HTMLButtonElement) => void;\n}\n\n/** Put the gold \"Sign in with bWalletX\" button into `el` (replacing its contents). */\nexport function renderButton(el: HTMLElement | string, opts: ButtonOptions = {}): HTMLButtonElement {\n const host = typeof el === 'string' ? document.querySelector<HTMLElement>(el) : el;\n if (!host) throw new Error(`renderButton: no element ${String(el)}`);\n if (!document.getElementById('bwx-signin-css')) {\n const style = document.createElement('style');\n style.id = 'bwx-signin-css';\n style.textContent = CSS;\n document.head.appendChild(style);\n }\n const b = document.createElement('button');\n b.type = 'button';\n b.className = 'bwx-signin';\n const mark = document.createElement('span');\n mark.className = 'bwx-mark';\n const img = document.createElement('img');\n img.src = LOGO_URL;\n img.alt = '';\n img.width = 15;\n img.height = 20;\n mark.appendChild(img);\n const label = document.createElement('span');\n label.className = 'bwx-label';\n label.textContent = 'Sign in with bWalletX';\n const sub = opts.subtitle === undefined ? 'also works with bWallet' : opts.subtitle;\n if (sub) {\n const small = document.createElement('small');\n small.textContent = sub;\n label.appendChild(small);\n }\n b.append(mark, label);\n if (opts.onClick) b.addEventListener('click', () => opts.onClick!(b));\n host.replaceChildren(b);\n return b;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQL,IAAM,WAAW;AASjB,SAAS,aAAa,IAA0B,OAAsB,CAAC,GAAsB;AAClG,QAAM,OAAO,OAAO,OAAO,WAAW,SAAS,cAA2B,EAAE,IAAI;AAChF,MAAI,CAAC,KAAM,OAAM,IAAI,MAAM,4BAA4B,OAAO,EAAE,CAAC,EAAE;AACnE,MAAI,CAAC,SAAS,eAAe,gBAAgB,GAAG;AAC9C,UAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,UAAM,KAAK;AACX,UAAM,cAAc;AACpB,aAAS,KAAK,YAAY,KAAK;AAAA,EACjC;AACA,QAAM,IAAI,SAAS,cAAc,QAAQ;AACzC,IAAE,OAAO;AACT,IAAE,YAAY;AACd,QAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,OAAK,YAAY;AACjB,QAAM,MAAM,SAAS,cAAc,KAAK;AACxC,MAAI,MAAM;AACV,MAAI,MAAM;AACV,MAAI,QAAQ;AACZ,MAAI,SAAS;AACb,OAAK,YAAY,GAAG;AACpB,QAAM,QAAQ,SAAS,cAAc,MAAM;AAC3C,QAAM,YAAY;AAClB,QAAM,cAAc;AACpB,QAAM,MAAM,KAAK,aAAa,SAAY,4BAA4B,KAAK;AAC3E,MAAI,KAAK;AACP,UAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,UAAM,cAAc;AACpB,UAAM,YAAY,KAAK;AAAA,EACzB;AACA,IAAE,OAAO,MAAM,KAAK;AACpB,MAAI,KAAK,QAAS,GAAE,iBAAiB,SAAS,MAAM,KAAK,QAAS,CAAC,CAAC;AACpE,OAAK,gBAAgB,CAAC;AACtB,SAAO;AACT;","names":[]}
package/dist/next.cjs CHANGED
@@ -563,12 +563,14 @@ function randomNonce2() {
563
563
  return btoa(s).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
564
564
  }
565
565
  async function createChallenge(opts) {
566
- if (!isIdentityKey(opts.identityKey)) throw new Error("identityKey must be a compressed public key (66 hex chars)");
566
+ const given = opts.identityKey !== void 0 && opts.identityKey !== null && opts.identityKey !== "";
567
+ if (given && !isIdentityKey(opts.identityKey)) throw new Error("identityKey must be a compressed public key (66 hex chars)");
568
+ const boundKey = given ? opts.identityKey.toLowerCase() : "";
567
569
  const origin = normalOrigin2(opts.origin);
568
570
  const nonce = randomNonce2();
569
571
  const expiresAt = Date.now() + CHALLENGE_LIFETIME_MS;
570
572
  const message = loginMessage(origin, nonce, expiresAt);
571
- await storeOrDefault(opts.store).put(nonce, { identityKey: opts.identityKey.toLowerCase(), origin, message, expiresAt });
573
+ await storeOrDefault(opts.store).put(nonce, { identityKey: boundKey, origin, message, expiresAt });
572
574
  return { nonce, message, protocolID: LOGIN_PROTOCOL, keyID: nonce, expiresAt };
573
575
  }
574
576
  async function verifySignIn(opts) {
@@ -584,7 +586,7 @@ async function verifySignIn(opts) {
584
586
  if (c.origin !== origin) return null;
585
587
  if (!isIdentityKey(opts.identityKey)) return null;
586
588
  const identityKey = opts.identityKey.toLowerCase();
587
- if (c.identityKey !== identityKey) return null;
589
+ if (c.identityKey && c.identityKey !== identityKey) return null;
588
590
  const sig = opts.signature;
589
591
  if (!Array.isArray(sig) || sig.length < 8 || sig.length > 80 || !sig.every((b) => Number.isInteger(b) && b >= 0 && b <= 255)) {
590
592
  return null;