@zerodev/wallet-core 0.0.3 → 0.0.5

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 (130) hide show
  1. package/dist/_cjs/actions/auth/getAuthenticators.js.map +1 -1
  2. package/dist/_cjs/actions/auth/index.js +3 -1
  3. package/dist/_cjs/actions/auth/index.js.map +1 -1
  4. package/dist/_cjs/actions/auth/logout.js +23 -0
  5. package/dist/_cjs/actions/auth/logout.js.map +1 -0
  6. package/dist/_cjs/actions/index.js +2 -1
  7. package/dist/_cjs/actions/index.js.map +1 -1
  8. package/dist/_cjs/actions/wallet/getUserWallet.js +1 -1
  9. package/dist/_cjs/actions/wallet/getUserWallet.js.map +1 -1
  10. package/dist/_cjs/actions/wallet/signingUtils.js +23 -3
  11. package/dist/_cjs/actions/wallet/signingUtils.js.map +1 -1
  12. package/dist/_cjs/adapters/viem.js +26 -9
  13. package/dist/_cjs/adapters/viem.js.map +1 -1
  14. package/dist/_cjs/client/decorators/client.js +1 -0
  15. package/dist/_cjs/client/decorators/client.js.map +1 -1
  16. package/dist/_cjs/client/transports/rest.js.map +1 -1
  17. package/dist/_cjs/core/createZeroDevWalletCore.js +297 -168
  18. package/dist/_cjs/core/createZeroDevWalletCore.js.map +1 -1
  19. package/dist/_cjs/index.js +2 -1
  20. package/dist/_cjs/index.js.map +1 -1
  21. package/dist/_cjs/index.native.js +2 -1
  22. package/dist/_cjs/index.native.js.map +1 -1
  23. package/dist/_cjs/native/stampers/secureStore.js +94 -17
  24. package/dist/_cjs/native/stampers/secureStore.js.map +1 -1
  25. package/dist/_cjs/stampers/indexedDbStamper.js +34 -0
  26. package/dist/_cjs/stampers/indexedDbStamper.js.map +1 -1
  27. package/dist/_cjs/storage/manager.js +144 -17
  28. package/dist/_cjs/storage/manager.js.map +1 -1
  29. package/dist/_cjs/utils/buildClientSignature.js +4 -1
  30. package/dist/_cjs/utils/buildClientSignature.js.map +1 -1
  31. package/dist/_cjs/utils/derToRawSignature.js +12 -0
  32. package/dist/_cjs/utils/derToRawSignature.js.map +1 -1
  33. package/dist/_cjs/utils/exportPrivateKey.js +1 -1
  34. package/dist/_cjs/utils/exportPrivateKey.js.map +1 -1
  35. package/dist/_cjs/utils/utils.js +27 -6
  36. package/dist/_cjs/utils/utils.js.map +1 -1
  37. package/dist/_esm/actions/auth/getAuthenticators.js +3 -2
  38. package/dist/_esm/actions/auth/getAuthenticators.js.map +1 -1
  39. package/dist/_esm/actions/auth/index.js +1 -0
  40. package/dist/_esm/actions/auth/index.js.map +1 -1
  41. package/dist/_esm/actions/auth/logout.js +21 -0
  42. package/dist/_esm/actions/auth/logout.js.map +1 -0
  43. package/dist/_esm/actions/index.js +1 -1
  44. package/dist/_esm/actions/index.js.map +1 -1
  45. package/dist/_esm/actions/wallet/getUserWallet.js +3 -1
  46. package/dist/_esm/actions/wallet/getUserWallet.js.map +1 -1
  47. package/dist/_esm/actions/wallet/signingUtils.js +24 -4
  48. package/dist/_esm/actions/wallet/signingUtils.js.map +1 -1
  49. package/dist/_esm/adapters/viem.js +27 -10
  50. package/dist/_esm/adapters/viem.js.map +1 -1
  51. package/dist/_esm/client/decorators/client.js +2 -1
  52. package/dist/_esm/client/decorators/client.js.map +1 -1
  53. package/dist/_esm/client/transports/rest.js.map +1 -1
  54. package/dist/_esm/core/createZeroDevWalletCore.js +320 -186
  55. package/dist/_esm/core/createZeroDevWalletCore.js.map +1 -1
  56. package/dist/_esm/index.js +1 -1
  57. package/dist/_esm/index.js.map +1 -1
  58. package/dist/_esm/index.native.js +1 -1
  59. package/dist/_esm/index.native.js.map +1 -1
  60. package/dist/_esm/native/stampers/secureStore.js +111 -18
  61. package/dist/_esm/native/stampers/secureStore.js.map +1 -1
  62. package/dist/_esm/stampers/indexedDbStamper.js +36 -0
  63. package/dist/_esm/stampers/indexedDbStamper.js.map +1 -1
  64. package/dist/_esm/storage/manager.js +150 -22
  65. package/dist/_esm/storage/manager.js.map +1 -1
  66. package/dist/_esm/utils/buildClientSignature.js +4 -1
  67. package/dist/_esm/utils/buildClientSignature.js.map +1 -1
  68. package/dist/_esm/utils/derToRawSignature.js +12 -0
  69. package/dist/_esm/utils/derToRawSignature.js.map +1 -1
  70. package/dist/_esm/utils/exportPrivateKey.js +1 -1
  71. package/dist/_esm/utils/exportPrivateKey.js.map +1 -1
  72. package/dist/_esm/utils/utils.js +27 -6
  73. package/dist/_esm/utils/utils.js.map +1 -1
  74. package/dist/_types/actions/auth/getAuthenticators.d.ts +19 -2
  75. package/dist/_types/actions/auth/getAuthenticators.d.ts.map +1 -1
  76. package/dist/_types/actions/auth/index.d.ts +2 -1
  77. package/dist/_types/actions/auth/index.d.ts.map +1 -1
  78. package/dist/_types/actions/auth/logout.d.ts +11 -0
  79. package/dist/_types/actions/auth/logout.d.ts.map +1 -0
  80. package/dist/_types/actions/index.d.ts +1 -1
  81. package/dist/_types/actions/index.d.ts.map +1 -1
  82. package/dist/_types/actions/wallet/getUserWallet.d.ts.map +1 -1
  83. package/dist/_types/actions/wallet/signingUtils.d.ts.map +1 -1
  84. package/dist/_types/adapters/viem.d.ts.map +1 -1
  85. package/dist/_types/client/decorators/client.d.ts +3 -1
  86. package/dist/_types/client/decorators/client.d.ts.map +1 -1
  87. package/dist/_types/client/transports/rest.d.ts +3 -3
  88. package/dist/_types/client/transports/rest.d.ts.map +1 -1
  89. package/dist/_types/core/createZeroDevWalletCore.d.ts +8 -1
  90. package/dist/_types/core/createZeroDevWalletCore.d.ts.map +1 -1
  91. package/dist/_types/index.d.ts +2 -2
  92. package/dist/_types/index.d.ts.map +1 -1
  93. package/dist/_types/index.native.d.ts +2 -2
  94. package/dist/_types/index.native.d.ts.map +1 -1
  95. package/dist/_types/native/stampers/secureStore.d.ts.map +1 -1
  96. package/dist/_types/stampers/indexedDbStamper.d.ts.map +1 -1
  97. package/dist/_types/stampers/types.d.ts +6 -0
  98. package/dist/_types/stampers/types.d.ts.map +1 -1
  99. package/dist/_types/storage/manager.d.ts +3 -0
  100. package/dist/_types/storage/manager.d.ts.map +1 -1
  101. package/dist/_types/types/session.d.ts +2 -0
  102. package/dist/_types/types/session.d.ts.map +1 -1
  103. package/dist/_types/utils/buildClientSignature.d.ts +1 -1
  104. package/dist/_types/utils/buildClientSignature.d.ts.map +1 -1
  105. package/dist/_types/utils/derToRawSignature.d.ts.map +1 -1
  106. package/dist/_types/utils/utils.d.ts +1 -1
  107. package/dist/_types/utils/utils.d.ts.map +1 -1
  108. package/dist/tsconfig.build.tsbuildinfo +1 -1
  109. package/package.json +1 -1
  110. package/src/actions/auth/getAuthenticators.ts +20 -2
  111. package/src/actions/auth/index.ts +6 -0
  112. package/src/actions/auth/logout.ts +35 -0
  113. package/src/actions/index.ts +4 -0
  114. package/src/actions/wallet/getUserWallet.ts +3 -1
  115. package/src/actions/wallet/signingUtils.ts +43 -4
  116. package/src/adapters/viem.ts +40 -12
  117. package/src/client/decorators/client.ts +7 -0
  118. package/src/client/transports/rest.ts +4 -4
  119. package/src/core/createZeroDevWalletCore.ts +393 -205
  120. package/src/index.native.ts +4 -0
  121. package/src/index.ts +4 -0
  122. package/src/native/stampers/secureStore.ts +119 -24
  123. package/src/stampers/indexedDbStamper.ts +47 -0
  124. package/src/stampers/types.ts +6 -0
  125. package/src/storage/manager.ts +205 -25
  126. package/src/types/session.ts +2 -0
  127. package/src/utils/buildClientSignature.ts +4 -2
  128. package/src/utils/derToRawSignature.ts +16 -2
  129. package/src/utils/exportPrivateKey.ts +1 -1
  130. package/src/utils/utils.ts +30 -9
@@ -1 +1 @@
1
- {"version":3,"file":"index.native.js","sourceRoot":"","sources":["../../src/index.native.ts"],"names":[],"mappings":";;;AAAA,qDAAmD;AAEnD,IAAI,CAAC,IAAA,2BAAa,GAAE,EAAE,CAAC;IAErB,OAAO,CAAC,IAAI,CACV,+LAA+L,CAChM,CAAA;AACH,CAAC;AAsCD,+CAa2B;AAZzB,iHAAA,qBAAqB,OAAA;AACrB,iHAAA,qBAAqB,OAAA;AACrB,6GAAA,iBAAiB,OAAA;AACjB,yGAAA,aAAa,OAAA;AACb,qGAAA,SAAS,OAAA;AACT,wGAAA,YAAY,OAAA;AACZ,2GAAA,eAAe,OAAA;AACf,iHAAA,qBAAqB,OAAA;AACrB,uGAAA,WAAW,OAAA;AACX,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AACf,6GAAA,iBAAiB,OAAA;AAGnB,8CAAkD;AAAzC,wGAAA,aAAa,OAAA;AAEtB,2DAAoE;AAA3D,iHAAA,oBAAoB,OAAA;AAO7B,8CAK0B;AAJxB,4GAAA,gBAAgB,OAAA;AAChB,wGAAA,YAAY,OAAA;AAEZ,kHAAA,sBAAsB,OAAA;AAExB,+CAA+C;AAAtC,8GAAA,cAAc,OAAA;AASvB,0EAGwC;AAFtC,6HAAA,mBAAmB,OAAA;AAcrB,mEAA8D;AAArD,uHAAA,gBAAgB,OAAA;AACzB,2DAAsD;AAA7C,+GAAA,YAAY,OAAA;AACrB,6CAAqD;AAA5C,8GAAA,kBAAkB,OAAA"}
1
+ {"version":3,"file":"index.native.js","sourceRoot":"","sources":["../../src/index.native.ts"],"names":[],"mappings":";;;AAAA,qDAAmD;AAEnD,IAAI,CAAC,IAAA,2BAAa,GAAE,EAAE,CAAC;IAErB,OAAO,CAAC,IAAI,CACV,+LAA+L,CAChM,CAAA;AACH,CAAC;AAyCD,+CAc2B;AAbzB,iHAAA,qBAAqB,OAAA;AACrB,iHAAA,qBAAqB,OAAA;AACrB,6GAAA,iBAAiB,OAAA;AACjB,yGAAA,aAAa,OAAA;AACb,qGAAA,SAAS,OAAA;AACT,wGAAA,YAAY,OAAA;AACZ,kGAAA,MAAM,OAAA;AACN,2GAAA,eAAe,OAAA;AACf,iHAAA,qBAAqB,OAAA;AACrB,uGAAA,WAAW,OAAA;AACX,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AACf,6GAAA,iBAAiB,OAAA;AAGnB,8CAAkD;AAAzC,wGAAA,aAAa,OAAA;AAEtB,2DAAoE;AAA3D,iHAAA,oBAAoB,OAAA;AAO7B,8CAK0B;AAJxB,4GAAA,gBAAgB,OAAA;AAChB,wGAAA,YAAY,OAAA;AAEZ,kHAAA,sBAAsB,OAAA;AAExB,+CAA+C;AAAtC,8GAAA,cAAc,OAAA;AASvB,0EAGwC;AAFtC,6HAAA,mBAAmB,OAAA;AAcrB,mEAA8D;AAArD,uHAAA,gBAAgB,OAAA;AACzB,2DAAsD;AAA7C,+GAAA,YAAY,OAAA;AACrB,6CAAqD;AAA5C,8GAAA,kBAAkB,OAAA"}
@@ -4,8 +4,27 @@ exports.createSecureStoreStamper = createSecureStoreStamper;
4
4
  const api_key_stamper_1 = require("@turnkey/api-key-stamper");
5
5
  const crypto_1 = require("@turnkey/crypto");
6
6
  const SecureStore = require("expo-secure-store");
7
- const PUBLIC_KEY = 'zerodev.publicKey';
8
- const PRIVATE_KEY = 'zerodev.privateKey';
7
+ const KEY_PAIR = 'zerodev.keyPair';
8
+ const LEGACY_PUBLIC_KEY = 'zerodev.publicKey';
9
+ const LEGACY_PRIVATE_KEY = 'zerodev.privateKey';
10
+ const KEY_PAIR_CHECK = 'ZeroDev Wallet key-pair ownership check';
11
+ function parseKeyPair(value) {
12
+ if (!value)
13
+ return null;
14
+ try {
15
+ const pair = JSON.parse(value);
16
+ if (typeof pair.publicKey !== 'string' ||
17
+ !pair.publicKey ||
18
+ typeof pair.privateKey !== 'string' ||
19
+ !pair.privateKey) {
20
+ return null;
21
+ }
22
+ return pair;
23
+ }
24
+ catch {
25
+ return null;
26
+ }
27
+ }
9
28
  class SecureStoreStamperInner {
10
29
  constructor() {
11
30
  Object.defineProperty(this, "publicKeyHex", {
@@ -16,36 +35,71 @@ class SecureStoreStamperInner {
16
35
  });
17
36
  }
18
37
  async init() {
19
- const publicKey = await SecureStore.getItemAsync(PUBLIC_KEY);
20
- const privateKey = await SecureStore.getItemAsync(PRIVATE_KEY);
21
- if (publicKey && privateKey) {
22
- this.publicKeyHex = publicKey;
38
+ const storedPair = parseKeyPair(await SecureStore.getItemAsync(KEY_PAIR));
39
+ if (storedPair && (await this.isUsable(storedPair))) {
40
+ this.publicKeyHex = storedPair.publicKey;
41
+ return;
23
42
  }
24
- else {
25
- await this.resetKeyPair();
43
+ const publicKey = await SecureStore.getItemAsync(LEGACY_PUBLIC_KEY);
44
+ const privateKey = await SecureStore.getItemAsync(LEGACY_PRIVATE_KEY);
45
+ if (publicKey &&
46
+ privateKey &&
47
+ (await this.isUsable({ publicKey, privateKey }))) {
48
+ await this.persistKeyPair({ publicKey, privateKey });
49
+ await Promise.all([
50
+ SecureStore.deleteItemAsync(LEGACY_PUBLIC_KEY),
51
+ SecureStore.deleteItemAsync(LEGACY_PRIVATE_KEY),
52
+ ]);
53
+ return;
54
+ }
55
+ await this.resetKeyPair();
56
+ }
57
+ async isUsable(pair) {
58
+ try {
59
+ await this.validateKeyPair(pair);
60
+ return true;
61
+ }
62
+ catch {
63
+ return false;
26
64
  }
27
65
  }
28
66
  async getPublicKey() {
29
67
  return this.publicKeyHex;
30
68
  }
31
69
  async resetKeyPair(externalKeyPair) {
32
- await this.clear();
33
70
  const pair = externalKeyPair ?? (0, crypto_1.generateP256KeyPair)();
34
- await SecureStore.setItemAsync(PUBLIC_KEY, pair.publicKey);
35
- await SecureStore.setItemAsync(PRIVATE_KEY, pair.privateKey);
71
+ await this.persistKeyPair(pair);
72
+ }
73
+ async persistKeyPair(pair) {
74
+ await this.validateKeyPair(pair);
75
+ await SecureStore.setItemAsync(KEY_PAIR, JSON.stringify(pair));
36
76
  this.publicKeyHex = pair.publicKey;
37
77
  }
78
+ async validateKeyPair(pair) {
79
+ try {
80
+ const signature = await new api_key_stamper_1.ApiKeyStamper({
81
+ apiPublicKey: pair.publicKey,
82
+ apiPrivateKey: pair.privateKey,
83
+ }).sign(KEY_PAIR_CHECK, api_key_stamper_1.SignatureFormat.Der);
84
+ if (await (0, crypto_1.verifyStampSignature)(pair.publicKey, signature, KEY_PAIR_CHECK)) {
85
+ return;
86
+ }
87
+ }
88
+ catch {
89
+ }
90
+ throw new Error('Stored public and private keys do not match.');
91
+ }
38
92
  async getTurnkeyApiKeyStamper() {
39
93
  if (!this.publicKeyHex) {
40
94
  throw new Error('Key not initialized. Call init() or resetKeyPair() first.');
41
95
  }
42
- const privateKey = await SecureStore.getItemAsync(PRIVATE_KEY);
43
- if (!privateKey) {
44
- throw new Error('No private key found in secure store.');
96
+ const pair = parseKeyPair(await SecureStore.getItemAsync(KEY_PAIR));
97
+ if (!pair || pair.publicKey !== this.publicKeyHex) {
98
+ throw new Error('No matching key pair found in secure store.');
45
99
  }
46
100
  return new api_key_stamper_1.ApiKeyStamper({
47
101
  apiPublicKey: this.publicKeyHex,
48
- apiPrivateKey: privateKey,
102
+ apiPrivateKey: pair.privateKey,
49
103
  });
50
104
  }
51
105
  async stamp(payload) {
@@ -58,8 +112,11 @@ class SecureStoreStamperInner {
58
112
  return stamper.sign(payload, api_key_stamper_1.SignatureFormat.Der);
59
113
  }
60
114
  async clear() {
61
- await SecureStore.deleteItemAsync(PUBLIC_KEY);
62
- await SecureStore.deleteItemAsync(PRIVATE_KEY);
115
+ await Promise.all([
116
+ SecureStore.deleteItemAsync(LEGACY_PUBLIC_KEY),
117
+ SecureStore.deleteItemAsync(LEGACY_PRIVATE_KEY),
118
+ ]);
119
+ await SecureStore.deleteItemAsync(KEY_PAIR);
63
120
  this.publicKeyHex = null;
64
121
  }
65
122
  }
@@ -89,6 +146,7 @@ async function createSecureStoreStamper() {
89
146
  return inner.sign(payload);
90
147
  },
91
148
  async clear() {
149
+ pendingKeyPair = null;
92
150
  await inner.clear();
93
151
  },
94
152
  async resetKeyPair() {
@@ -100,6 +158,22 @@ async function createSecureStoreStamper() {
100
158
  pendingKeyPair = keyPair;
101
159
  return keyPair.publicKey;
102
160
  },
161
+ async stampPending(payload) {
162
+ if (!pendingKeyPair)
163
+ throw new Error('No pending key rotation');
164
+ return new api_key_stamper_1.ApiKeyStamper({
165
+ apiPublicKey: pendingKeyPair.publicKey,
166
+ apiPrivateKey: pendingKeyPair.privateKey,
167
+ }).stamp(payload);
168
+ },
169
+ async signPending(payload) {
170
+ if (!pendingKeyPair)
171
+ throw new Error('No pending key rotation');
172
+ return new api_key_stamper_1.ApiKeyStamper({
173
+ apiPublicKey: pendingKeyPair.publicKey,
174
+ apiPrivateKey: pendingKeyPair.privateKey,
175
+ }).sign(payload, api_key_stamper_1.SignatureFormat.Der);
176
+ },
103
177
  async commitKeyRotation() {
104
178
  if (!pendingKeyPair) {
105
179
  throw new Error('No pending key rotation to commit');
@@ -107,6 +181,9 @@ async function createSecureStoreStamper() {
107
181
  await inner.resetKeyPair(pendingKeyPair);
108
182
  pendingKeyPair = null;
109
183
  },
184
+ async discardKeyRotation() {
185
+ pendingKeyPair = null;
186
+ },
110
187
  };
111
188
  }
112
189
  //# sourceMappingURL=secureStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"secureStore.js","sourceRoot":"","sources":["../../../../src/native/stampers/secureStore.ts"],"names":[],"mappings":";;AAqGA,4DAqCC;AA1ID,8DAAyE;AACzE,4CAAqD;AACrD,iDAAgD;AAGhD,MAAM,UAAU,GAAG,mBAAmB,CAAA;AACtC,MAAM,WAAW,GAAG,oBAAoB,CAAA;AAExC,MAAM,uBAAuB;IAA7B;QACU;;;;mBAA8B,IAAI;WAAA;IAmE5C,CAAC;IAjEC,KAAK,CAAC,IAAI;QACR,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;QAC5D,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;QAE9D,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAA;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,eAGlB;QACC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAElB,MAAM,IAAI,GAAG,eAAe,IAAI,IAAA,4BAAmB,GAAE,CAAA;QAErD,MAAM,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1D,MAAM,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QAE5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAA;IACpC,CAAC;IAEO,KAAK,CAAC,uBAAuB;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAA;QACH,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;QAC9D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;QAC1D,CAAC;QAED,OAAO,IAAI,+BAAa,CAAC;YACvB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,UAAU;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CACT,OAAe;QAEf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAA;QACpD,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC1E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAA;IAC9C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAA;QACpD,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,iCAAe,CAAC,GAAG,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;QAC7C,MAAM,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;QAC9C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;IAC1B,CAAC;CACF;AAED,KAAK,UAAU,4BAA4B,CACzC,KAA8B;IAK9B,IAAI,CAAE,UAAoC,CAAC,OAAO;QAAE,OAAM;IAS1D,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAA;IAC/D,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,wBAAwB;IAC5C,MAAM,KAAK,GAAG,IAAI,uBAAuB,EAAE,CAAA;IAC3C,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;IAClB,MAAM,4BAA4B,CAAC,KAAK,CAAC,CAAA;IAEzC,IAAI,cAAc,GAAqD,IAAI,CAAA;IAE3E,OAAO;QACL,KAAK,CAAC,YAAY;YAChB,OAAO,KAAK,CAAC,YAAY,EAAE,CAAA;QAC7B,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,OAAe;YACzB,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC7B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAe;YACxB,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5B,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;QACD,KAAK,CAAC,YAAY;YAChB,cAAc,GAAG,IAAI,CAAA;YACrB,MAAM,KAAK,CAAC,YAAY,EAAE,CAAA;QAC5B,CAAC;QACD,KAAK,CAAC,kBAAkB;YACtB,MAAM,OAAO,GAAG,IAAA,4BAAmB,GAAE,CAAA;YACrC,cAAc,GAAG,OAAO,CAAA;YACxB,OAAO,OAAO,CAAC,SAAS,CAAA;QAC1B,CAAC;QACD,KAAK,CAAC,iBAAiB;YACrB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;YACtD,CAAC;YACD,MAAM,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;YACxC,cAAc,GAAG,IAAI,CAAA;QACvB,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"secureStore.js","sourceRoot":"","sources":["../../../../src/native/stampers/secureStore.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createIndexedDbStamper = createIndexedDbStamper;
4
+ const nist_js_1 = require("@noble/curves/nist.js");
4
5
  const indexed_db_stamper_1 = require("@turnkey/indexed-db-stamper");
5
6
  const utils_js_1 = require("../utils/utils.js");
7
+ async function signWithKeyPair(keyPair, payload) {
8
+ const rawSignature = new Uint8Array(await crypto.subtle.sign({ name: 'ECDSA', hash: 'SHA-256' }, keyPair.privateKey, new TextEncoder().encode(payload)));
9
+ return nist_js_1.p256.Signature.fromBytes(rawSignature, 'compact').toHex('der');
10
+ }
11
+ function encodeStamp(publicKey, signature) {
12
+ const json = JSON.stringify({
13
+ publicKey,
14
+ scheme: 'SIGNATURE_SCHEME_TK_API_P256',
15
+ signature,
16
+ });
17
+ return btoa(json).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
18
+ }
6
19
  async function createIndexedDbStamper() {
7
20
  const inner = new indexed_db_stamper_1.IndexedDbStamper();
8
21
  await inner.init();
9
22
  let pendingKeyPair = null;
23
+ const requirePending = () => {
24
+ if (!pendingKeyPair)
25
+ throw new Error('No pending key rotation');
26
+ return pendingKeyPair;
27
+ };
10
28
  return {
11
29
  async getPublicKey() {
12
30
  return await inner.getPublicKey();
@@ -18,6 +36,7 @@ async function createIndexedDbStamper() {
18
36
  return await inner.sign(payload);
19
37
  },
20
38
  async clear() {
39
+ pendingKeyPair = null;
21
40
  await inner.clear();
22
41
  },
23
42
  async resetKeyPair() {
@@ -29,6 +48,18 @@ async function createIndexedDbStamper() {
29
48
  pendingKeyPair = keyPair;
30
49
  return await (0, utils_js_1.generateCompressedPublicKeyFromKeyPair)(keyPair);
31
50
  },
51
+ async stampPending(payload) {
52
+ const keyPair = requirePending();
53
+ const publicKey = await (0, utils_js_1.generateCompressedPublicKeyFromKeyPair)(keyPair);
54
+ const signature = await signWithKeyPair(keyPair, payload);
55
+ return {
56
+ stampHeaderName: 'X-Stamp',
57
+ stampHeaderValue: encodeStamp(publicKey, signature),
58
+ };
59
+ },
60
+ async signPending(payload) {
61
+ return signWithKeyPair(requirePending(), payload);
62
+ },
32
63
  async commitKeyRotation() {
33
64
  if (!pendingKeyPair) {
34
65
  throw new Error('No pending key rotation to commit');
@@ -36,6 +67,9 @@ async function createIndexedDbStamper() {
36
67
  await inner.resetKeyPair(pendingKeyPair);
37
68
  pendingKeyPair = null;
38
69
  },
70
+ async discardKeyRotation() {
71
+ pendingKeyPair = null;
72
+ },
39
73
  };
40
74
  }
41
75
  //# sourceMappingURL=indexedDbStamper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexedDbStamper.js","sourceRoot":"","sources":["../../../src/stampers/indexedDbStamper.ts"],"names":[],"mappings":";;AAIA,wDAwCC;AA5CD,oEAAyF;AACzF,gDAA0E;AAGnE,KAAK,UAAU,sBAAsB;IAC1C,MAAM,KAAK,GAAG,IAAI,qCAAuB,EAAE,CAAA;IAC3C,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;IAElB,IAAI,cAAc,GAAyB,IAAI,CAAA;IAE/C,OAAO;QACL,KAAK,CAAC,YAAY;YAChB,OAAO,MAAM,KAAK,CAAC,YAAY,EAAE,CAAA;QACnC,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,OAAe;YACzB,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACnC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAe;YACxB,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAClC,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;QACD,KAAK,CAAC,YAAY;YAChB,cAAc,GAAG,IAAI,CAAA;YACrB,MAAM,KAAK,CAAC,YAAY,EAAE,CAAA;QAC5B,CAAC;QACD,KAAK,CAAC,kBAAkB;YACtB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAC7C,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EACtC,KAAK,EACL,CAAC,MAAM,EAAE,QAAQ,CAAC,CACnB,CAAA;YACD,cAAc,GAAG,OAAO,CAAA;YACxB,OAAO,MAAM,IAAA,iDAAsC,EAAC,OAAO,CAAC,CAAA;QAC9D,CAAC;QACD,KAAK,CAAC,iBAAiB;YACrB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;YACtD,CAAC;YACD,MAAM,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;YACxC,cAAc,GAAG,IAAI,CAAA;QACvB,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"indexedDbStamper.js","sourceRoot":"","sources":["../../../src/stampers/indexedDbStamper.ts"],"names":[],"mappings":"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"}
@@ -2,19 +2,78 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createStorageManager = createStorageManager;
4
4
  const utils_js_1 = require("../utils/utils.js");
5
+ let mutationTail = Promise.resolve();
6
+ function isStoredSession(value) {
7
+ if (!value || typeof value !== 'object')
8
+ return false;
9
+ const session = value;
10
+ return (typeof session.id === 'string' &&
11
+ typeof session.userId === 'string' &&
12
+ typeof session.organizationId === 'string' &&
13
+ (session.stamperType === 'apiKey' || session.stamperType === 'passkey') &&
14
+ typeof session.token === 'string' &&
15
+ session.token.length > 0 &&
16
+ typeof session.expiry === 'number' &&
17
+ Number.isFinite(session.expiry) &&
18
+ session.expiry > 0 &&
19
+ typeof session.createdAt === 'number' &&
20
+ Number.isFinite(session.createdAt));
21
+ }
5
22
  function createStorageManager(adapter) {
6
23
  const ACTIVE_SESSION_KEY = '@zerodev/active_session';
7
24
  const ALL_SESSIONS_KEY = '@zerodev/sessions';
8
- const storeSession = async (sessionData, sessionKey) => {
9
- await adapter.setItem(sessionKey, JSON.stringify(sessionData));
10
- const sessionsStr = await adapter.getItem(ALL_SESSIONS_KEY);
11
- const sessions = JSON.parse(sessionsStr || '[]');
12
- if (!sessions.includes(sessionKey)) {
13
- sessions.push(sessionKey);
25
+ const SESSION_TRANSITION_KEY = '@zerodev/session_transition';
26
+ const withMutation = async (mutation) => {
27
+ const result = mutationTail.then(mutation);
28
+ mutationTail = result.then(() => undefined, () => undefined);
29
+ return result;
30
+ };
31
+ const parseSessionKeys = (value) => {
32
+ if (!value)
33
+ return [];
34
+ try {
35
+ const parsed = JSON.parse(value);
36
+ if (!Array.isArray(parsed) ||
37
+ !parsed.every((key) => typeof key === 'string')) {
38
+ return undefined;
39
+ }
40
+ return parsed;
41
+ }
42
+ catch {
43
+ return undefined;
44
+ }
45
+ };
46
+ const restoreItem = async (key, value) => {
47
+ if (value === null)
48
+ await adapter.removeItem(key);
49
+ else
50
+ await adapter.setItem(key, value);
51
+ };
52
+ const storeSessionUnlocked = async (sessionData, sessionKey) => {
53
+ const recordKey = sessionKey;
54
+ const [previousRecord, previousIndex, previousActive] = await Promise.all([
55
+ adapter.getItem(recordKey),
56
+ adapter.getItem(ALL_SESSIONS_KEY),
57
+ adapter.getItem(ACTIVE_SESSION_KEY),
58
+ ]);
59
+ try {
60
+ await adapter.setItem(recordKey, JSON.stringify(sessionData));
61
+ const sessions = parseSessionKeys(previousIndex) ?? [];
62
+ if (!sessions.includes(sessionKey))
63
+ sessions.push(sessionKey);
14
64
  await adapter.setItem(ALL_SESSIONS_KEY, JSON.stringify(sessions));
65
+ await adapter.setItem(ACTIVE_SESSION_KEY, sessionKey);
66
+ }
67
+ catch (error) {
68
+ await Promise.allSettled([
69
+ restoreItem(recordKey, previousRecord),
70
+ restoreItem(ALL_SESSIONS_KEY, previousIndex),
71
+ restoreItem(ACTIVE_SESSION_KEY, previousActive),
72
+ ]);
73
+ throw error;
15
74
  }
16
- await adapter.setItem(ACTIVE_SESSION_KEY, sessionKey);
17
75
  };
76
+ const storeSession = async (sessionData, sessionKey) => withMutation(() => storeSessionUnlocked(sessionData, sessionKey));
18
77
  const getActiveSession = async () => {
19
78
  const activeKey = await adapter.getItem(ACTIVE_SESSION_KEY);
20
79
  if (!activeKey)
@@ -31,7 +90,11 @@ function createStorageManager(adapter) {
31
90
  return undefined;
32
91
  try {
33
92
  const session = JSON.parse(sessionStr);
34
- if (session.expiry && (0, utils_js_1.normalizeTimestamp)(session.expiry) < Date.now()) {
93
+ if (!isStoredSession(session)) {
94
+ await clearSession(sessionKey);
95
+ return undefined;
96
+ }
97
+ if ((0, utils_js_1.normalizeTimestamp)(session.expiry) < Date.now()) {
35
98
  await clearSession(sessionKey);
36
99
  return undefined;
37
100
  }
@@ -42,21 +105,26 @@ function createStorageManager(adapter) {
42
105
  return undefined;
43
106
  }
44
107
  };
45
- const listSessionKeys = async () => {
108
+ const listSessionKeysUnlocked = async () => {
46
109
  const sessionsStr = await adapter.getItem(ALL_SESSIONS_KEY);
47
- const sessionKeys = JSON.parse(sessionsStr || '[]');
110
+ const parsedKeys = parseSessionKeys(sessionsStr);
111
+ if (!parsedKeys) {
112
+ await adapter.removeItem(ALL_SESSIONS_KEY);
113
+ return [];
114
+ }
48
115
  const validKeys = [];
49
- for (const key of sessionKeys) {
116
+ for (const key of parsedKeys) {
50
117
  const exists = await adapter.getItem(key);
51
118
  if (exists) {
52
119
  validKeys.push(key);
53
120
  }
54
121
  }
55
- if (validKeys.length !== sessionKeys.length) {
122
+ if (validKeys.length !== parsedKeys.length) {
56
123
  await adapter.setItem(ALL_SESSIONS_KEY, JSON.stringify(validKeys));
57
124
  }
58
125
  return validKeys;
59
126
  };
127
+ const listSessionKeys = async () => withMutation(listSessionKeysUnlocked);
60
128
  const listSessions = async () => {
61
129
  const sessionKeys = await listSessionKeys();
62
130
  const sessions = [];
@@ -73,11 +141,13 @@ function createStorageManager(adapter) {
73
141
  if (!session) {
74
142
  throw new Error(`Session not found: ${sessionKey}`);
75
143
  }
76
- await adapter.setItem(ACTIVE_SESSION_KEY, sessionKey);
144
+ await withMutation(async () => {
145
+ await adapter.setItem(ACTIVE_SESSION_KEY, sessionKey);
146
+ });
77
147
  };
78
- const clearSession = async (sessionKey) => {
148
+ const clearSessionUnlocked = async (sessionKey) => {
79
149
  await adapter.removeItem(sessionKey);
80
- const sessions = await listSessionKeys();
150
+ const sessions = await listSessionKeysUnlocked();
81
151
  const updated = sessions.filter((k) => k !== sessionKey);
82
152
  await adapter.setItem(ALL_SESSIONS_KEY, JSON.stringify(updated));
83
153
  const activeKey = await adapter.getItem(ACTIVE_SESSION_KEY);
@@ -85,13 +155,67 @@ function createStorageManager(adapter) {
85
155
  await adapter.removeItem(ACTIVE_SESSION_KEY);
86
156
  }
87
157
  };
88
- const clearAllSessions = async () => {
89
- const sessions = await listSessionKeys();
158
+ const clearSession = async (sessionKey) => withMutation(() => clearSessionUnlocked(sessionKey));
159
+ const clearAllSessions = async () => withMutation(async () => {
160
+ await clearAllSessionsUnlocked();
161
+ await adapter.removeItem(SESSION_TRANSITION_KEY);
162
+ });
163
+ async function clearAllSessionsUnlocked() {
164
+ const sessions = await listSessionKeysUnlocked();
90
165
  for (const key of sessions) {
91
166
  await adapter.removeItem(key);
92
167
  }
93
168
  await adapter.removeItem(ALL_SESSIONS_KEY);
94
169
  await adapter.removeItem(ACTIVE_SESSION_KEY);
170
+ }
171
+ const parseTransition = (value) => {
172
+ if (!value)
173
+ return null;
174
+ try {
175
+ const parsed = JSON.parse(value);
176
+ if (!isStoredSession(parsed.sessionData) ||
177
+ typeof parsed.publicKey !== 'string' ||
178
+ !parsed.publicKey) {
179
+ return null;
180
+ }
181
+ return parsed;
182
+ }
183
+ catch {
184
+ return null;
185
+ }
186
+ };
187
+ const stageSessionTransition = async (sessionData, publicKey) => withMutation(async () => {
188
+ await adapter.setItem(SESSION_TRANSITION_KEY, JSON.stringify({ sessionData, publicKey }));
189
+ });
190
+ const commitSessionTransition = async () => withMutation(async () => {
191
+ const transition = parseTransition(await adapter.getItem(SESSION_TRANSITION_KEY));
192
+ if (!transition) {
193
+ await adapter.removeItem(SESSION_TRANSITION_KEY);
194
+ return undefined;
195
+ }
196
+ await clearAllSessionsUnlocked();
197
+ await storeSessionUnlocked(transition.sessionData, transition.sessionData.id);
198
+ await adapter.removeItem(SESSION_TRANSITION_KEY);
199
+ return transition.sessionData;
200
+ });
201
+ const normalizeKey = (key) => key.replace(/^0x/, '').toLowerCase();
202
+ const recoverSessionTransition = async (activePublicKey) => {
203
+ const transition = parseTransition(await adapter.getItem(SESSION_TRANSITION_KEY));
204
+ if (!transition) {
205
+ if (await adapter.getItem(SESSION_TRANSITION_KEY)) {
206
+ await adapter.removeItem(SESSION_TRANSITION_KEY);
207
+ }
208
+ return undefined;
209
+ }
210
+ if (!activePublicKey) {
211
+ await adapter.removeItem(SESSION_TRANSITION_KEY);
212
+ return undefined;
213
+ }
214
+ if (normalizeKey(activePublicKey) !== normalizeKey(transition.publicKey)) {
215
+ await adapter.removeItem(SESSION_TRANSITION_KEY);
216
+ return undefined;
217
+ }
218
+ return commitSessionTransition();
95
219
  };
96
220
  return {
97
221
  storeSession,
@@ -103,6 +227,9 @@ function createStorageManager(adapter) {
103
227
  setActiveSession,
104
228
  clearSession,
105
229
  clearAllSessions,
230
+ stageSessionTransition,
231
+ commitSessionTransition,
232
+ recoverSessionTransition,
106
233
  };
107
234
  }
108
235
  //# sourceMappingURL=manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/storage/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/storage/manager.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,10 @@ function extractTokenIdFromJwt(jwt) {
22
22
  if (parts.length !== 3) {
23
23
  throw new Error('Invalid JWT format');
24
24
  }
25
- const payload = JSON.parse(base64UrlDecode(parts[1]));
25
+ const encodedPayload = parts[1];
26
+ if (!encodedPayload)
27
+ throw new Error('Invalid JWT format');
28
+ const payload = JSON.parse(base64UrlDecode(encodedPayload));
26
29
  if (!payload.id) {
27
30
  throw new Error('JWT payload missing id field');
28
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"buildClientSignature.js","sourceRoot":"","sources":["../../../src/utils/buildClientSignature.ts"],"names":[],"mappings":";;AA0BA,oDA6BC;AAtDD,iEAA0D;AAyBnD,KAAK,UAAU,oBAAoB,CACxC,MAAkC;IAElC,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAGxD,MAAM,OAAO,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,CAAA;IAGxD,MAAM,gBAAgB,GAAG;QACvB,KAAK,EAAE,EAAE,SAAS,EAAE;QACpB,OAAO;QACP,IAAI,EAAE,kBAAkB;KACzB,CAAA;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;IAGhD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAI1C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAA;IACrE,MAAM,eAAe,GAAW,SAAS,CAAC,SAAS,CAAA;IAGnD,MAAM,YAAY,GAAG,IAAA,wCAAiB,EAAC,eAAe,CAAC,CAAA;IAGvD,OAAO,YAAY,CAAA;AACrB,CAAC;AAKD,SAAS,qBAAqB,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAA;IACtD,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,OAAO,CAAC,EAAE,CAAA;AACnB,CAAC;AAKD,SAAS,eAAe,CAAC,GAAW;IAElC,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;IACjC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAA;AACrB,CAAC"}
1
+ {"version":3,"file":"buildClientSignature.js","sourceRoot":"","sources":["../../../src/utils/buildClientSignature.ts"],"names":[],"mappings":";;AA0BA,oDA6BC;AAtDD,iEAA0D;AAyBnD,KAAK,UAAU,oBAAoB,CACxC,MAAkC;IAElC,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAGxD,MAAM,OAAO,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,CAAA;IAGxD,MAAM,gBAAgB,GAAG;QACvB,KAAK,EAAE,EAAE,SAAS,EAAE;QACpB,OAAO;QACP,IAAI,EAAE,kBAAkB;KACzB,CAAA;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;IAGhD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAI1C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAA;IACrE,MAAM,eAAe,GAAW,SAAS,CAAC,SAAS,CAAA;IAGnD,MAAM,YAAY,GAAG,IAAA,wCAAiB,EAAC,eAAe,CAAC,CAAA;IAGvD,OAAO,YAAY,CAAA;AACrB,CAAC;AAKD,SAAS,qBAAqB,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/B,IAAI,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAA;IAC3D,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,OAAO,CAAC,EAAE,CAAA;AACnB,CAAC;AAKD,SAAS,eAAe,CAAC,GAAW;IAElC,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;IACjC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAA;AACrB,CAAC"}
@@ -12,7 +12,13 @@ function derToRawSignature(derHex) {
12
12
  }
13
13
  offset++;
14
14
  const rLength = der[offset];
15
+ if (rLength === undefined) {
16
+ throw new Error('Invalid DER signature: missing r length');
17
+ }
15
18
  offset++;
19
+ if (offset + rLength > der.length) {
20
+ throw new Error('Invalid DER signature: truncated r value');
21
+ }
16
22
  const rBytes = der.slice(offset, offset + rLength);
17
23
  offset += rLength;
18
24
  if (der[offset] !== 0x02) {
@@ -20,7 +26,13 @@ function derToRawSignature(derHex) {
20
26
  }
21
27
  offset++;
22
28
  const sLength = der[offset];
29
+ if (sLength === undefined) {
30
+ throw new Error('Invalid DER signature: missing s length');
31
+ }
23
32
  offset++;
33
+ if (offset + sLength > der.length) {
34
+ throw new Error('Invalid DER signature: truncated s value');
35
+ }
24
36
  const sBytes = der.slice(offset, offset + sLength);
25
37
  const r = padTo32Bytes(stripLeadingZeros(rBytes));
26
38
  const s = padTo32Bytes(stripLeadingZeros(sBytes));
@@ -1 +1 @@
1
- {"version":3,"file":"derToRawSignature.js","sourceRoot":"","sources":["../../../src/utils/derToRawSignature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"derToRawSignature.js","sourceRoot":"","sources":["../../../src/utils/derToRawSignature.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,6 @@ async function exportPrivateKey(params) {
50
50
  if (!exportBundle) {
51
51
  throw new Error(`Export bundle not found in response: ${JSON.stringify(exportData)}`);
52
52
  }
53
- return { exportBundle, address: address, organizationId };
53
+ return { exportBundle, address, organizationId };
54
54
  }
55
55
  //# sourceMappingURL=exportPrivateKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exportPrivateKey.js","sourceRoot":"","sources":["../../../src/utils/exportPrivateKey.ts"],"names":[],"mappings":";;AA0CA,4CAuEC;AAvEM,KAAK,UAAU,gBAAgB,CACpC,MAAkC;IAElC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAAA;IAEjE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACtC,CAAC;IACD,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IAGlC,IAAI,OAAO,GAAG,YAAY,CAAA;IAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;QACxC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC9D,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC3B,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,EAAE,qCAAqC;QAC3C,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QAClC,cAAc,EAAE,cAAc;QAC9B,UAAU,EAAE;YACV,OAAO,EAAE,OAAO;YAChB,eAAe;SAChB;KACF,CAAC,CAAA;IAEF,MAAM,UAAU,GACd,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAA;IACvE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,8BAA8B,CAAC,CAAA;IACvE,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACnD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,gEAAgE,EAChE;QACE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE;YACP,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,gBAAgB;SAC5D;KACF,CACF,CAAA;IACD,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAA;QAC7C,MAAM,IAAI,KAAK,CACb,oCAAoC,cAAc,CAAC,MAAM,IAAI,SAAS,EAAE,CACzE,CAAA;IACH,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAA;IAE9C,MAAM,YAAY,GAChB,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAyB,EAAE,YAAY,CAAA;IAEvE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,wCAAwC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CACrE,CAAA;IACH,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,OAAQ,EAAE,cAAc,EAAE,CAAA;AAC5D,CAAC"}
1
+ {"version":3,"file":"exportPrivateKey.js","sourceRoot":"","sources":["../../../src/utils/exportPrivateKey.ts"],"names":[],"mappings":";;AA0CA,4CAuEC;AAvEM,KAAK,UAAU,gBAAgB,CACpC,MAAkC;IAElC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAAA;IAEjE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACtC,CAAC;IACD,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IAGlC,IAAI,OAAO,GAAG,YAAY,CAAA;IAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;QACxC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC9D,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC3B,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,EAAE,qCAAqC;QAC3C,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QAClC,cAAc,EAAE,cAAc;QAC9B,UAAU,EAAE;YACV,OAAO,EAAE,OAAO;YAChB,eAAe;SAChB;KACF,CAAC,CAAA;IAEF,MAAM,UAAU,GACd,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAA;IACvE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,8BAA8B,CAAC,CAAA;IACvE,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACnD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,gEAAgE,EAChE;QACE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE;YACP,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,gBAAgB;SAC5D;KACF,CACF,CAAA;IACD,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAA;QAC7C,MAAM,IAAI,KAAK,CACb,oCAAoC,cAAc,CAAC,MAAM,IAAI,SAAS,EAAE,CACzE,CAAA;IACH,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAA;IAE9C,MAAM,YAAY,GAChB,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAyB,EAAE,YAAY,CAAA;IAEvE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,wCAAwC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CACrE,CAAA;IACH,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,CAAA;AAClD,CAAC"}