@atlasauth/pca-bbs 0.2.0 → 0.4.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.
- package/README.md +13 -1
- package/dist/bbs.d.ts +39 -11
- package/dist/bbs.js +147 -47
- package/dist/bbs.js.map +1 -1
- package/dist/credential.js +21 -2
- package/dist/credential.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -51,7 +51,19 @@ verifyPresentation(pres, { pk, presentationHeader: bytes('action:search?q=atlas'
|
|
|
51
51
|
|
|
52
52
|
## Status
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
Part of [Proof-Carrying Authority](https://github.com/Atlas-Authorization/pca). **Experimental and unaudited.** The CFRG draft is not a final standard, and BBS on BLS12-381 is not post-quantum.
|
|
55
|
+
|
|
56
|
+
What is validated (ciphersuite BLS12-381-SHA-256 only):
|
|
57
|
+
|
|
58
|
+
- **Official fixture set** of draft-irtf-cfrg-bbs-signatures, vendored in `test-vectors/` with repository commit and per-file SHA-256: key generation, `hash_to_scalar`, message-to-scalar mapping, generators, all 10 signature cases (valid and invalid) and all 15 proof cases (valid and invalid). Signing reproduces the published signatures byte-for-byte, and proof generation with the published randomness reproduces the published proofs byte-for-byte. The fixtures are byte-identical across draft revisions -06 to -12.
|
|
59
|
+
- **Independent implementation**: the Rust crate `zkryptium` 0.7.1 (draft -12, on `bls12_381_plus`). Keys and signatures it produces are reproduced exactly, its randomized proofs verify here, and proofs and signatures produced here (including no-disclosure and full-disclosure selections) verify there. Tampered proofs and signatures are rejected on both sides. The runner source is in `test-vectors/xcheck-zkryptium`.
|
|
60
|
+
- **Rejection reasons** are asserted: `verifyDetailed` and `proofVerifyDetailed` report why something failed (malformed signature, public key or proof, pairing mismatch, challenge mismatch, bad disclosed indexes).
|
|
61
|
+
|
|
62
|
+
What is not validated:
|
|
63
|
+
|
|
64
|
+
- The SHAKE-256 ciphersuite, pseudonyms and blind signatures are not implemented.
|
|
65
|
+
- The credential layer (`issueCapabilityCredential`, `presentCredential`) is PCA-specific and has no external standard to test against; it is covered by this package's own tests only.
|
|
66
|
+
- Secret-scalar point multiplications (signing key, `1/(SK+e)`, signed messages, the prover's blinding scalars) use the library's fixed-window multiply with a fake point (`Point.multiply`), and secret inversions use Fermat exponentiation; `multiplyUnsafe` remains only for public verifier scalars. A dudect-style test (`ct.test.ts`: Welch t on interleaved weight-1 versus weight-253 scalars, fail at `|t| >= 10` with a median shift over 5%) passes, and a positive control with the variable-time multiply is detected. This is **not** a constant-time guarantee: JavaScript BigInt arithmetic and the JIT/GC have data-dependent timing, and the library's window method indexes a precomputed table by secret digits (a cache-timing channel). Use a native or WebAssembly constant-time implementation, or an HSM, for long-lived issuer keys facing a co-resident attacker. No independent audit.
|
|
55
67
|
|
|
56
68
|
Source and issues: https://github.com/Atlas-Authorization/pca
|
|
57
69
|
|
package/dist/bbs.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* BBS signatures over BLS12-381, faithful to draft-irtf-cfrg-bbs-signatures (
|
|
3
|
-
*
|
|
2
|
+
* BBS signatures over BLS12-381, faithful to draft-irtf-cfrg-bbs-signatures (core protocol and
|
|
3
|
+
* octet encodings; validated against the draft's official BLS12-381-SHA-256 fixtures, which are unchanged
|
|
4
|
+
* across drafts -06 to -12, and against the independent `zkryptium` crate).
|
|
4
5
|
*
|
|
5
6
|
* Ciphersuite: **BLS12-381-SHA-256** — `BBS_BLS12381G1_XMD:SHA-256_SSWU_RO_`.
|
|
6
7
|
* - signatures/generators live in G1 (48-byte compressed points), public keys in G2 (96-byte
|
|
@@ -17,10 +18,18 @@
|
|
|
17
18
|
* fresh randomness every time), so two presentations of the same credential cannot be correlated.
|
|
18
19
|
*
|
|
19
20
|
* Implementation notes:
|
|
20
|
-
* - Scalar arithmetic uses the curve's own scalar field `Fr` (order `r`)
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
21
|
+
* - Scalar arithmetic uses the curve's own scalar field `Fr` (order `r`). Every point multiplication by a
|
|
22
|
+
* SECRET scalar (the signing key, `1/(SK+e)`, the signed messages, the prover's blinding scalars and
|
|
23
|
+
* `e`) goes through `g1mulSecret` / `g2mulSecret`, i.e. the library's fixed-window multiply with a fake
|
|
24
|
+
* point (`Point.multiply`), and inversions of secrets use Fermat exponentiation (`invSecret`), not
|
|
25
|
+
* extended Euclid. `multiplyUnsafe` (variable-time) is used ONLY where the scalar is public: the
|
|
26
|
+
* verifier's challenge and response scalars and the signature's `e` during verification.
|
|
27
|
+
* - WHAT THIS DOES NOT GUARANTEE: this is JavaScript. BigInt arithmetic is not constant-time, the
|
|
28
|
+
* engine's JIT/GC add data-dependent timing, and the library's window method indexes a precomputed
|
|
29
|
+
* table by secret digits (a cache-timing channel). The change removes the scalar-Hamming-weight
|
|
30
|
+
* dependence of the high-level multiply (measured, see `ct.test.ts`); it is not a constant-time proof.
|
|
31
|
+
* A deployment holding long-lived issuer keys against a co-resident attacker needs a native/WASM
|
|
32
|
+
* constant-time implementation or an HSM.
|
|
24
33
|
* - All cross-language octet encodings (point/scalar/integer serialization, challenge and domain
|
|
25
34
|
* inputs) follow the draft so a conforming verifier in another language interoperates.
|
|
26
35
|
*/
|
|
@@ -29,6 +38,12 @@ import { bls12_381 } from '@noble/curves/bls12-381';
|
|
|
29
38
|
export type G1Point = InstanceType<typeof bls12_381.G1.ProjectivePoint>;
|
|
30
39
|
/** A point of G2 (public keys). */
|
|
31
40
|
export type G2Point = InstanceType<typeof bls12_381.G2.ProjectivePoint>;
|
|
41
|
+
/**
|
|
42
|
+
* Implementation limit on the number of messages in one credential. The draft allows up to 2^64-1, but
|
|
43
|
+
* every verification costs one hash-to-curve per message, and a verifier derives the message count from
|
|
44
|
+
* the (attacker-supplied) proof length, so an unbounded count is a CPU/memory denial-of-service lever.
|
|
45
|
+
*/
|
|
46
|
+
export declare const MAX_MESSAGES = 1024;
|
|
32
47
|
/** Order of the BBS scalar field (the prime subgroup order `r`). */
|
|
33
48
|
export declare const R: bigint;
|
|
34
49
|
/** The ciphersuite identifier (without the api_id suffix). */
|
|
@@ -67,6 +82,17 @@ export declare function skFromBytes(bytes: Uint8Array): bigint;
|
|
|
67
82
|
* disclosable). Returns `signature_to_octets(A, e)`.
|
|
68
83
|
*/
|
|
69
84
|
export declare function sign(sk: bigint, pk: Uint8Array, header: Uint8Array, messages: readonly Uint8Array[]): Uint8Array;
|
|
85
|
+
/** Why a signature or proof was rejected (stable, machine-readable). */
|
|
86
|
+
export type RejectReason = 'malformed-signature' | 'malformed-public-key' | 'malformed-proof' | 'disclosed-length-mismatch' | 'invalid-disclosed-indexes' | 'pairing-mismatch' | 'challenge-mismatch';
|
|
87
|
+
/** Result of a verification that says WHY it failed. */
|
|
88
|
+
export type VerifyResult = {
|
|
89
|
+
readonly ok: true;
|
|
90
|
+
} | {
|
|
91
|
+
readonly ok: false;
|
|
92
|
+
readonly reason: RejectReason;
|
|
93
|
+
};
|
|
94
|
+
/** Verify(PK, signature, header, messages) with a rejection reason; fails closed on any malformed input. */
|
|
95
|
+
export declare function verifyDetailed(pk: Uint8Array, signature: Uint8Array, header: Uint8Array, messages: readonly Uint8Array[]): VerifyResult;
|
|
70
96
|
/** Verify(PK, signature, header, messages): true iff the signature covers exactly these messages. */
|
|
71
97
|
export declare function verify(pk: Uint8Array, signature: Uint8Array, header: Uint8Array, messages: readonly Uint8Array[]): boolean;
|
|
72
98
|
/**
|
|
@@ -74,12 +100,14 @@ export declare function verify(pk: Uint8Array, signature: Uint8Array, header: Ui
|
|
|
74
100
|
* proof-of-knowledge of the signature that selectively discloses the messages at
|
|
75
101
|
* `disclosed_indexes`. `ph` is the presentation header (binds the proof to a context, e.g. a nonce
|
|
76
102
|
* or the request it authorizes). The proof is randomized: each call produces different octets.
|
|
103
|
+
* `fixedRandomScalars` (5 + undisclosed count scalars) pins the randomness for test vectors only;
|
|
104
|
+
* never pass it in production, since reusing it across proofs breaks zero-knowledge and unlinkability.
|
|
77
105
|
*/
|
|
78
|
-
export declare function proofGen(pk: Uint8Array, signature: Uint8Array, header: Uint8Array, ph: Uint8Array, messages: readonly Uint8Array[], disclosedIndexes: readonly number[]): Uint8Array;
|
|
106
|
+
export declare function proofGen(pk: Uint8Array, signature: Uint8Array, header: Uint8Array, ph: Uint8Array, messages: readonly Uint8Array[], disclosedIndexes: readonly number[], fixedRandomScalars?: readonly bigint[]): Uint8Array;
|
|
79
107
|
/**
|
|
80
|
-
* ProofVerify(PK, proof, header, ph, disclosed_messages, disclosed_indexes)
|
|
81
|
-
*
|
|
82
|
-
* `disclosed_indexes`, bound to `header` and `ph`. `disclosed_messages[k]` must correspond to
|
|
83
|
-
* `disclosed_indexes[k]`.
|
|
108
|
+
* ProofVerify(PK, proof, header, ph, disclosed_messages, disclosed_indexes) with a rejection reason.
|
|
109
|
+
* `disclosed_messages[k]` must correspond to `disclosed_indexes[k]`.
|
|
84
110
|
*/
|
|
111
|
+
export declare function proofVerifyDetailed(pk: Uint8Array, proof: Uint8Array, header: Uint8Array, ph: Uint8Array, disclosedMessages: readonly Uint8Array[], disclosedIndexes: readonly number[]): VerifyResult;
|
|
112
|
+
/** ProofVerify(PK, proof, header, ph, disclosed_messages, disclosed_indexes): true iff the proof is valid. */
|
|
85
113
|
export declare function proofVerify(pk: Uint8Array, proof: Uint8Array, header: Uint8Array, ph: Uint8Array, disclosedMessages: readonly Uint8Array[], disclosedIndexes: readonly number[]): boolean;
|
package/dist/bbs.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.API_ID = exports.CIPHERSUITE_ID = exports.R = void 0;
|
|
3
|
+
exports.API_ID = exports.CIPHERSUITE_ID = exports.R = exports.MAX_MESSAGES = void 0;
|
|
4
4
|
exports.hashToScalar = hashToScalar;
|
|
5
5
|
exports.mapMessageToScalarAsHash = mapMessageToScalarAsHash;
|
|
6
6
|
exports.messagesToScalars = messagesToScalars;
|
|
@@ -11,12 +11,15 @@ exports.generateKeyPair = generateKeyPair;
|
|
|
11
11
|
exports.skToBytes = skToBytes;
|
|
12
12
|
exports.skFromBytes = skFromBytes;
|
|
13
13
|
exports.sign = sign;
|
|
14
|
+
exports.verifyDetailed = verifyDetailed;
|
|
14
15
|
exports.verify = verify;
|
|
15
16
|
exports.proofGen = proofGen;
|
|
17
|
+
exports.proofVerifyDetailed = proofVerifyDetailed;
|
|
16
18
|
exports.proofVerify = proofVerify;
|
|
17
19
|
/**
|
|
18
|
-
* BBS signatures over BLS12-381, faithful to draft-irtf-cfrg-bbs-signatures (
|
|
19
|
-
*
|
|
20
|
+
* BBS signatures over BLS12-381, faithful to draft-irtf-cfrg-bbs-signatures (core protocol and
|
|
21
|
+
* octet encodings; validated against the draft's official BLS12-381-SHA-256 fixtures, which are unchanged
|
|
22
|
+
* across drafts -06 to -12, and against the independent `zkryptium` crate).
|
|
20
23
|
*
|
|
21
24
|
* Ciphersuite: **BLS12-381-SHA-256** — `BBS_BLS12381G1_XMD:SHA-256_SSWU_RO_`.
|
|
22
25
|
* - signatures/generators live in G1 (48-byte compressed points), public keys in G2 (96-byte
|
|
@@ -33,10 +36,18 @@ exports.proofVerify = proofVerify;
|
|
|
33
36
|
* fresh randomness every time), so two presentations of the same credential cannot be correlated.
|
|
34
37
|
*
|
|
35
38
|
* Implementation notes:
|
|
36
|
-
* - Scalar arithmetic uses the curve's own scalar field `Fr` (order `r`)
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
39
|
+
* - Scalar arithmetic uses the curve's own scalar field `Fr` (order `r`). Every point multiplication by a
|
|
40
|
+
* SECRET scalar (the signing key, `1/(SK+e)`, the signed messages, the prover's blinding scalars and
|
|
41
|
+
* `e`) goes through `g1mulSecret` / `g2mulSecret`, i.e. the library's fixed-window multiply with a fake
|
|
42
|
+
* point (`Point.multiply`), and inversions of secrets use Fermat exponentiation (`invSecret`), not
|
|
43
|
+
* extended Euclid. `multiplyUnsafe` (variable-time) is used ONLY where the scalar is public: the
|
|
44
|
+
* verifier's challenge and response scalars and the signature's `e` during verification.
|
|
45
|
+
* - WHAT THIS DOES NOT GUARANTEE: this is JavaScript. BigInt arithmetic is not constant-time, the
|
|
46
|
+
* engine's JIT/GC add data-dependent timing, and the library's window method indexes a precomputed
|
|
47
|
+
* table by secret digits (a cache-timing channel). The change removes the scalar-Hamming-weight
|
|
48
|
+
* dependence of the high-level multiply (measured, see `ct.test.ts`); it is not a constant-time proof.
|
|
49
|
+
* A deployment holding long-lived issuer keys against a co-resident attacker needs a native/WASM
|
|
50
|
+
* constant-time implementation or an HSM.
|
|
40
51
|
* - All cross-language octet encodings (point/scalar/integer serialization, challenge and domain
|
|
41
52
|
* inputs) follow the draft so a conforming verifier in another language interoperates.
|
|
42
53
|
*/
|
|
@@ -50,6 +61,12 @@ const G1 = bls12_381_1.bls12_381.G1.ProjectivePoint;
|
|
|
50
61
|
const G2 = bls12_381_1.bls12_381.G2.ProjectivePoint;
|
|
51
62
|
const Fr = bls12_381_1.bls12_381.fields.Fr;
|
|
52
63
|
const Fp12 = bls12_381_1.bls12_381.fields.Fp12;
|
|
64
|
+
/**
|
|
65
|
+
* Implementation limit on the number of messages in one credential. The draft allows up to 2^64-1, but
|
|
66
|
+
* every verification costs one hash-to-curve per message, and a verifier derives the message count from
|
|
67
|
+
* the (attacker-supplied) proof length, so an unbounded count is a CPU/memory denial-of-service lever.
|
|
68
|
+
*/
|
|
69
|
+
exports.MAX_MESSAGES = 1024;
|
|
53
70
|
/** Order of the BBS scalar field (the prime subgroup order `r`). */
|
|
54
71
|
exports.R = Fr.ORDER;
|
|
55
72
|
// ---- ciphersuite constants (BLS12-381-SHA-256) ------------------------------------------------
|
|
@@ -65,12 +82,32 @@ const MAP_DST = `${exports.API_ID}MAP_MSG_TO_SCALAR_AS_HASH_`;
|
|
|
65
82
|
const SEED_DST = `${exports.API_ID}SIG_GENERATOR_SEED_`;
|
|
66
83
|
const GEN_DST = `${exports.API_ID}SIG_GENERATOR_DST_`;
|
|
67
84
|
const GEN_SEED = `${exports.API_ID}MESSAGE_GENERATOR_SEED`;
|
|
68
|
-
|
|
85
|
+
/** KeyGen DST = api_id || "KEYGEN_DST_" (draft §3.4.1); the official key-pair fixture pins this exact string. */
|
|
86
|
+
const KEYGEN_DST = `${exports.API_ID}KEYGEN_DST_`;
|
|
69
87
|
/**
|
|
70
88
|
* P1: the fixed G1 generator of the BLS12-381-SHA-256 ciphersuite (draft §7.2.2), as published.
|
|
71
89
|
* Signing commits the message vector against P1, Q_1 and the per-message generators H_i.
|
|
72
90
|
*/
|
|
73
91
|
const P1_HEX = 'a8ce256102840821a3e94ea9025e4662b205762f9776b3a766c872b948f1fd225e7c59698588e70d11406d161b4e28c9';
|
|
92
|
+
/**
|
|
93
|
+
* Strict point decoding. The pinned `@noble/curves` does not reduce coordinates, so `x + p` (G1) / `c0 + p` (G2) decodes to the
|
|
94
|
+
* same point as the canonical encoding; accepting it would give every signature, proof and issuer key a second byte string.
|
|
95
|
+
* Decode, then require the exact compressed re-encoding. Throws on any other input.
|
|
96
|
+
*/
|
|
97
|
+
function strictG1(bytes) {
|
|
98
|
+
const p = G1.fromHex(bytes);
|
|
99
|
+
const re = p.toRawBytes(true);
|
|
100
|
+
if (re.length !== bytes.length || re.some((b, i) => b !== bytes[i]))
|
|
101
|
+
throw new Error('bbs: non-canonical G1 encoding');
|
|
102
|
+
return p;
|
|
103
|
+
}
|
|
104
|
+
function strictG2(bytes) {
|
|
105
|
+
const p = G2.fromHex(bytes);
|
|
106
|
+
const re = p.toRawBytes(true);
|
|
107
|
+
if (re.length !== bytes.length || re.some((b, i) => b !== bytes[i]))
|
|
108
|
+
throw new Error('bbs: non-canonical G2 encoding');
|
|
109
|
+
return p;
|
|
110
|
+
}
|
|
74
111
|
const P1 = G1.fromHex(P1_HEX);
|
|
75
112
|
/** The base point of G2 (public keys are `SK · BP2`). */
|
|
76
113
|
const BP2 = G2.BASE;
|
|
@@ -117,6 +154,8 @@ function messagesToScalars(messages) {
|
|
|
117
154
|
function createGenerators(count) {
|
|
118
155
|
if (!Number.isInteger(count) || count < 0)
|
|
119
156
|
throw new RangeError('bbs: generator count must be a non-negative integer');
|
|
157
|
+
if (count > exports.MAX_MESSAGES + 1)
|
|
158
|
+
throw new RangeError(`bbs: at most ${exports.MAX_MESSAGES} messages are supported`);
|
|
120
159
|
const gens = [];
|
|
121
160
|
let v = expand(ascii(GEN_SEED), SEED_DST, EXPAND_LEN);
|
|
122
161
|
for (let i = 1; i <= count; i++) {
|
|
@@ -147,14 +186,37 @@ function serialize(els) {
|
|
|
147
186
|
return (0, utils_1.concatBytes)(...parts);
|
|
148
187
|
}
|
|
149
188
|
// ---- point arithmetic helpers -----------------------------------------------------------------
|
|
189
|
+
/** Multiply by a PUBLIC scalar (verifier-side challenge/response values). Variable-time: never pass a secret. */
|
|
150
190
|
function g1mul(P, s) {
|
|
151
191
|
const sc = Fr.create(s);
|
|
152
192
|
return sc === 0n ? G1.ZERO : P.multiplyUnsafe(sc);
|
|
153
193
|
}
|
|
194
|
+
/** Multiply by a PUBLIC scalar in G2. Variable-time: never pass a secret. */
|
|
154
195
|
function g2mul(P, s) {
|
|
155
196
|
const sc = Fr.create(s);
|
|
156
197
|
return sc === 0n ? G2.ZERO : P.multiplyUnsafe(sc);
|
|
157
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Multiply by a SECRET scalar: the library's fixed-window multiply with a fake point (no scalar-dependent
|
|
201
|
+
* add/skip pattern). Only "is the scalar zero" is branched on (a zero secret is degenerate and refused
|
|
202
|
+
* elsewhere).
|
|
203
|
+
*/
|
|
204
|
+
function g1mulSecret(P, s) {
|
|
205
|
+
const sc = Fr.create(s);
|
|
206
|
+
return sc === 0n ? G1.ZERO : P.multiply(sc);
|
|
207
|
+
}
|
|
208
|
+
function g2mulSecret(P, s) {
|
|
209
|
+
const sc = Fr.create(s);
|
|
210
|
+
return sc === 0n ? G2.ZERO : P.multiply(sc);
|
|
211
|
+
}
|
|
212
|
+
const FR_INV_EXP = exports.R - 2n;
|
|
213
|
+
/** Inverse of a SECRET scalar by Fermat exponentiation (operation sequence depends only on the public exponent). */
|
|
214
|
+
function invSecret(x) {
|
|
215
|
+
const v = Fr.create(x);
|
|
216
|
+
if (v === 0n)
|
|
217
|
+
throw new Error('bbs: inverse of zero');
|
|
218
|
+
return Fr.pow(v, FR_INV_EXP);
|
|
219
|
+
}
|
|
158
220
|
// ---- key generation (draft §3.4) --------------------------------------------------------------
|
|
159
221
|
/**
|
|
160
222
|
* KeyGen: derive a secret scalar `SK` from key material and optional context info (draft §3.4.1).
|
|
@@ -173,11 +235,15 @@ function keyGen(keyMaterial, keyInfo = new Uint8Array(0)) {
|
|
|
173
235
|
}
|
|
174
236
|
/** SkToPk: the public key octets `point_to_octets_E2(SK · BP2)` (draft §3.4.2). */
|
|
175
237
|
function skToPk(sk) {
|
|
176
|
-
return
|
|
238
|
+
return g2mulSecret(BP2, sk).toRawBytes(true);
|
|
177
239
|
}
|
|
178
240
|
/** Convenience: generate a fresh (SK scalar, PK octets) pair from the system CSPRNG. */
|
|
179
241
|
function generateKeyPair() {
|
|
180
|
-
const
|
|
242
|
+
const ikm = (0, utils_2.randomBytes)(32);
|
|
243
|
+
// A stuck-at-zero entropy source would otherwise derive one fixed, publicly computable "random" key.
|
|
244
|
+
if (ikm.every((b) => b === 0))
|
|
245
|
+
throw new Error('bbs: entropy source returned all zeros (RNG failure); refusing to generate a key');
|
|
246
|
+
const sk = keyGen(ikm);
|
|
181
247
|
return { sk, pk: skToPk(sk) };
|
|
182
248
|
}
|
|
183
249
|
/** A 32-octet big-endian secret scalar (e.g. to serialize or parse a given SK). */
|
|
@@ -199,7 +265,7 @@ function octetsToSignature(sig) {
|
|
|
199
265
|
if (sig.length !== OCTET_POINT_LENGTH + OCTET_SCALAR_LENGTH) {
|
|
200
266
|
throw new RangeError('bbs: signature must be 80 octets');
|
|
201
267
|
}
|
|
202
|
-
const A =
|
|
268
|
+
const A = strictG1(sig.subarray(0, OCTET_POINT_LENGTH));
|
|
203
269
|
if (A.equals(G1.ZERO))
|
|
204
270
|
throw new Error('bbs: signature point A is the identity');
|
|
205
271
|
const e = os2ip(sig.subarray(OCTET_POINT_LENGTH));
|
|
@@ -216,11 +282,14 @@ function calculateDomain(pk, Q1, H, header) {
|
|
|
216
282
|
const domInput = (0, utils_1.concatBytes)(pk, domOcts, i2osp(BigInt(header.length), 8), header);
|
|
217
283
|
return hashToScalar(domInput, H2S_DST);
|
|
218
284
|
}
|
|
219
|
-
/**
|
|
285
|
+
/**
|
|
286
|
+
* B = P1 + Q_1·domain + Σ H_i·msg_i (the common commitment used by Sign/Verify/ProofGen). The messages are the
|
|
287
|
+
* holder's (possibly private) attributes, so this uses the secret-scalar multiply on every path.
|
|
288
|
+
*/
|
|
220
289
|
function computeB(Q1, H, domain, msgScalars) {
|
|
221
|
-
let B = P1.add(
|
|
290
|
+
let B = P1.add(g1mulSecret(Q1, domain));
|
|
222
291
|
for (let i = 0; i < msgScalars.length; i++) {
|
|
223
|
-
B = B.add(
|
|
292
|
+
B = B.add(g1mulSecret(at(H, i), at(msgScalars, i)));
|
|
224
293
|
}
|
|
225
294
|
return B;
|
|
226
295
|
}
|
|
@@ -244,22 +313,29 @@ function sign(sk, pk, header, messages) {
|
|
|
244
313
|
eEls.push({ t: 'scalar', v: domain });
|
|
245
314
|
const e = hashToScalar(serialize(eEls), H2S_DST);
|
|
246
315
|
const B = computeB(Q1, H, domain, msgScalars);
|
|
247
|
-
const A =
|
|
316
|
+
const A = g1mulSecret(B, invSecret(Fr.add(sk, e))); // A = B · 1/(SK + e)
|
|
248
317
|
return signatureToOctets(A, e);
|
|
249
318
|
}
|
|
250
|
-
/** Verify(PK, signature, header, messages)
|
|
251
|
-
function
|
|
319
|
+
/** Verify(PK, signature, header, messages) with a rejection reason; fails closed on any malformed input. */
|
|
320
|
+
function verifyDetailed(pk, signature, header, messages) {
|
|
252
321
|
let parsed;
|
|
253
|
-
let W;
|
|
254
322
|
try {
|
|
255
323
|
parsed = octetsToSignature(signature);
|
|
256
|
-
W = G2.fromHex(pk);
|
|
257
324
|
}
|
|
258
325
|
catch {
|
|
259
|
-
return false;
|
|
326
|
+
return { ok: false, reason: 'malformed-signature' };
|
|
327
|
+
}
|
|
328
|
+
let W;
|
|
329
|
+
try {
|
|
330
|
+
W = strictG2(pk);
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
return { ok: false, reason: 'malformed-public-key' };
|
|
260
334
|
}
|
|
261
335
|
if (W.equals(G2.ZERO))
|
|
262
|
-
return false;
|
|
336
|
+
return { ok: false, reason: 'malformed-public-key' };
|
|
337
|
+
if (messages.length > exports.MAX_MESSAGES)
|
|
338
|
+
return { ok: false, reason: 'disclosed-length-mismatch' };
|
|
263
339
|
const msgScalars = messagesToScalars(messages);
|
|
264
340
|
const L = msgScalars.length;
|
|
265
341
|
const gens = createGenerators(L + 1);
|
|
@@ -270,7 +346,11 @@ function verify(pk, signature, header, messages) {
|
|
|
270
346
|
// Pairing check: e(A, W + BP2·e) == e(B, BP2) ⇔ e(A, (SK+e)·BP2) == e(B, BP2).
|
|
271
347
|
const lhs = bls12_381_1.bls12_381.pairing(parsed.A, W.add(g2mul(BP2, parsed.e)));
|
|
272
348
|
const rhs = bls12_381_1.bls12_381.pairing(B, BP2);
|
|
273
|
-
return Fp12.eql(lhs, rhs);
|
|
349
|
+
return Fp12.eql(lhs, rhs) ? { ok: true } : { ok: false, reason: 'pairing-mismatch' };
|
|
350
|
+
}
|
|
351
|
+
/** Verify(PK, signature, header, messages): true iff the signature covers exactly these messages. */
|
|
352
|
+
function verify(pk, signature, header, messages) {
|
|
353
|
+
return verifyDetailed(pk, signature, header, messages).ok;
|
|
274
354
|
}
|
|
275
355
|
// ---- random scalars (draft §4.2.1) ------------------------------------------------------------
|
|
276
356
|
function calculateRandomScalars(count) {
|
|
@@ -310,9 +390,9 @@ function octetsToProof(proof) {
|
|
|
310
390
|
throw new RangeError('bbs: malformed proof length');
|
|
311
391
|
}
|
|
312
392
|
let o = 0;
|
|
313
|
-
const Abar =
|
|
314
|
-
const Bbar =
|
|
315
|
-
const D =
|
|
393
|
+
const Abar = strictG1(proof.subarray(o, (o += OCTET_POINT_LENGTH)));
|
|
394
|
+
const Bbar = strictG1(proof.subarray(o, (o += OCTET_POINT_LENGTH)));
|
|
395
|
+
const D = strictG1(proof.subarray(o, (o += OCTET_POINT_LENGTH)));
|
|
316
396
|
const eHat = readScalar(proof, o);
|
|
317
397
|
o += OCTET_SCALAR_LENGTH;
|
|
318
398
|
const r1Hat = readScalar(proof, o);
|
|
@@ -355,8 +435,10 @@ function undisclosedAscending(disclosed, L) {
|
|
|
355
435
|
* proof-of-knowledge of the signature that selectively discloses the messages at
|
|
356
436
|
* `disclosed_indexes`. `ph` is the presentation header (binds the proof to a context, e.g. a nonce
|
|
357
437
|
* or the request it authorizes). The proof is randomized: each call produces different octets.
|
|
438
|
+
* `fixedRandomScalars` (5 + undisclosed count scalars) pins the randomness for test vectors only;
|
|
439
|
+
* never pass it in production, since reusing it across proofs breaks zero-knowledge and unlinkability.
|
|
358
440
|
*/
|
|
359
|
-
function proofGen(pk, signature, header, ph, messages, disclosedIndexes) {
|
|
441
|
+
function proofGen(pk, signature, header, ph, messages, disclosedIndexes, fixedRandomScalars) {
|
|
360
442
|
const { A, e } = octetsToSignature(signature);
|
|
361
443
|
const msgScalars = messagesToScalars(messages);
|
|
362
444
|
const L = msgScalars.length;
|
|
@@ -370,23 +452,30 @@ function proofGen(pk, signature, header, ph, messages, disclosedIndexes) {
|
|
|
370
452
|
const H = gens.slice(1);
|
|
371
453
|
const domain = calculateDomain(pk, Q1, H, header);
|
|
372
454
|
const B = computeB(Q1, H, domain, msgScalars);
|
|
373
|
-
const rs = calculateRandomScalars(5 + U);
|
|
455
|
+
const rs = fixedRandomScalars === undefined ? calculateRandomScalars(5 + U) : [...fixedRandomScalars];
|
|
456
|
+
if (rs.length !== 5 + U)
|
|
457
|
+
throw new RangeError(`bbs: expected ${5 + U} random scalars, got ${rs.length}`);
|
|
458
|
+
if (at(rs, 0) === 0n || at(rs, 1) === 0n) {
|
|
459
|
+
// r1 = 0 or r2 = 0 collapses the blinded signature to the identity (and r2 = 0 is not invertible).
|
|
460
|
+
throw new RangeError('bbs: random blinding scalars r1, r2 must be non-zero (RNG failure?)');
|
|
461
|
+
}
|
|
374
462
|
const r1 = at(rs, 0);
|
|
375
463
|
const r2 = at(rs, 1);
|
|
376
464
|
const eTilde = at(rs, 2);
|
|
377
465
|
const r1Tilde = at(rs, 3);
|
|
378
466
|
const r3Tilde = at(rs, 4);
|
|
379
467
|
const mTilde = rs.slice(5);
|
|
380
|
-
|
|
381
|
-
const
|
|
382
|
-
const
|
|
383
|
-
const
|
|
384
|
-
|
|
468
|
+
// Every scalar here is secret (blinding scalars, the signature's e, the undisclosed messages' randomisers).
|
|
469
|
+
const D = g1mulSecret(B, r2);
|
|
470
|
+
const Abar = g1mulSecret(A, Fr.mul(r1, r2));
|
|
471
|
+
const Bbar = g1mulSecret(D, r1).subtract(g1mulSecret(Abar, e));
|
|
472
|
+
const T1 = g1mulSecret(Abar, eTilde).add(g1mulSecret(D, r1Tilde));
|
|
473
|
+
let T2 = g1mulSecret(D, r3Tilde);
|
|
385
474
|
for (let k = 0; k < U; k++)
|
|
386
|
-
T2 = T2.add(
|
|
475
|
+
T2 = T2.add(g1mulSecret(at(H, at(undisclosed, k)), at(mTilde, k)));
|
|
387
476
|
const disclosedMsgs = disclosed.map((i) => at(msgScalars, i));
|
|
388
477
|
const c = calculateChallenge(Abar, Bbar, D, T1, T2, disclosed, disclosedMsgs, domain, ph);
|
|
389
|
-
const r3 =
|
|
478
|
+
const r3 = invSecret(r2);
|
|
390
479
|
const eHat = Fr.add(eTilde, Fr.mul(e, c));
|
|
391
480
|
const r1Hat = Fr.sub(r1Tilde, Fr.mul(r1, c));
|
|
392
481
|
const r3Hat = Fr.sub(r3Tilde, Fr.mul(r3, c));
|
|
@@ -397,28 +486,33 @@ function proofGen(pk, signature, header, ph, messages, disclosedIndexes) {
|
|
|
397
486
|
}
|
|
398
487
|
// ---- ProofVerify (draft §3.5.4, core §3.6.4) --------------------------------------------------
|
|
399
488
|
/**
|
|
400
|
-
* ProofVerify(PK, proof, header, ph, disclosed_messages, disclosed_indexes)
|
|
401
|
-
*
|
|
402
|
-
* `disclosed_indexes`, bound to `header` and `ph`. `disclosed_messages[k]` must correspond to
|
|
403
|
-
* `disclosed_indexes[k]`.
|
|
489
|
+
* ProofVerify(PK, proof, header, ph, disclosed_messages, disclosed_indexes) with a rejection reason.
|
|
490
|
+
* `disclosed_messages[k]` must correspond to `disclosed_indexes[k]`.
|
|
404
491
|
*/
|
|
405
|
-
function
|
|
492
|
+
function proofVerifyDetailed(pk, proof, header, ph, disclosedMessages, disclosedIndexes) {
|
|
406
493
|
let p;
|
|
407
|
-
let W;
|
|
408
494
|
try {
|
|
409
495
|
p = octetsToProof(proof);
|
|
410
|
-
W = G2.fromHex(pk);
|
|
411
496
|
}
|
|
412
497
|
catch {
|
|
413
|
-
return false;
|
|
498
|
+
return { ok: false, reason: 'malformed-proof' };
|
|
499
|
+
}
|
|
500
|
+
let W;
|
|
501
|
+
try {
|
|
502
|
+
W = strictG2(pk);
|
|
503
|
+
}
|
|
504
|
+
catch {
|
|
505
|
+
return { ok: false, reason: 'malformed-public-key' };
|
|
414
506
|
}
|
|
415
507
|
if (W.equals(G2.ZERO))
|
|
416
|
-
return false;
|
|
508
|
+
return { ok: false, reason: 'malformed-public-key' };
|
|
417
509
|
if (disclosedMessages.length !== disclosedIndexes.length)
|
|
418
|
-
return false;
|
|
510
|
+
return { ok: false, reason: 'disclosed-length-mismatch' };
|
|
419
511
|
const U = p.mHat.length;
|
|
420
512
|
const R_count = disclosedIndexes.length;
|
|
421
513
|
const L = R_count + U;
|
|
514
|
+
if (L > exports.MAX_MESSAGES)
|
|
515
|
+
return { ok: false, reason: 'malformed-proof' };
|
|
422
516
|
let disclosed;
|
|
423
517
|
try {
|
|
424
518
|
validateIndexes(disclosedIndexes, L);
|
|
@@ -426,7 +520,7 @@ function proofVerify(pk, proof, header, ph, disclosedMessages, disclosedIndexes)
|
|
|
426
520
|
disclosed = disclosedIndexes.map((idx, k) => ({ idx, msg: at(disclosedScalars, k) }));
|
|
427
521
|
}
|
|
428
522
|
catch {
|
|
429
|
-
return false;
|
|
523
|
+
return { ok: false, reason: 'invalid-disclosed-indexes' };
|
|
430
524
|
}
|
|
431
525
|
disclosed.sort((a, b) => a.idx - b.idx);
|
|
432
526
|
const disclosedSet = new Set(disclosed.map((d) => d.idx));
|
|
@@ -447,8 +541,14 @@ function proofVerify(pk, proof, header, ph, disclosedMessages, disclosedIndexes)
|
|
|
447
541
|
T2 = T2.add(g1mul(at(H, at(undisclosed, k)), at(p.mHat, k)));
|
|
448
542
|
const cv = calculateChallenge(p.Abar, p.Bbar, p.D, T1, T2, disclosed.map((d) => d.idx), disclosed.map((d) => d.msg), domain, ph);
|
|
449
543
|
if (cv !== p.c)
|
|
450
|
-
return false;
|
|
544
|
+
return { ok: false, reason: 'challenge-mismatch' };
|
|
451
545
|
// Final pairing: e(Ā, W) == e(B̄, BP2).
|
|
452
|
-
return Fp12.eql(bls12_381_1.bls12_381.pairing(p.Abar, W), bls12_381_1.bls12_381.pairing(p.Bbar, BP2))
|
|
546
|
+
return Fp12.eql(bls12_381_1.bls12_381.pairing(p.Abar, W), bls12_381_1.bls12_381.pairing(p.Bbar, BP2))
|
|
547
|
+
? { ok: true }
|
|
548
|
+
: { ok: false, reason: 'pairing-mismatch' };
|
|
549
|
+
}
|
|
550
|
+
/** ProofVerify(PK, proof, header, ph, disclosed_messages, disclosed_indexes): true iff the proof is valid. */
|
|
551
|
+
function proofVerify(pk, proof, header, ph, disclosedMessages, disclosedIndexes) {
|
|
552
|
+
return proofVerifyDetailed(pk, proof, header, ph, disclosedMessages, disclosedIndexes).ok;
|
|
453
553
|
}
|
|
454
554
|
//# sourceMappingURL=bbs.js.map
|
package/dist/bbs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bbs.js","sourceRoot":"","sources":["../src/bbs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bbs.js","sourceRoot":"","sources":["../src/bbs.ts"],"names":[],"mappings":";;;AA2IA,oCAEC;AAGD,4DAEC;AAGD,8CAEC;AAMD,4CAWC;AA2ED,wBAOC;AAGD,wBAEC;AAGD,0CAMC;AAGD,8BAEC;AACD,kCAKC;AAqDD,oBAiBC;AAgBD,wCAgCC;AAGD,wBAEC;AAmHD,4BAyDC;AAQD,kDAuEC;AAGD,kCASC;AArpBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,uDAAoD;AACpD,wEAA0E;AAC1E,wDAA6F;AAC7F,iDAA8C;AAC9C,+CAAkD;AAElD,kGAAkG;AAElG,MAAM,EAAE,GAAG,qBAAS,CAAC,EAAE,CAAC,eAAe,CAAC;AACxC,MAAM,EAAE,GAAG,qBAAS,CAAC,EAAE,CAAC,eAAe,CAAC;AACxC,MAAM,EAAE,GAAG,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/B,MAAM,IAAI,GAAG,qBAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AAOnC;;;;GAIG;AACU,QAAA,YAAY,GAAG,IAAI,CAAC;AAEjC,oEAAoE;AACvD,QAAA,CAAC,GAAW,EAAE,CAAC,KAAK,CAAC;AAElC,kGAAkG;AAElG,8DAA8D;AACjD,QAAA,cAAc,GAAG,qCAAqC,CAAC;AACpE,8CAA8C;AACjC,QAAA,MAAM,GAAG,GAAG,sBAAc,WAAW,CAAC;AAEnD,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,kBAAkB,GAAG,EAAE,CAAC,CAAC,iBAAiB;AAChD,MAAM,UAAU,GAAG,EAAE,CAAC;AAEtB,MAAM,OAAO,GAAG,GAAG,cAAM,MAAM,CAAC;AAChC,MAAM,OAAO,GAAG,GAAG,cAAM,4BAA4B,CAAC;AACtD,MAAM,QAAQ,GAAG,GAAG,cAAM,qBAAqB,CAAC;AAChD,MAAM,OAAO,GAAG,GAAG,cAAM,oBAAoB,CAAC;AAC9C,MAAM,QAAQ,GAAG,GAAG,cAAM,wBAAwB,CAAC;AACnD,iHAAiH;AACjH,MAAM,UAAU,GAAG,GAAG,cAAM,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,MAAM,GAAG,kGAAkG,CAAC;AAClH;;;;GAIG;AACH,SAAS,QAAQ,CAAC,KAAiB;IACjC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACvH,OAAO,CAAC,CAAC;AACX,CAAC;AACD,SAAS,QAAQ,CAAC,KAAiB;IACjC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACvH,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,EAAE,GAAY,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACvC,yDAAyD;AACzD,MAAM,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC;AAE7B,kGAAkG;AAElG,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAC/B,SAAS,KAAK,CAAC,CAAS;IACtB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,qFAAqF;AACrF,SAAS,KAAK,CAAC,CAAS,EAAE,GAAW;IACnC,OAAO,IAAA,uBAAe,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,wEAAwE;AACxE,SAAS,KAAK,CAAC,CAAa;IAC1B,OAAO,IAAA,uBAAe,EAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,gGAAgG;AAChG,SAAS,EAAE,CAAI,GAAiB,EAAE,CAAS;IACzC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,UAAU,CAAC,cAAc,CAAC,sBAAsB,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9F,OAAO,CAAC,CAAC;AACX,CAAC;AAED,yDAAyD;AACzD,SAAS,MAAM,CAAC,GAAe,EAAE,GAAW,EAAE,GAAW;IACvD,OAAO,IAAA,kCAAkB,EAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,eAAM,CAAC,CAAC;AAC1D,CAAC;AAED,+FAA+F;AAC/F,SAAgB,YAAY,CAAC,GAAe,EAAE,GAAW;IACvD,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,qFAAqF;AACrF,SAAgB,wBAAwB,CAAC,OAAmB;IAC1D,OAAO,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,qFAAqF;AACrF,SAAgB,iBAAiB,CAAC,QAA+B;IAC/D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,qDAAqD,CAAC,CAAC;IACvH,IAAI,KAAK,GAAG,oBAAY,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,gBAAgB,oBAAY,yBAAyB,CAAC,CAAC;IAC1G,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,CAAC,GAAG,MAAM,CAAC,IAAA,mBAAW,EAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,qBAAS,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAUD,SAAS,SAAS,CAAC,GAAqB;IACtC,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;YACb,KAAK,IAAI;gBACP,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,IAAI;gBACP,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,QAAQ;gBACX,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,KAAK;gBACR,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM;QACV,CAAC;IACH,CAAC;IACD,OAAO,IAAA,mBAAW,EAAC,GAAG,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,kGAAkG;AAElG,iHAAiH;AACjH,SAAS,KAAK,CAAC,CAAU,EAAE,CAAS;IAClC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,6EAA6E;AAC7E,SAAS,KAAK,CAAC,CAAU,EAAE,CAAS;IAClC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,CAAU,EAAE,CAAS;IACxC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,WAAW,CAAC,CAAU,EAAE,CAAS;IACxC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,GAAG,SAAC,GAAG,EAAE,CAAC;AAE1B,oHAAoH;AACpH,SAAS,SAAS,CAAC,CAAS;IAC1B,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACtD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAC/B,CAAC;AAED,kGAAkG;AAElG;;;GAGG;AACH,SAAgB,MAAM,CAAC,WAAuB,EAAE,UAAsB,IAAI,UAAU,CAAC,CAAC,CAAC;IACrF,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,UAAU,CAAC,8CAA8C,CAAC,CAAC;IAClG,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK;QAAE,MAAM,IAAI,UAAU,CAAC,4CAA4C,CAAC,CAAC;IAC/F,MAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACxF,MAAM,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACjD,IAAI,EAAE,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAC9F,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,mFAAmF;AACnF,SAAgB,MAAM,CAAC,EAAU;IAC/B,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,wFAAwF;AACxF,SAAgB,eAAe;IAC7B,MAAM,GAAG,GAAG,IAAA,mBAAW,EAAC,EAAE,CAAC,CAAC;IAC5B,qGAAqG;IACrG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACnI,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;AAChC,CAAC;AAED,mFAAmF;AACnF,SAAgB,SAAS,CAAC,EAAU;IAClC,OAAO,KAAK,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;AACxC,CAAC;AACD,SAAgB,WAAW,CAAC,KAAiB;IAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,mBAAmB;QAAE,MAAM,IAAI,UAAU,CAAC,2BAA2B,CAAC,CAAC;IAC5F,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,SAAC;QAAE,MAAM,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC;IACvE,OAAO,EAAE,CAAC;AACZ,CAAC;AASD,SAAS,iBAAiB,CAAC,CAAU,EAAE,CAAS;IAC9C,OAAO,IAAA,mBAAW,EAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAe;IACxC,IAAI,GAAG,CAAC,MAAM,KAAK,kBAAkB,GAAG,mBAAmB,EAAE,CAAC;QAC5D,MAAM,IAAI,UAAU,CAAC,kCAAkC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACjF,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,SAAC;QAAE,MAAM,IAAI,UAAU,CAAC,sCAAsC,CAAC,CAAC;IACpF,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAClB,CAAC;AAED,kGAAkG;AAElG,SAAS,eAAe,CAAC,EAAc,EAAE,EAAW,EAAE,CAAqB,EAAE,MAAkB;IAC7F,MAAM,GAAG,GAAY,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrE,KAAK,MAAM,CAAC,IAAI,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,cAAM,CAAC,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACnF,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,SAAS,QAAQ,CAAC,EAAW,EAAE,CAAqB,EAAE,MAAc,EAAE,UAA6B;IACjG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,kGAAkG;AAElG;;;;GAIG;AACH,SAAgB,IAAI,CAAC,EAAU,EAAE,EAAc,EAAE,MAAkB,EAAE,QAA+B;IAClG,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;IAC5B,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAElD,gGAAgG;IAChG,MAAM,IAAI,GAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,UAAU;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAEjD,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB;IACzE,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,CAAC;AAeD,4GAA4G;AAC5G,SAAgB,cAAc,CAC5B,EAAc,EACd,SAAqB,EACrB,MAAkB,EAClB,QAA+B;IAE/B,IAAI,MAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,CAAU,CAAC;IACf,IAAI,CAAC;QACH,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;IAC5E,IAAI,QAAQ,CAAC,MAAM,GAAG,oBAAY;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;IAC9F,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;IAC5B,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAE9C,iFAAiF;IACjF,MAAM,GAAG,GAAG,qBAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,qBAAS,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;AACvF,CAAC;AAED,qGAAqG;AACrG,SAAgB,MAAM,CAAC,EAAc,EAAE,SAAqB,EAAE,MAAkB,EAAE,QAA+B;IAC/G,OAAO,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED,kGAAkG;AAElG,SAAS,sBAAsB,CAAC,KAAa;IAC3C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,mBAAW,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,kGAAkG;AAElG,SAAS,kBAAkB,CACzB,IAAa,EACb,IAAa,EACb,CAAU,EACV,EAAW,EACX,EAAW,EACX,gBAAmC,EACnC,aAAgC,EAChC,MAAc,EACd,EAAc;IAEd,MAAM,GAAG,GAAY,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;IAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5I,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3E,OAAO,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAeD,SAAS,aAAa,CAAC,CAAc;IACnC,MAAM,KAAK,GAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACrG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,mBAAmB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACzH,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAClE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAC5C,OAAO,IAAA,mBAAW,EAAC,GAAG,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB,EAAE,MAAc;IACnD,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI,SAAC;QAAE,MAAM,IAAI,UAAU,CAAC,gCAAgC,CAAC,CAAC;IACnE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,aAAa,CAAC,KAAiB;IACtC,MAAM,KAAK,GAAG,CAAC,GAAG,kBAAkB,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAC,gCAAgC;IAChG,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,mBAAmB,KAAK,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC,IAAI,mBAAmB,CAAC;IACzB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC,IAAI,mBAAmB,CAAC;IACzB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC,IAAI,mBAAmB,CAAC;IACzB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,mBAAmB,CAAC;IACvD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,IAAI,mBAAmB,CAAC;IAC3B,CAAC;IACD,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,kGAAkG;AAElG,SAAS,eAAe,CAAC,OAA0B,EAAE,CAAS;IAC5D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACtH,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,SAA8B,EAAE,CAAS;IACrE,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,kGAAkG;AAElG;;;;;;;GAOG;AACH,SAAgB,QAAQ,CACtB,EAAc,EACd,SAAqB,EACrB,MAAkB,EAClB,EAAc,EACd,QAA+B,EAC/B,gBAAmC,EACnC,kBAAsC;IAEtC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;IAC5B,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAErC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,oBAAoB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;IAE7B,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAE9C,MAAM,EAAE,GAAG,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC;IACtG,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IACzG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACzC,mGAAmG;QACnG,MAAM,IAAI,UAAU,CAAC,qEAAqE,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACrB,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,4GAA4G;IAC5G,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAClE,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/F,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAE1F,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5G,OAAO,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,kGAAkG;AAElG;;;GAGG;AACH,SAAgB,mBAAmB,CACjC,EAAc,EACd,KAAiB,EACjB,MAAkB,EAClB,EAAc,EACd,iBAAwC,EACxC,gBAAmC;IAEnC,IAAI,CAAc,CAAC;IACnB,IAAI,CAAC;QACH,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAClD,CAAC;IACD,IAAI,CAAU,CAAC;IACf,IAAI,CAAC;QACH,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;IAC5E,IAAI,iBAAiB,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;IAEpH,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACxB,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;IACxC,MAAM,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,GAAG,oBAAY;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAEtE,IAAI,SAAyC,CAAC;IAC9C,IAAI,CAAC;QACH,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;QAC9D,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;IAC5D,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,oBAAoB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAE1D,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAElD,0BAA0B;IAC1B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,iDAAiD;IACjD,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,SAAS;QAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,+CAA+C;IAC/C,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzF,MAAM,EAAE,GAAG,kBAAkB,CAC3B,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,CAAC,EACH,EAAE,EACF,EAAE,EACF,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAC3B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAC3B,MAAM,EACN,EAAE,CACH,CAAC;IACF,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAEnE,wCAAwC;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,qBAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3E,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE;QACd,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;AAChD,CAAC;AAED,8GAA8G;AAC9G,SAAgB,WAAW,CACzB,EAAc,EACd,KAAiB,EACjB,MAAkB,EAClB,EAAc,EACd,iBAAwC,EACxC,gBAAmC;IAEnC,OAAO,mBAAmB,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;AAC5F,CAAC"}
|
package/dist/credential.js
CHANGED
|
@@ -13,6 +13,12 @@ const NUL = 0x00;
|
|
|
13
13
|
const TEXT = new TextEncoder();
|
|
14
14
|
/** Deterministic message octets for one attribute: utf8(name) || 0x00 || utf8(value). */
|
|
15
15
|
function encodeAttribute(name, value) {
|
|
16
|
+
if (typeof name !== 'string' || typeof value !== 'string')
|
|
17
|
+
throw new TypeError('attribute name and value must be strings');
|
|
18
|
+
// A NUL inside the name would let {name:"a\0b", value:"c"} and {name:"a", value:"b\0c"} encode to the
|
|
19
|
+
// same signed octets (the NUL is the only separator).
|
|
20
|
+
if (name.includes('\0'))
|
|
21
|
+
throw new RangeError('attribute name must not contain NUL');
|
|
16
22
|
const n = TEXT.encode(name);
|
|
17
23
|
const v = TEXT.encode(value);
|
|
18
24
|
const out = new Uint8Array(n.length + 1 + v.length);
|
|
@@ -65,8 +71,13 @@ function verifyCredential(cred) {
|
|
|
65
71
|
catch {
|
|
66
72
|
return false;
|
|
67
73
|
}
|
|
68
|
-
|
|
69
|
-
|
|
74
|
+
try {
|
|
75
|
+
const messages = cred.attributes.map(encode);
|
|
76
|
+
return (0, bbs_1.verify)(pk, signature, header, messages);
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return false; // malformed credential structure: fail closed, never throw from a boolean verifier
|
|
80
|
+
}
|
|
70
81
|
}
|
|
71
82
|
/**
|
|
72
83
|
* presentCredential: produce a selective-disclosure proof revealing only the named attributes.
|
|
@@ -132,6 +143,14 @@ function verifyPresentation(pres, opts) {
|
|
|
132
143
|
if (opts?.presentationHeader !== undefined && opts.presentationHeader.length > 0 && (0, pca_1.b64u)(ph) !== pres.presentationHeader) {
|
|
133
144
|
return false;
|
|
134
145
|
}
|
|
146
|
+
try {
|
|
147
|
+
return verifyPresentationInner(pres, pk, header, proof, ph, opts);
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return false; // malformed presentation structure: fail closed
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function verifyPresentationInner(pres, pk, header, proof, ph, opts) {
|
|
135
154
|
const disclosed = opts?.disclosed ?? pres.disclosed;
|
|
136
155
|
// When the verifier asserts its own expected disclosure, it must match what the presentation shows.
|
|
137
156
|
if (opts?.disclosed !== undefined && !sameDisclosure(opts.disclosed, pres.disclosed))
|
package/dist/credential.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential.js","sourceRoot":"","sources":["../src/credential.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"credential.js","sourceRoot":"","sources":["../src/credential.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlasauth/pca-bbs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "BBS signatures (CFRG draft) for PCA: issue a capability as a multi-message BBS credential, then present it with selective disclosure + unlinkable zero-knowledge proof-of-possession, so an agent reveals only the attributes a tool needs and uses can't be correlated.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bbs signatures",
|
|
@@ -34,9 +34,10 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@noble/curves": "^1.6.0",
|
|
36
36
|
"@noble/hashes": "^1.5.0",
|
|
37
|
-
"@atlasauth/pca": "0.
|
|
37
|
+
"@atlasauth/pca": "0.4.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
+
"fast-check": "^3.23.1",
|
|
40
41
|
"typescript": "^5.6.3",
|
|
41
42
|
"vitest": "^2.1.4"
|
|
42
43
|
},
|