@lemmaoracle/seal 0.3.7 → 0.3.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"bits.d.ts","sourceRoot":"","sources":["../src/bits.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,yEAAyE;AACzE,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,qDAAqD;AACrD,eAAO,MAAM,gBAAgB,QAAwB,CAAC;AAStD;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,aAAa,CAAC,GAAG,CAS9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,KACnC,MAKO,CAAC"}
1
+ {"version":3,"file":"bits.d.ts","sourceRoot":"","sources":["../src/bits.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,yEAAyE;AACzE,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,qDAAqD;AACrD,eAAO,MAAM,gBAAgB,QAAwB,CAAC;AAiBtD;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,aAAa,CAAC,GAAG,CAO9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,KACnC,MAGsE,CAAC"}
package/dist/bits.js CHANGED
@@ -11,6 +11,13 @@ export const SEAL_SECRET_BITS = SEAL_SECRET_BYTES * 8;
11
11
  * order circomlib's SHA-256 gadget expects.
12
12
  */
13
13
  const byteToBits = (byte) => Array.from({ length: 8 }, (_, i) => ((byte >> (7 - i)) & 1));
14
+ /** Raise a validation error at the API boundary. */
15
+ // imperative: pre-condition validation — no functional alternative for call-site abort
16
+ /* eslint-disable functional/no-throw-statements */
17
+ const raise = (message) => {
18
+ throw new Error(message);
19
+ };
20
+ /* eslint-enable functional/no-throw-statements */
14
21
  /**
15
22
  * Convert a raw secret string into the `keyBits` witness signal — the
16
23
  * UTF-8 bytes of the secret, MSB-first per byte.
@@ -22,9 +29,7 @@ export const secretToBits = (secret) => {
22
29
  const bytes = new TextEncoder().encode(secret);
23
30
  return bytes.length === SEAL_SECRET_BYTES
24
31
  ? [...bytes].flatMap(byteToBits)
25
- : (() => {
26
- throw new Error(`seal: secret must be ${SEAL_SECRET_BYTES} bytes, got ${bytes.length}`);
27
- })();
32
+ : raise(`seal: secret must be ${String(SEAL_SECRET_BYTES)} bytes, got ${String(bytes.length)}`);
28
33
  };
29
34
  /**
30
35
  * Reassemble the circuit's 256-bit `keyHash` public output into the
@@ -32,7 +37,5 @@ export const secretToBits = (secret) => {
32
37
  */
33
38
  export const hashBitsToHex = (bits) => bits.length === 256
34
39
  ? BigInt(`0b${bits.map(String).join("")}`).toString(16).padStart(64, "0")
35
- : (() => {
36
- throw new Error(`seal: keyHash must be 256 bits, got ${bits.length}`);
37
- })();
40
+ : raise(`seal: keyHash must be 256 bits, got ${String(bits.length)}`);
38
41
  //# sourceMappingURL=bits.js.map
package/dist/bits.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bits.js","sourceRoot":"","sources":["../src/bits.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,yEAAyE;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC,qDAAqD;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,CAAC,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,IAAY,EAAsB,EAAE,CACtD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAO,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAQ,CAAC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAc,EAAsB,EAAE;IACjE,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,MAAM,KAAK,iBAAiB;QACvC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAChC,CAAC,CAAC,CAAC,GAAG,EAAE;YACJ,MAAM,IAAI,KAAK,CACb,wBAAwB,iBAAiB,eAAe,KAAK,CAAC,MAAM,EAAE,CACvE,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;AACX,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAoC,EAC5B,EAAE,CACV,IAAI,CAAC,MAAM,KAAK,GAAG;IACjB,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;IACzE,CAAC,CAAC,CAAC,GAAG,EAAE;QACJ,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"bits.js","sourceRoot":"","sources":["../src/bits.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,yEAAyE;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC,qDAAqD;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,CAAC,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,IAAY,EAAsB,EAAE,CACtD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAO,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAQ,CAAC,CAAC;AAE3E,oDAAoD;AACpD,uFAAuF;AACvF,mDAAmD;AACnD,MAAM,KAAK,GAAG,CAAC,OAAe,EAAS,EAAE;IACvC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC,CAAC;AACF,kDAAkD;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAc,EAAsB,EAAE;IACjE,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,MAAM,KAAK,iBAAiB;QACvC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAChC,CAAC,CAAC,KAAK,CACH,wBAAwB,MAAM,CAAC,iBAAiB,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CACvF,CAAC;AACR,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAoC,EAC5B,EAAE,CACV,IAAI,CAAC,MAAM,KAAK,GAAG;IACjB,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;IACzE,CAAC,CAAC,KAAK,CAAC,uCAAuC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"proof.d.ts","sourceRoot":"","sources":["../src/proof.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5D,2EAA2E;AAC3E,eAAO,MAAM,eAAe,uBAAuB,CAAC;AAEpD,KAAK,YAAY,GAAG,QAAQ,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEnE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,KAAK,GAAU,OAAO,cAAc,KAAG,OAAO,CAAC,SAAS,CAepE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GACjB,OAAO,SAAS,KACf,OAAO,CAAC,YAAY,GAAG,IAAI,CAe7B,CAAC"}
1
+ {"version":3,"file":"proof.d.ts","sourceRoot":"","sources":["../src/proof.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5D,2EAA2E;AAC3E,eAAO,MAAM,eAAe,uBAAuB,CAAC;AAEpD,KAAK,YAAY,GAAG,QAAQ,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAQnE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,KAAK,GAAU,OAAO,cAAc,KAAG,OAAO,CAAC,SAAS,CAmBpE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GACjB,OAAO,SAAS,KACf,OAAO,CAAC,YAAY,GAAG,IAAI,CAgB7B,CAAC"}
package/dist/proof.js CHANGED
@@ -30,17 +30,21 @@ export const SEAL_CIRCUIT_ID = "seal-identity-v2.2";
30
30
  * paths are required.
31
31
  */
32
32
  export const prove = async (input) => {
33
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
33
34
  const client = create({});
34
35
  const witness = {
35
36
  keyBits: secretToBits(input.secret).map(Number),
36
37
  nonce: input.nonce,
37
38
  };
39
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
38
40
  const { proof, inputs } = await prover.prove(client, {
39
41
  circuitId: SEAL_CIRCUIT_ID,
40
42
  witness,
41
43
  });
42
44
  return {
45
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
43
46
  proof: JSON.parse(atob(proof)),
47
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
44
48
  publicSignals: inputs,
45
49
  nullifier: inputs[0] ?? "",
46
50
  };
@@ -52,6 +56,7 @@ export const prove = async (input) => {
52
56
  * `null` if invalid. Delegates to `@lemmaoracle/sdk` verifier.
53
57
  */
54
58
  export const verify = async (proof) => {
59
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
55
60
  const { ok } = await verifier.verify({
56
61
  alg: "groth16-bn254-snarkjs",
57
62
  inputs: {
package/dist/proof.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"proof.js","sourceRoot":"","sources":["../src/proof.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,2EAA2E;AAC3E,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAIpD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,KAAqB,EAAsB,EAAE;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG;QACd,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/C,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;IACF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;QACnD,SAAS,EAAE,eAAe;QAC1B,OAAO;KACR,CAAC,CAAC;IACH,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;KAC3B,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EACzB,KAAgB,EACc,EAAE;IAChC,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACnC,GAAG,EAAE,uBAAuB;QAC5B,MAAM,EAAE;YACN,IAAI;YACJ,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC;KACF,CAAC,CAAC;IACH,OAAO,EAAE;QACP,CAAC,CAAC;YACE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE;YACvC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE;SACpC;QACH,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC"}
1
+ {"version":3,"file":"proof.js","sourceRoot":"","sources":["../src/proof.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,2EAA2E;AAC3E,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAUpD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,KAAqB,EAAsB,EAAE;IACvE,sGAAsG;IACtG,MAAM,MAAM,GAAc,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG;QACd,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/C,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;IACF,kJAAkJ;IAClJ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAmB,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;QACnE,SAAS,EAAE,eAAe;QAC1B,OAAO;KACR,CAAC,CAAC;IACH,OAAO;QACL,mEAAmE;QACnE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QACxC,mEAAmE;QACnE,aAAa,EAAE,MAAM;QACrB,SAAS,EAAG,MAAwB,CAAC,CAAC,CAAC,IAAI,EAAE;KAC9C,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EACzB,KAAgB,EACc,EAAE;IAChC,kJAAkJ;IAClJ,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACnC,GAAG,EAAE,uBAAuB;QAC5B,MAAM,EAAE;YACN,IAAI;YACJ,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC;KACF,CAAC,CAAC;IACH,OAAO,EAAE;QACP,CAAC,CAAC;YACE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE;YACvC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE;SACpC;QACH,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lemmaoracle/seal",
3
- "version": "0.3.7",
3
+ "version": "0.3.8",
4
4
  "description": "Seal — ZK auth circuit for Lemma dashboard Proof-based sign-in. Proves knowledge of a secret pre-image without revealing the secret or its hash (v2: Poseidon nullifier).",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -38,8 +38,8 @@
38
38
  "sign-in"
39
39
  ],
40
40
  "dependencies": {
41
- "@lemmaoracle/sdk": "^0.0.38",
42
- "@lemmaoracle/spec": "^0.0.36"
41
+ "@lemmaoracle/sdk": "^0.0.39",
42
+ "@lemmaoracle/spec": "^0.0.37"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/snarkjs": "^0.7.9",