@waku/rln 0.1.6-27c1236.0 → 0.1.6-34d4730.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 (45) hide show
  1. package/bundle/_virtual/utils.js +2 -2
  2. package/bundle/_virtual/utils2.js +2 -2
  3. package/bundle/index.js +1 -1
  4. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/_sha2.js +1 -1
  5. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/hmac.js +1 -1
  6. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/pbkdf2.js +1 -1
  7. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/scrypt.js +1 -1
  8. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/sha256.js +1 -1
  9. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/sha512.js +1 -1
  10. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/utils.js +1 -1
  11. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/random.js +1 -1
  12. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/utils.js +2 -2
  13. package/bundle/packages/rln/dist/contract/constants.js +1 -7
  14. package/bundle/packages/rln/dist/contract/rln_base_contract.js +3 -10
  15. package/bundle/packages/rln/dist/credentials_manager.js +8 -13
  16. package/bundle/packages/rln/dist/identity.js +2 -2
  17. package/bundle/packages/rln/dist/keystore/keystore.js +11 -19
  18. package/bundle/packages/rln/dist/utils/bytes.js +9 -3
  19. package/dist/.tsbuildinfo +1 -1
  20. package/dist/contract/constants.d.ts +0 -6
  21. package/dist/contract/constants.js +0 -6
  22. package/dist/contract/constants.js.map +1 -1
  23. package/dist/contract/rln_base_contract.d.ts +0 -5
  24. package/dist/contract/rln_base_contract.js +3 -10
  25. package/dist/contract/rln_base_contract.js.map +1 -1
  26. package/dist/credentials_manager.js +8 -13
  27. package/dist/credentials_manager.js.map +1 -1
  28. package/dist/identity.js +2 -2
  29. package/dist/identity.js.map +1 -1
  30. package/dist/keystore/keystore.js +11 -19
  31. package/dist/keystore/keystore.js.map +1 -1
  32. package/dist/utils/bytes.d.ts +6 -1
  33. package/dist/utils/bytes.js +8 -2
  34. package/dist/utils/bytes.js.map +1 -1
  35. package/dist/utils/index.d.ts +1 -1
  36. package/dist/utils/index.js +1 -1
  37. package/dist/utils/index.js.map +1 -1
  38. package/package.json +1 -1
  39. package/src/contract/constants.ts +0 -9
  40. package/src/contract/rln_base_contract.ts +3 -17
  41. package/src/credentials_manager.ts +8 -21
  42. package/src/identity.ts +2 -2
  43. package/src/keystore/keystore.ts +18 -33
  44. package/src/utils/bytes.ts +11 -5
  45. package/src/utils/index.ts +1 -1
@@ -14,7 +14,7 @@ import {
14
14
  import _ from "lodash";
15
15
  import { v4 as uuidV4 } from "uuid";
16
16
 
17
- import { buildBigIntFromUint8ArrayLE } from "../utils/bytes.js";
17
+ import { buildBigIntFromUint8Array } from "../utils/bytes.js";
18
18
 
19
19
  import { decryptEipKeystore, keccak256Checksum } from "./cipher.js";
20
20
  import { isCredentialValid, isKeystoreValid } from "./schema_validator.js";
@@ -246,37 +246,29 @@ export class Keystore {
246
246
  private static fromBytesToIdentity(
247
247
  bytes: Uint8Array
248
248
  ): undefined | KeystoreEntity {
249
- function fromLittleEndian(bytes: Uint8Array): Uint8Array {
250
- return new Uint8Array(bytes).reverse();
251
- }
252
249
  try {
253
250
  const str = bytesToUtf8(bytes);
254
251
  const obj = JSON.parse(str);
255
252
 
256
- // Use little-endian bytes directly for BigInt conversion (matches storage and contract expectation)
257
- const idCommitmentLE = Keystore.fromArraylikeToBytes(
258
- _.get(obj, "identityCredential.idCommitment", [])
259
- );
260
-
253
+ // TODO: add runtime validation of nwaku credentials
261
254
  return {
262
255
  identity: {
263
- IDCommitment: fromLittleEndian(idCommitmentLE),
264
- IDTrapdoor: fromLittleEndian(
265
- Keystore.fromArraylikeToBytes(
266
- _.get(obj, "identityCredential.idTrapdoor", [])
267
- )
256
+ IDCommitment: Keystore.fromArraylikeToBytes(
257
+ _.get(obj, "identityCredential.idCommitment", [])
268
258
  ),
269
- IDNullifier: fromLittleEndian(
270
- Keystore.fromArraylikeToBytes(
271
- _.get(obj, "identityCredential.idNullifier", [])
272
- )
259
+ IDTrapdoor: Keystore.fromArraylikeToBytes(
260
+ _.get(obj, "identityCredential.idTrapdoor", [])
273
261
  ),
274
- // Do NOT reverse for BigInt conversion; use little-endian as stored
275
- IDCommitmentBigInt: buildBigIntFromUint8ArrayLE(idCommitmentLE),
276
- IDSecretHash: fromLittleEndian(
262
+ IDNullifier: Keystore.fromArraylikeToBytes(
263
+ _.get(obj, "identityCredential.idNullifier", [])
264
+ ),
265
+ IDCommitmentBigInt: buildBigIntFromUint8Array(
277
266
  Keystore.fromArraylikeToBytes(
278
- _.get(obj, "identityCredential.idSecretHash", [])
267
+ _.get(obj, "identityCredential.idCommitment", [])
279
268
  )
269
+ ),
270
+ IDSecretHash: Keystore.fromArraylikeToBytes(
271
+ _.get(obj, "identityCredential.idSecretHash", [])
280
272
  )
281
273
  },
282
274
  membership: {
@@ -329,21 +321,14 @@ export class Keystore {
329
321
  // follows nwaku implementation
330
322
  // https://github.com/waku-org/nwaku/blob/f05528d4be3d3c876a8b07f9bb7dfaae8aa8ec6e/waku/waku_keystore/protocol_types.nim#L98
331
323
  private static fromIdentityToBytes(options: KeystoreEntity): Uint8Array {
332
- function toLittleEndian(bytes: Uint8Array): Uint8Array {
333
- return new Uint8Array(bytes).reverse();
334
- }
335
324
  return utf8ToBytes(
336
325
  JSON.stringify({
337
326
  treeIndex: options.membership.treeIndex,
338
327
  identityCredential: {
339
- idCommitment: Array.from(
340
- toLittleEndian(options.identity.IDCommitment)
341
- ),
342
- idNullifier: Array.from(toLittleEndian(options.identity.IDNullifier)),
343
- idSecretHash: Array.from(
344
- toLittleEndian(options.identity.IDSecretHash)
345
- ),
346
- idTrapdoor: Array.from(toLittleEndian(options.identity.IDTrapdoor))
328
+ idCommitment: Array.from(options.identity.IDCommitment),
329
+ idNullifier: Array.from(options.identity.IDNullifier),
330
+ idSecretHash: Array.from(options.identity.IDSecretHash),
331
+ idTrapdoor: Array.from(options.identity.IDTrapdoor)
347
332
  },
348
333
  membershipContract: {
349
334
  chainId: options.membership.chainId,
@@ -56,11 +56,17 @@ export function writeUIntLE(
56
56
  return buf;
57
57
  }
58
58
 
59
- export function buildBigIntFromUint8ArrayLE(bytes: Uint8Array): bigint {
60
- return bytes.reduce(
61
- (acc, byte, i) => acc + BigInt(byte) * (1n << (8n * BigInt(i))),
62
- 0n
63
- );
59
+ /**
60
+ * Transforms Uint8Array into BigInt
61
+ * @param array: Uint8Array
62
+ * @returns BigInt
63
+ */
64
+ export function buildBigIntFromUint8Array(
65
+ array: Uint8Array,
66
+ byteOffset: number = 0
67
+ ): bigint {
68
+ const dataView = new DataView(array.buffer);
69
+ return dataView.getBigUint64(byteOffset, true);
64
70
  }
65
71
 
66
72
  /**
@@ -2,7 +2,7 @@ export { extractMetaMaskSigner } from "./metamask.js";
2
2
  export {
3
3
  concatenate,
4
4
  writeUIntLE,
5
- buildBigIntFromUint8ArrayLE,
5
+ buildBigIntFromUint8Array,
6
6
  zeroPadLE
7
7
  } from "./bytes.js";
8
8
  export { sha256, poseidonHash } from "./hash.js";