@volr/sdk-core 0.1.111 → 0.1.112

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.
package/dist/index.cjs CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  var hkdf = require('@noble/hashes/hkdf');
4
4
  var sha256 = require('@noble/hashes/sha256');
5
+ var bip39 = require('@scure/bip39');
6
+ var english = require('@scure/bip39/wordlists/english');
5
7
  var bip32 = require('@scure/bip32');
6
8
  var secp256k1 = require('@noble/curves/secp256k1');
7
9
  var sha3 = require('@noble/hashes/sha3');
@@ -199,32 +201,56 @@ async function unsealMasterSeed(cipher, wrapKey, aad, nonce) {
199
201
  const decrypted = await aesGcmDecrypt(cipher, { key: wrapKey, aad, nonce });
200
202
  return decrypted;
201
203
  }
204
+ function generateEntropy() {
205
+ return getRandomBytes(32);
206
+ }
207
+ function validateEntropy(entropy) {
208
+ return entropy instanceof Uint8Array && entropy.length === 32;
209
+ }
210
+ function entropyToMnemonicString(entropy) {
211
+ return bip39.entropyToMnemonic(entropy, english.wordlist);
212
+ }
213
+ function mnemonicStringToEntropy(mnemonic) {
214
+ if (!bip39.validateMnemonic(mnemonic, english.wordlist)) {
215
+ throw new Error("Invalid mnemonic phrase");
216
+ }
217
+ return bip39.mnemonicToEntropy(mnemonic, english.wordlist);
218
+ }
219
+ async function entropyToSeed(entropy) {
220
+ const mnemonic = bip39.entropyToMnemonic(entropy, english.wordlist);
221
+ const seed = await bip39.mnemonicToSeed(mnemonic);
222
+ return seed.slice(0, 32);
223
+ }
202
224
 
203
225
  // src/master-key/provider.ts
226
+ async function createHandle(entropy) {
227
+ const seed = await entropyToSeed(entropy);
228
+ return {
229
+ entropy,
230
+ seed,
231
+ getMnemonic() {
232
+ return entropyToMnemonicString(entropy);
233
+ },
234
+ destroy() {
235
+ zeroize(entropy);
236
+ zeroize(seed);
237
+ }
238
+ };
239
+ }
204
240
  function createMasterKeyProvider() {
205
241
  return {
206
242
  async unsealFromBlob(blob, wrapKey) {
207
- const masterSeed = await unsealMasterSeed(
243
+ const entropy = await unsealMasterSeed(
208
244
  blob.cipher,
209
245
  wrapKey,
210
246
  blob.aad,
211
247
  blob.nonce
212
248
  );
213
- return {
214
- bytes: masterSeed,
215
- destroy() {
216
- zeroize(masterSeed);
217
- }
218
- };
249
+ return createHandle(entropy);
219
250
  },
220
251
  async generate() {
221
- const masterSeed = getRandomBytes(32);
222
- return {
223
- bytes: masterSeed,
224
- destroy() {
225
- zeroize(masterSeed);
226
- }
227
- };
252
+ const entropy = generateEntropy();
253
+ return createHandle(entropy);
228
254
  }
229
255
  };
230
256
  }
@@ -1329,12 +1355,16 @@ exports.createMpcProvider = createMpcProvider;
1329
1355
  exports.createPasskeyProvider = createPasskeyProvider;
1330
1356
  exports.deriveEvmKey = deriveEvmKey;
1331
1357
  exports.deriveWrapKey = deriveWrapKey;
1358
+ exports.entropyToMnemonicString = entropyToMnemonicString;
1359
+ exports.entropyToSeed = entropyToSeed;
1332
1360
  exports.evmSign = evmSign;
1333
1361
  exports.evmVerify = evmVerify;
1362
+ exports.generateEntropy = generateEntropy;
1334
1363
  exports.generateNonce = generateNonce;
1335
1364
  exports.getAuthNonce = getAuthNonce;
1336
1365
  exports.getRandomBytes = getRandomBytes;
1337
1366
  exports.hkdfSha256 = hkdfSha256;
1367
+ exports.mnemonicStringToEntropy = mnemonicStringToEntropy;
1338
1368
  exports.normalizeWalletError = normalizeWalletError;
1339
1369
  exports.sealMasterSeed = sealMasterSeed;
1340
1370
  exports.selectSigner = selectSigner;
@@ -1345,6 +1375,7 @@ exports.toChecksumAddress = toChecksumAddress;
1345
1375
  exports.unsealMasterSeed = unsealMasterSeed;
1346
1376
  exports.uploadBlob = uploadBlob;
1347
1377
  exports.uploadBlobViaPresign = uploadBlobViaPresign;
1378
+ exports.validateEntropy = validateEntropy;
1348
1379
  exports.zeroize = zeroize;
1349
1380
  //# sourceMappingURL=index.cjs.map
1350
1381
  //# sourceMappingURL=index.cjs.map