canary-kit 0.9.0 → 0.10.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 +1 -1
- package/dist/counter.d.ts +1 -36
- package/dist/counter.d.ts.map +1 -1
- package/dist/counter.js +1 -61
- package/dist/counter.js.map +1 -1
- package/dist/crypto.d.ts +1 -110
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +2 -308
- package/dist/crypto.js.map +1 -1
- package/dist/encoding.d.ts +1 -55
- package/dist/encoding.d.ts.map +1 -1
- package/dist/encoding.js +1 -97
- package/dist/encoding.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +7 -2
- package/dist/sync.js.map +1 -1
- package/dist/token.d.ts +4 -71
- package/dist/token.d.ts.map +1 -1
- package/dist/token.js +17 -111
- package/dist/token.js.map +1 -1
- package/dist/wordlist.d.ts +1 -27
- package/dist/wordlist.d.ts.map +1 -1
- package/dist/wordlist.js +1 -296
- package/dist/wordlist.js.map +1 -1
- package/llms-full.txt +1 -1
- package/llms.txt +1 -1
- package/package.json +3 -2
package/dist/encoding.js
CHANGED
|
@@ -1,98 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { WORDLIST } from './wordlist.js';
|
|
3
|
-
/** Default encoding: single word from en-v1 wordlist. */
|
|
4
|
-
export const DEFAULT_ENCODING = { format: 'words', count: 1 };
|
|
5
|
-
/**
|
|
6
|
-
* Encode raw bytes as words using 11-bit indices into a wordlist.
|
|
7
|
-
* Each word uses a consecutive 2-byte slice: readUint16BE(bytes, i*2) % wordlistSize.
|
|
8
|
-
*
|
|
9
|
-
* @param bytes - Raw bytes to encode (must have at least `count * 2` bytes).
|
|
10
|
-
* @param count - Number of words to produce (integer 1–16, default: 1).
|
|
11
|
-
* @param wordlist - Custom wordlist (must be exactly 2048 entries, default: en-v1).
|
|
12
|
-
* @returns Array of lowercase word strings.
|
|
13
|
-
* @throws {RangeError} If count is not an integer 1–16, wordlist is wrong size, or insufficient bytes.
|
|
14
|
-
*/
|
|
15
|
-
export function encodeAsWords(bytes, count = 1, wordlist = WORDLIST) {
|
|
16
|
-
if (wordlist.length !== 2048)
|
|
17
|
-
throw new RangeError('Wordlist must contain exactly 2048 entries');
|
|
18
|
-
if (!Number.isInteger(count) || count < 1 || count > 16)
|
|
19
|
-
throw new RangeError('Word count must be an integer 1–16');
|
|
20
|
-
if (bytes.length < count * 2)
|
|
21
|
-
throw new RangeError('Not enough bytes for requested word count');
|
|
22
|
-
const words = [];
|
|
23
|
-
for (let i = 0; i < count; i++) {
|
|
24
|
-
const index = readUint16BE(bytes, i * 2) % wordlist.length;
|
|
25
|
-
words.push(wordlist[index]);
|
|
26
|
-
}
|
|
27
|
-
return words;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Encode raw bytes as a numeric PIN with leading zeros.
|
|
31
|
-
* Uses the first ceil(digits * 0.415) bytes, interpreted as a big-endian
|
|
32
|
-
* integer, reduced modulo 10^digits.
|
|
33
|
-
*
|
|
34
|
-
* @param bytes - Raw bytes to encode (must be non-empty).
|
|
35
|
-
* @param digits - Number of PIN digits to produce (integer 1-10, default: 4).
|
|
36
|
-
* @returns Zero-padded numeric string of the specified length.
|
|
37
|
-
* @throws {RangeError} If digits is not an integer 1-10 or bytes is empty.
|
|
38
|
-
*/
|
|
39
|
-
export function encodeAsPin(bytes, digits = 4) {
|
|
40
|
-
if (!Number.isInteger(digits) || digits < 1 || digits > 10)
|
|
41
|
-
throw new RangeError('PIN digits must be an integer 1–10');
|
|
42
|
-
if (bytes.length === 0)
|
|
43
|
-
throw new RangeError('Cannot encode empty byte array as PIN');
|
|
44
|
-
const needed = Math.min(Math.ceil(digits * 0.415), bytes.length);
|
|
45
|
-
const mod = Math.pow(10, digits);
|
|
46
|
-
// Use BigInt accumulation for 9–10 digits to avoid 32-bit overflow in >>> 0
|
|
47
|
-
if (digits >= 9) {
|
|
48
|
-
let bigVal = 0n;
|
|
49
|
-
for (let i = 0; i < needed; i++)
|
|
50
|
-
bigVal = bigVal * 256n + BigInt(bytes[i]);
|
|
51
|
-
return (Number(bigVal % BigInt(mod))).toString().padStart(digits, '0');
|
|
52
|
-
}
|
|
53
|
-
let value = 0;
|
|
54
|
-
for (let i = 0; i < needed; i++) {
|
|
55
|
-
value = (value * 256 + bytes[i]) >>> 0;
|
|
56
|
-
}
|
|
57
|
-
return (value % mod).toString().padStart(digits, '0');
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Encode raw bytes as a lowercase hex string.
|
|
61
|
-
*
|
|
62
|
-
* @param bytes - Raw bytes to encode.
|
|
63
|
-
* @param length - Number of hex characters to produce (integer 1-64, default: 8).
|
|
64
|
-
* @returns Lowercase hex string of the specified length.
|
|
65
|
-
* @throws {RangeError} If length is not an integer 1-64 or insufficient bytes are provided.
|
|
66
|
-
*/
|
|
67
|
-
export function encodeAsHex(bytes, length = 8) {
|
|
68
|
-
if (!Number.isInteger(length) || length < 1 || length > 64)
|
|
69
|
-
throw new RangeError('Hex length must be an integer 1–64');
|
|
70
|
-
const needed = Math.ceil(length / 2);
|
|
71
|
-
if (bytes.length < needed)
|
|
72
|
-
throw new RangeError(`Not enough bytes: need ${needed}, got ${bytes.length}`);
|
|
73
|
-
let hex = '';
|
|
74
|
-
for (let i = 0; i < needed && i < bytes.length; i++) {
|
|
75
|
-
hex += bytes[i].toString(16).padStart(2, '0');
|
|
76
|
-
}
|
|
77
|
-
return hex.slice(0, length);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Encode raw bytes using the specified encoding format.
|
|
81
|
-
* Returns a single string (words are space-joined).
|
|
82
|
-
*
|
|
83
|
-
* @param bytes - Raw bytes to encode.
|
|
84
|
-
* @param encoding - Encoding format: words, pin, or hex (default: single word).
|
|
85
|
-
* @returns Encoded token string (space-joined words, zero-padded PIN, or hex).
|
|
86
|
-
* @throws {RangeError} If encoding parameters are out of range or bytes are insufficient.
|
|
87
|
-
*/
|
|
88
|
-
export function encodeToken(bytes, encoding = DEFAULT_ENCODING) {
|
|
89
|
-
switch (encoding.format) {
|
|
90
|
-
case 'words':
|
|
91
|
-
return encodeAsWords(bytes, encoding.count ?? 1, encoding.wordlist).join(' ');
|
|
92
|
-
case 'pin':
|
|
93
|
-
return encodeAsPin(bytes, encoding.digits ?? 4);
|
|
94
|
-
case 'hex':
|
|
95
|
-
return encodeAsHex(bytes, encoding.length ?? 8);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
1
|
+
export { encodeAsWords, encodeAsPin, encodeAsHex, encodeToken, DEFAULT_ENCODING, } from 'spoken-token';
|
|
98
2
|
//# sourceMappingURL=encoding.js.map
|
package/dist/encoding.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAChC,gBAAgB,GACrC,MAAM,cAAc,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export { WORDLIST, WORDLIST_SIZE, getWord, indexOf, } from './wordlist.js';
|
|
2
2
|
export { getCounter, counterToBytes, counterFromEventId, DEFAULT_ROTATION_INTERVAL, MAX_COUNTER_OFFSET, } from './counter.js';
|
|
3
|
+
export { encodeAsWords, encodeAsPin, encodeAsHex, encodeToken, type TokenEncoding, DEFAULT_ENCODING, } from './encoding.js';
|
|
4
|
+
export { MAX_TOLERANCE, deriveTokenBytes, deriveToken, deriveDuressTokenBytes, deriveDuressToken, verifyToken, deriveLivenessToken, deriveDirectionalPair, type DirectionalPair, type TokenVerifyResult, type VerifyOptions, } from './token.js';
|
|
3
5
|
export { GROUP_CONTEXT, deriveVerificationWord, deriveVerificationPhrase, deriveDuressWord, deriveDuressPhrase, deriveCurrentWord, } from './derive.js';
|
|
4
6
|
export { verifyWord, type VerifyResult, type VerifyStatus, } from './verify.js';
|
|
5
7
|
export { createGroup, getCurrentWord, getCurrentDuressWord, advanceCounter, reseed, addMember, removeMember, removeMemberAndReseed, syncCounter, dissolveGroup, type GroupConfig, type GroupState, } from './group.js';
|
|
6
8
|
export { PRESETS, type PresetName, type GroupPreset, } from './presets.js';
|
|
7
9
|
export { deriveBeaconKey, deriveDuressKey, encryptBeacon, decryptBeacon, buildDuressAlert, encryptDuressAlert, decryptDuressAlert, type BeaconPayload, type DuressAlert, type DuressLocation, } from './beacon.js';
|
|
8
|
-
export { MAX_TOLERANCE, deriveTokenBytes, deriveToken, deriveDuressTokenBytes, deriveDuressToken, verifyToken, deriveLivenessToken, type TokenVerifyResult, type VerifyOptions, } from './token.js';
|
|
9
|
-
export { encodeAsWords, encodeAsPin, encodeAsHex, encodeToken, type TokenEncoding, DEFAULT_ENCODING, } from './encoding.js';
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,GAC1C,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAC9C,yBAAyB,EAAE,kBAAkB,GAC9C,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EACpD,KAAK,aAAa,EAAE,gBAAgB,GACrC,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,aAAa,EACb,gBAAgB,EAAE,WAAW,EAC7B,sBAAsB,EAAE,iBAAiB,EACzC,WAAW,EAAE,mBAAmB,EAChC,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAAE,KAAK,aAAa,GAC3C,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,aAAa,EACb,sBAAsB,EAAE,wBAAwB,EAChD,gBAAgB,EAAE,kBAAkB,EACpC,iBAAiB,GAClB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,UAAU,EACV,KAAK,YAAY,EAAE,KAAK,YAAY,GACrC,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,WAAW,EAAE,cAAc,EAAE,oBAAoB,EACjD,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAC/C,qBAAqB,EAAE,WAAW,EAAE,aAAa,EACjD,KAAK,WAAW,EAAE,KAAK,UAAU,GAClC,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,GAC3C,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EACxD,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,GAC1D,MAAM,aAAa,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
+
// --- Re-exported from spoken-token (backwards compatibility) ---
|
|
2
3
|
export { WORDLIST, WORDLIST_SIZE, getWord, indexOf, } from './wordlist.js';
|
|
3
4
|
export { getCounter, counterToBytes, counterFromEventId, DEFAULT_ROTATION_INTERVAL, MAX_COUNTER_OFFSET, } from './counter.js';
|
|
5
|
+
export { encodeAsWords, encodeAsPin, encodeAsHex, encodeToken, DEFAULT_ENCODING, } from './encoding.js';
|
|
6
|
+
// --- CANARY Protocol (universal + duress-aware) ---
|
|
7
|
+
export { MAX_TOLERANCE, deriveTokenBytes, deriveToken, deriveDuressTokenBytes, deriveDuressToken, verifyToken, deriveLivenessToken, deriveDirectionalPair, } from './token.js';
|
|
8
|
+
// --- Group layer ---
|
|
4
9
|
export { GROUP_CONTEXT, deriveVerificationWord, deriveVerificationPhrase, deriveDuressWord, deriveDuressPhrase, deriveCurrentWord, } from './derive.js';
|
|
5
10
|
export { verifyWord, } from './verify.js';
|
|
6
11
|
export { createGroup, getCurrentWord, getCurrentDuressWord, advanceCounter, reseed, addMember, removeMember, removeMemberAndReseed, syncCounter, dissolveGroup, } from './group.js';
|
|
7
12
|
export { PRESETS, } from './presets.js';
|
|
13
|
+
// --- Beacon ---
|
|
8
14
|
export { deriveBeaconKey, deriveDuressKey, encryptBeacon, decryptBeacon, buildDuressAlert, encryptDuressAlert, decryptDuressAlert, } from './beacon.js';
|
|
9
|
-
// --- CANARY Protocol (universal API) ---
|
|
10
|
-
export { MAX_TOLERANCE, deriveTokenBytes, deriveToken, deriveDuressTokenBytes, deriveDuressToken, verifyToken, deriveLivenessToken, } from './token.js';
|
|
11
|
-
export { encodeAsWords, encodeAsPin, encodeAsHex, encodeToken, DEFAULT_ENCODING, } from './encoding.js';
|
|
12
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AAEf,kEAAkE;AAClE,OAAO,EACL,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,GAC1C,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAC9C,yBAAyB,EAAE,kBAAkB,GAC9C,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAChC,gBAAgB,GACrC,MAAM,eAAe,CAAA;AAEtB,qDAAqD;AACrD,OAAO,EACL,aAAa,EACb,gBAAgB,EAAE,WAAW,EAC7B,sBAAsB,EAAE,iBAAiB,EACzC,WAAW,EAAE,mBAAmB,EAChC,qBAAqB,GAGtB,MAAM,YAAY,CAAA;AAEnB,sBAAsB;AACtB,OAAO,EACL,aAAa,EACb,sBAAsB,EAAE,wBAAwB,EAChD,gBAAgB,EAAE,kBAAkB,EACpC,iBAAiB,GAClB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,UAAU,GAEX,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,WAAW,EAAE,cAAc,EAAE,oBAAoB,EACjD,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAC/C,qBAAqB,EAAE,WAAW,EAAE,aAAa,GAElD,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,OAAO,GACR,MAAM,cAAc,CAAA;AAErB,iBAAiB;AACjB,OAAO,EACL,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,GAEzD,MAAM,aAAa,CAAA"}
|
package/dist/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/sync.js
CHANGED
|
@@ -182,8 +182,8 @@ export function decodeSyncMessage(payload) {
|
|
|
182
182
|
}
|
|
183
183
|
break;
|
|
184
184
|
case 'counter-advance':
|
|
185
|
-
if (!isNonNegativeInt(parsed.counter)) {
|
|
186
|
-
throw new Error('Invalid sync message: counter-advance requires a non-negative counter');
|
|
185
|
+
if (!isNonNegativeInt(parsed.counter) || parsed.counter > 0xFFFFFFFF) {
|
|
186
|
+
throw new Error('Invalid sync message: counter-advance requires a non-negative counter within uint32 range');
|
|
187
187
|
}
|
|
188
188
|
if (!isNonNegativeInt(parsed.usageOffset)) {
|
|
189
189
|
throw new Error('Invalid sync message: counter-advance requires a non-negative usageOffset');
|
|
@@ -527,6 +527,11 @@ export function applySyncMessage(group, msg, nowSec = Math.floor(Date.now() / 10
|
|
|
527
527
|
// attack surface entirely.
|
|
528
528
|
return group;
|
|
529
529
|
}
|
|
530
|
+
case 'duress-clear': {
|
|
531
|
+
// Consume opId to prevent replay (duress-clear is safety-critical)
|
|
532
|
+
const ops = appendConsumedOp(group.consumedOps, msg.opId, msg.timestamp, group.consumedOpsFloor);
|
|
533
|
+
return { ...group, ...ops };
|
|
534
|
+
}
|
|
530
535
|
case 'beacon':
|
|
531
536
|
case 'duress-alert':
|
|
532
537
|
case 'liveness-checkin':
|
package/dist/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAE3C,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAExH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAmBpD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS;IAClC,aAAa,EAAE,cAAc,EAAE,iBAAiB;IAChD,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB;CACzF,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAS;IAClD,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ;IAC1D,gBAAgB,EAAE,cAAc,EAAE,cAAc;CACjD,CAAC,CAAA;AAEF,kFAAkF;AAClF,MAAM,SAAS,GAAG,gBAAgB,CAAA;AAClC,MAAM,0BAA0B,GAAG,GAAG,CAAA;AACtC,MAAM,WAAW,GAAG,GAAG,CAAA;AACvB,MAAM,0BAA0B,GAAG,UAAU,CAAA;AAC7C,MAAM,cAAc,GAAG,GAAG,CAAA;AAE1B,qFAAqF;AACrF,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAA;AAEhD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAA;AAErC,uEAAuE;AACvE,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAO7B,SAAS,gBAAgB,CAAC,GAAa,EAAE,IAAY,EAAE,SAAiB,EAAE,YAAqB;IAC7F,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAA;IAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QACnC,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC;YAC1C,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,EAAE,SAAS,CAAC;SACzD,CAAA;IACH,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAA;AAC9D,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAA;AAEjC,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC5D,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AACvE,CAAC;AAED,iEAAiE;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAgB;IAChD,MAAM,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAA;IAC/D,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,SAAqD,CAAA;QACtF,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;AAClC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAA;IACxD,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACzF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IACzD,CAAC;IACD,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;IACzF,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,KAAgC,CAAA;QAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QACpC,MAAM,KAAK,GAAG,IAAI;aACf,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;aACjC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9D,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IACpC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,KAAK,EAAE,CAAC,CAAA;AACtE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAgB;IACtD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAA;QAC7B,OAAO,eAAe,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7D,CAAC;IACD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,IAAI,MAA+B,CAAA;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAA;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;IACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,4BAA4B;IAC5B,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAA;IAC3B,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;IAED,8DAA8D;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAA;IACtC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACtE,CAAC;IACD,IAAI,OAAO,KAAK,gBAAgB,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,gBAAgB,GAAG,CAAC,CAAA;IAC7G,CAAC;IAED,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa;YAChB,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;YACpF,CAAC;YACD,iEAAiE;YACjE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;YACpF,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAA;YAChG,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACrC,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBAC9E,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;gBAC7G,CAAC;YACH,CAAC;YACD,MAAK;QAEP,KAAK,cAAc;YACjB,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;YACrF,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;YACrF,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;YACjG,CAAC;YACD,MAAK;QAEP,KAAK,kBAAkB;YACrB,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;YACzF,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAA;YACrG,CAAC;YACD,MAAK;QAEP,KAAK,iBAAiB;YACpB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;YAC9F,CAAC;YACD,MAAK;QAEP,KAAK,QAAQ;YACX,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;YACnF,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;YACjF,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;YAC/E,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;YAC3F,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtH,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;YACpF,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxH,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;YACrF,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,2DAA2D,WAAW,EAAE,CAAC,CAAA;YAC3F,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CAAC,0DAA0D,WAAW,EAAE,CAAC,CAAA;YAC1F,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;gBAC3E,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI;gBACtC,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAmB,CAAC;gBAChF,eAAe,EAAE,gBAAgB;aAClC,CAAA;QAEH,KAAK,QAAQ;YACX,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;YAC9E,CAAC;YACD,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;gBACjF,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;YACtE,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,GAAG,0BAA0B,EAAE,CAAC;gBAC5G,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;YAClF,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;YAC3F,CAAC;YACD,MAAK;QAEP,KAAK,cAAc;YACjB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;YACpF,CAAC;YACD,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;gBACjF,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;YAC5E,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;YACjG,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC;gBACnH,MAAM,IAAI,KAAK,CAAC,0EAA0E,cAAc,aAAa,CAAC,CAAA;YACxH,CAAC;YACD,MAAK;QAEP,KAAK,cAAc;YACjB,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;YACpF,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,wEAAwE,cAAc,aAAa,CAAC,CAAA;YACtH,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;YACjG,CAAC;YACD,MAAK;QAEP,KAAK,gBAAgB;YACnB,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;YACrF,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;YACzF,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAA;YAC7F,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxH,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAA;YAC7F,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtH,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAA;YAC5F,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,mEAAmE,WAAW,EAAE,CAAC,CAAA;YACnG,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CAAC,kEAAkE,WAAW,EAAE,CAAC,CAAA;YAClG,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;YACvF,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAA;YACnG,CAAC;YACD,2DAA2D;YAC3D,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBACvC,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;oBACtF,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAA;gBACpG,CAAC;YACH,CAAC;YACD,MAAK;IACT,CAAC;IAED,OAAO,MAAqB,CAAA;AAC9B,CAAC;AAED,iEAAiE;AAEjE;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,GAAgB,EAAE,MAAe;IAC3D,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACtC,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAA;IAC9C,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IACpE,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IACrE,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAiB,EACjB,GAAgB,EAChB,SAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAC9C,MAAe;IAEf,8DAA8D;IAC9D,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QACpC,oDAAoD;QACpD,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;QAEzB,+BAA+B;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAA;QAEhD,MAAM,QAAQ,GAAI,GAA0B,CAAC,KAAK,CAAA;QAClD,MAAM,OAAO,GAAI,GAAyB,CAAC,IAAI,CAAA;QAE/C,gDAAgD;QAChD,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QAEjE,yBAAyB;QACzB,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;QAExC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,oDAAoD;YACpD,IAAI,QAAQ,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAA;YAE9C,2CAA2C;YAC3C,MAAM,SAAS,GAAG,GAAgD,CAAA;YAClE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAA;YAEzD,2BAA2B;YAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YAC5C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAA;QAClE,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACzC,sFAAsF;YACtF,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAA;YAExC,yCAAyC;YACzC,MAAM,OAAO,GAAG,GAAgD,CAAA;YAChE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAA;YAErD,2BAA2B;YAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAC1C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAA;QAChE,CAAC;aAAM,CAAC;YACN,mEAAmE;YACnE,IAAI,QAAQ,KAAK,KAAK,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAA;QAC5C,CAAC;QAED,iDAAiD;QACjD,yFAAyF;QACzF,kGAAkG;QAClG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,gBAAgB,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACxF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YAC9C,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,OAAO,KAAK,CAAA;YAE1C,8EAA8E;YAC9E,8DAA8D;YAC9D,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,gBAAgB;gBAAE,OAAO,KAAK,CAAA;QACnG,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,8EAA8E;IAC9E,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC3H,MAAM,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC,SAAS,CAAA;QACtC,IAAI,OAAO,GAAG,6BAA6B;YAAE,OAAO,KAAK,CAAA,CAAG,QAAQ;QACpE,IAAI,OAAO,GAAG,CAAC,mBAAmB;YAAE,OAAO,KAAK,CAAA,CAAa,wBAAwB;IACvF,CAAC;IAED,4EAA4E;IAC5E,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,IAAI,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAA;IAEpF,oFAAoF;IACpF,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QACnI,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAC9C,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAA;QAC3C,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAO,KAAK,CAAA;IACnG,CAAC;IAED,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,IAAI,OAAmB,CAAA;YACvB,IAAI,CAAC;gBACH,OAAO,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;YACxC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAA,CAAC,2DAA2D;YAC1E,CAAC;YACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAA;YAClG,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW;gBAC3B,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,GAAI,OAA8C,CAAC,WAAiD,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE;gBAC1J,CAAC,CAAC,EAAE,CAAA;YACN,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAA;QACzC,CAAC;QAED,KAAK,cAAc;YACjB,0EAA0E;YAC1E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO,KAAK,CAAA;YACrD,CAAC;gBACC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;gBAC/C,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAA;gBAClG,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,EAAE,CAAA;YAC/B,CAAC;QAEH,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,uEAAuE;YACvE,2EAA2E;YAC3E,EAAE;YACF,kCAAkC;YAClC,yEAAyE;YACzE,0EAA0E;YAC1E,gEAAgE;YAChE,uEAAuE;YACvE,wEAAwE;YACxE,uEAAuE;YACvE,0EAA0E;YAC1E,sDAAsD;YACtD,kEAAkE;YAClE,EAAE;YACF,sEAAsE;YAEtE,8CAA8C;YAC9C,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,KAAK,CAAA;YAE5D,0DAA0D;YAC1D,IAAI,GAAG,CAAC,WAAW,GAAG,0BAA0B;gBAAE,OAAO,KAAK,CAAA;YAE9D,yCAAyC;YACzC,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,WAAW,CAAA;YAC1D,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,WAAW,CAAA;YACvD,IAAI,iBAAiB,IAAI,gBAAgB;gBAAE,OAAO,KAAK,CAAA;YAEvD,iFAAiF;YACjF,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAA;YACpE,MAAM,mBAAmB,GAAG,gBAAgB,GAAG,0BAA0B,CAAA;YACzE,IAAI,iBAAiB,GAAG,mBAAmB;gBAAE,OAAO,KAAK,CAAA;YAEzD,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAA;QACzE,CAAC;QAED,KAAK,QAAQ;YACX,+EAA+E;YAC/E,OAAO;gBACL,GAAG,KAAK;gBACR,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;gBACzB,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;gBACvB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;aACxB,CAAA;QAEH,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,sEAAsE;YACtE,EAAE;YACF,sDAAsD;YACtD,0EAA0E;YAC1E,0EAA0E;YAC1E,4EAA4E;YAC5E,gDAAgD;YAChD,+DAA+D;YAC/D,+EAA+E;YAC/E,6EAA6E;YAC7E,4EAA4E;YAC5E,oDAAoD;YACpD,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC9B,uDAAuD;gBACvD,yCAAyC;gBACzC,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;oBAAE,OAAO,KAAK,CAAA;gBACzC,qCAAqC;gBACrC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,WAAW,CAAA;gBACxD,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,WAAW,CAAA;gBACvD,IAAI,iBAAiB,GAAG,cAAc;oBAAE,OAAO,KAAK,CAAA;gBACpD,uFAAuF;gBACvF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAA;gBACpE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAA;gBAClE,+DAA+D;gBAC/D,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAA;gBACpG,OAAO;oBACL,GAAG,KAAK;oBACR,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;oBACzB,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;oBACvB,GAAG,OAAO;iBACX,CAAA;YACH,CAAC;YACD,wCAAwC;YACxC,gEAAgE;YAChE,6DAA6D;YAC7D,2BAA2B;YAC3B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,KAAK,QAAQ,CAAC;QACd,KAAK,cAAc,CAAC;QACpB,KAAK,kBAAkB;YACrB,OAAO,KAAK,CAAA;QAEd;YACE,OAAO,KAAK,CAAA;IAChB,CAAC;AACH,CAAC;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAiB,EACjB,GAAgB,EAChB,SAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAC9C,MAAe;IAEf,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3D,qEAAqE;IACrE,wEAAwE;IACxE,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC5F,MAAM,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC,SAAS,CAAA;QACtC,MAAM,KAAK,GAAG,OAAO,IAAI,6BAA6B,IAAI,OAAO,IAAI,CAAC,mBAAmB,CAAA;QACzF,6DAA6D;QAC7D,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAA;QACvF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,CAAA;IACzD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,KAAK,EAAE,CAAA;AACrD,CAAC"}
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/token.d.ts
CHANGED
|
@@ -1,51 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* Prevents pathological iteration: at MAX_TOLERANCE=10, the collision
|
|
5
|
-
* avoidance window is ±20 counters (41 iterations) — well within reason.
|
|
6
|
-
*/
|
|
7
|
-
export declare const MAX_TOLERANCE = 10;
|
|
8
|
-
/**
|
|
9
|
-
* CANARY-DERIVE: Derive raw token bytes from a shared secret, context, and counter.
|
|
10
|
-
*
|
|
11
|
-
* When `identity` is omitted, derives a group-wide token:
|
|
12
|
-
* HMAC-SHA256(secret, utf8(context) || counter_be32)
|
|
13
|
-
*
|
|
14
|
-
* When `identity` is provided, derives a per-member token:
|
|
15
|
-
* HMAC-SHA256(secret, utf8(context) || 0x00 || utf8(identity) || counter_be32)
|
|
16
|
-
*
|
|
17
|
-
* The null-byte separator prevents concatenation ambiguity between context and identity.
|
|
18
|
-
*
|
|
19
|
-
* @param secret - Shared secret (hex string or Uint8Array, minimum 16 bytes).
|
|
20
|
-
* @param context - Context string for domain separation (e.g. `'canary:group'`).
|
|
21
|
-
* @param counter - Time-based or usage counter (uint32).
|
|
22
|
-
* @param identity - Optional member pubkey for per-member tokens.
|
|
23
|
-
* @returns Raw 32-byte HMAC-SHA256 digest.
|
|
24
|
-
* @throws {RangeError} If secret is too short or counter is out of range.
|
|
25
|
-
* @throws {Error} If identity is provided but empty.
|
|
26
|
-
*/
|
|
27
|
-
export declare function deriveTokenBytes(secret: Uint8Array | string, context: string, counter: number, identity?: string): Uint8Array;
|
|
28
|
-
/**
|
|
29
|
-
* CANARY-DERIVE: Derive an encoded token string.
|
|
30
|
-
*
|
|
31
|
-
* When `identity` is provided, produces a per-member token unique to that member.
|
|
32
|
-
* When omitted, produces the group-wide token (backwards-compatible).
|
|
33
|
-
*
|
|
34
|
-
* @param secret - Shared secret (hex string or Uint8Array, minimum 16 bytes).
|
|
35
|
-
* @param context - Context string for domain separation (e.g. `'canary:group'`).
|
|
36
|
-
* @param counter - Time-based or usage counter (uint32).
|
|
37
|
-
* @param encoding - Output encoding format (default: single word from en-v1 wordlist).
|
|
38
|
-
* @param identity - Optional member pubkey for per-member tokens.
|
|
39
|
-
* @returns Encoded token string (word, PIN, or hex depending on encoding).
|
|
40
|
-
* @throws {RangeError} If secret is too short or counter is out of range.
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```ts
|
|
44
|
-
* deriveToken(seedHex, 'canary:group', 42) // "falcon"
|
|
45
|
-
* deriveToken(seedHex, 'canary:group', 42, { format: 'pin', digits: 6 }) // "083721"
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
export declare function deriveToken(secret: Uint8Array | string, context: string, counter: number, encoding?: TokenEncoding, identity?: string): string;
|
|
1
|
+
export { deriveTokenBytes, deriveToken, deriveDirectionalPair, type DirectionalPair } from 'spoken-token';
|
|
2
|
+
export { MAX_TOLERANCE } from 'spoken-token';
|
|
3
|
+
import { type TokenEncoding } from 'spoken-token';
|
|
49
4
|
/**
|
|
50
5
|
* CANARY-DURESS: Derive raw duress token bytes for a specific identity.
|
|
51
6
|
*
|
|
@@ -71,8 +26,7 @@ export declare function deriveDuressTokenBytes(secret: Uint8Array | string, cont
|
|
|
71
26
|
* If the duress token collides with any normal verification token within
|
|
72
27
|
* ±(2 × maxTolerance) counter values (at the encoding level), re-derives with
|
|
73
28
|
* incrementing suffix bytes (0x01, 0x02, ..., 0xFF) until distinct.
|
|
74
|
-
* The 2× factor accounts for worst-case counter drift
|
|
75
|
-
* may each be off by maxTolerance in opposite directions.
|
|
29
|
+
* The 2× factor accounts for worst-case counter drift between deriver and verifier.
|
|
76
30
|
* If all 255 suffixes collide (astronomically unlikely), throws an error
|
|
77
31
|
* rather than failing open.
|
|
78
32
|
*
|
|
@@ -162,25 +116,4 @@ export declare function verifyToken(secret: Uint8Array | string, context: string
|
|
|
162
116
|
* @throws {RangeError} If secret is too short or counter is out of range.
|
|
163
117
|
*/
|
|
164
118
|
export declare function deriveLivenessToken(secret: Uint8Array | string, context: string, identity: string, counter: number): Uint8Array;
|
|
165
|
-
/** A pair of directional tokens keyed by role name. */
|
|
166
|
-
export interface DirectionalPair {
|
|
167
|
-
[role: string]: string;
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Derive a directional pair: two distinct tokens from the same secret,
|
|
171
|
-
* one per role. Each token uses context = `${namespace}\0${role}`.
|
|
172
|
-
*
|
|
173
|
-
* Neither token can be derived from the other without the shared secret.
|
|
174
|
-
* This prevents the "echo problem" where the second speaker could parrot
|
|
175
|
-
* the first.
|
|
176
|
-
*
|
|
177
|
-
* @param secret - Shared secret (hex string or Uint8Array).
|
|
178
|
-
* @param namespace - Namespace prefix (e.g. `'aviva'`, `'dispatch'`).
|
|
179
|
-
* @param roles - Exactly two role names (e.g. `['caller', 'agent']`).
|
|
180
|
-
* @param counter - Current counter value.
|
|
181
|
-
* @param encoding - Output encoding format (default: single word).
|
|
182
|
-
* @returns Object keyed by role name, each value is the role's token string.
|
|
183
|
-
* @throws {Error} If roles does not contain exactly 2 entries, or roles are identical.
|
|
184
|
-
*/
|
|
185
|
-
export declare function deriveDirectionalPair(secret: Uint8Array | string, namespace: string, roles: [string, string], counter: number, encoding?: TokenEncoding): DirectionalPair;
|
|
186
119
|
//# sourceMappingURL=token.d.ts.map
|
package/dist/token.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAA;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,cAAc,CAAA;AAmCrB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,UAAU,CAIZ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,YAAmB,EAC1C,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,MAAM,CA6CR;AAED,mCAAmC;AACnC,MAAM,WAAW,iBAAiB;IAChC,+FAA+F;IAC/F,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAA;IACtC,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,sCAAsC;AACtC,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,iBAAiB,CAsEnB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,UAAU,CAIZ"}
|
package/dist/token.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* Prevents pathological iteration: at MAX_TOLERANCE=10, the collision
|
|
6
|
-
* avoidance window is ±20 counters (41 iterations) — well within reason.
|
|
7
|
-
*/
|
|
8
|
-
export const MAX_TOLERANCE = 10;
|
|
1
|
+
// Re-export generic functions from spoken-token
|
|
2
|
+
export { deriveTokenBytes, deriveToken, deriveDirectionalPair } from 'spoken-token';
|
|
3
|
+
export { MAX_TOLERANCE } from 'spoken-token';
|
|
4
|
+
import { hmacSha256, hexToBytes, concatBytes, timingSafeStringEqual, deriveToken as _deriveToken, encodeToken, DEFAULT_ENCODING, } from 'spoken-token';
|
|
9
5
|
const encoder = new TextEncoder();
|
|
10
6
|
function utf8(str) {
|
|
11
7
|
return encoder.encode(str);
|
|
@@ -33,59 +29,6 @@ function normaliseSecret(secret) {
|
|
|
33
29
|
}
|
|
34
30
|
return key;
|
|
35
31
|
}
|
|
36
|
-
/**
|
|
37
|
-
* CANARY-DERIVE: Derive raw token bytes from a shared secret, context, and counter.
|
|
38
|
-
*
|
|
39
|
-
* When `identity` is omitted, derives a group-wide token:
|
|
40
|
-
* HMAC-SHA256(secret, utf8(context) || counter_be32)
|
|
41
|
-
*
|
|
42
|
-
* When `identity` is provided, derives a per-member token:
|
|
43
|
-
* HMAC-SHA256(secret, utf8(context) || 0x00 || utf8(identity) || counter_be32)
|
|
44
|
-
*
|
|
45
|
-
* The null-byte separator prevents concatenation ambiguity between context and identity.
|
|
46
|
-
*
|
|
47
|
-
* @param secret - Shared secret (hex string or Uint8Array, minimum 16 bytes).
|
|
48
|
-
* @param context - Context string for domain separation (e.g. `'canary:group'`).
|
|
49
|
-
* @param counter - Time-based or usage counter (uint32).
|
|
50
|
-
* @param identity - Optional member pubkey for per-member tokens.
|
|
51
|
-
* @returns Raw 32-byte HMAC-SHA256 digest.
|
|
52
|
-
* @throws {RangeError} If secret is too short or counter is out of range.
|
|
53
|
-
* @throws {Error} If identity is provided but empty.
|
|
54
|
-
*/
|
|
55
|
-
export function deriveTokenBytes(secret, context, counter, identity) {
|
|
56
|
-
if (identity !== undefined && identity === '') {
|
|
57
|
-
throw new Error('identity must be non-empty when provided');
|
|
58
|
-
}
|
|
59
|
-
const key = normaliseSecret(secret);
|
|
60
|
-
const data = identity
|
|
61
|
-
? concatBytes(utf8(context), new Uint8Array([0x00]), utf8(identity), counterBe32(counter))
|
|
62
|
-
: concatBytes(utf8(context), counterBe32(counter));
|
|
63
|
-
return hmacSha256(key, data);
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* CANARY-DERIVE: Derive an encoded token string.
|
|
67
|
-
*
|
|
68
|
-
* When `identity` is provided, produces a per-member token unique to that member.
|
|
69
|
-
* When omitted, produces the group-wide token (backwards-compatible).
|
|
70
|
-
*
|
|
71
|
-
* @param secret - Shared secret (hex string or Uint8Array, minimum 16 bytes).
|
|
72
|
-
* @param context - Context string for domain separation (e.g. `'canary:group'`).
|
|
73
|
-
* @param counter - Time-based or usage counter (uint32).
|
|
74
|
-
* @param encoding - Output encoding format (default: single word from en-v1 wordlist).
|
|
75
|
-
* @param identity - Optional member pubkey for per-member tokens.
|
|
76
|
-
* @returns Encoded token string (word, PIN, or hex depending on encoding).
|
|
77
|
-
* @throws {RangeError} If secret is too short or counter is out of range.
|
|
78
|
-
*
|
|
79
|
-
* @example
|
|
80
|
-
* ```ts
|
|
81
|
-
* deriveToken(seedHex, 'canary:group', 42) // "falcon"
|
|
82
|
-
* deriveToken(seedHex, 'canary:group', 42, { format: 'pin', digits: 6 }) // "083721"
|
|
83
|
-
* ```
|
|
84
|
-
*/
|
|
85
|
-
export function deriveToken(secret, context, counter, encoding = DEFAULT_ENCODING, identity) {
|
|
86
|
-
const bytes = deriveTokenBytes(secret, context, counter, identity);
|
|
87
|
-
return encodeToken(bytes, encoding);
|
|
88
|
-
}
|
|
89
32
|
/**
|
|
90
33
|
* CANARY-DURESS: Derive raw duress token bytes for a specific identity.
|
|
91
34
|
*
|
|
@@ -115,8 +58,7 @@ export function deriveDuressTokenBytes(secret, context, identity, counter) {
|
|
|
115
58
|
* If the duress token collides with any normal verification token within
|
|
116
59
|
* ±(2 × maxTolerance) counter values (at the encoding level), re-derives with
|
|
117
60
|
* incrementing suffix bytes (0x01, 0x02, ..., 0xFF) until distinct.
|
|
118
|
-
* The 2× factor accounts for worst-case counter drift
|
|
119
|
-
* may each be off by maxTolerance in opposite directions.
|
|
61
|
+
* The 2× factor accounts for worst-case counter drift between deriver and verifier.
|
|
120
62
|
* If all 255 suffixes collide (astronomically unlikely), throws an error
|
|
121
63
|
* rather than failing open.
|
|
122
64
|
*
|
|
@@ -141,11 +83,13 @@ export function deriveDuressTokenBytes(secret, context, identity, counter) {
|
|
|
141
83
|
* @throws {Error} If collision avoidance fails after 255 retries.
|
|
142
84
|
*/
|
|
143
85
|
export function deriveDuressToken(secret, context, identity, counter, encoding = DEFAULT_ENCODING, maxTolerance, identities) {
|
|
86
|
+
// Import MAX_TOLERANCE value directly to avoid circular reference with the re-export
|
|
87
|
+
const MAX_TOLERANCE_VAL = 10;
|
|
144
88
|
if (!Number.isInteger(maxTolerance) || maxTolerance < 0) {
|
|
145
89
|
throw new RangeError('maxTolerance must be a non-negative integer');
|
|
146
90
|
}
|
|
147
|
-
if (maxTolerance >
|
|
148
|
-
throw new RangeError(`maxTolerance must be <= ${
|
|
91
|
+
if (maxTolerance > MAX_TOLERANCE_VAL) {
|
|
92
|
+
throw new RangeError(`maxTolerance must be <= ${MAX_TOLERANCE_VAL}, got ${maxTolerance}`);
|
|
149
93
|
}
|
|
150
94
|
// Collect normal tokens within ±(2 × maxTolerance) for cross-counter collision avoidance.
|
|
151
95
|
// The 2× window accounts for worst-case counter drift between deriver and verifier.
|
|
@@ -155,11 +99,11 @@ export function deriveDuressToken(secret, context, identity, counter, encoding =
|
|
|
155
99
|
const hi = Math.min(0xFFFFFFFF, counter + window);
|
|
156
100
|
for (let c = lo; c <= hi; c++) {
|
|
157
101
|
// Group-wide (anonymous) token
|
|
158
|
-
forbidden.add(
|
|
102
|
+
forbidden.add(_deriveToken(secret, context, c, encoding));
|
|
159
103
|
// Per-member tokens for all known identities
|
|
160
104
|
if (identities) {
|
|
161
105
|
for (const id of identities) {
|
|
162
|
-
forbidden.add(
|
|
106
|
+
forbidden.add(_deriveToken(secret, context, c, encoding, id));
|
|
163
107
|
}
|
|
164
108
|
}
|
|
165
109
|
}
|
|
@@ -211,13 +155,14 @@ export function deriveDuressToken(secret, context, identity, counter, encoding =
|
|
|
211
155
|
* ```
|
|
212
156
|
*/
|
|
213
157
|
export function verifyToken(secret, context, counter, input, identities, options) {
|
|
158
|
+
const MAX_TOLERANCE_VAL = 10;
|
|
214
159
|
const encoding = options?.encoding ?? DEFAULT_ENCODING;
|
|
215
160
|
const tolerance = options?.tolerance ?? 0;
|
|
216
161
|
if (!Number.isInteger(tolerance) || tolerance < 0) {
|
|
217
162
|
throw new RangeError('Tolerance must be a non-negative integer');
|
|
218
163
|
}
|
|
219
|
-
if (tolerance >
|
|
220
|
-
throw new RangeError(`Tolerance must be <= ${
|
|
164
|
+
if (tolerance > MAX_TOLERANCE_VAL) {
|
|
165
|
+
throw new RangeError(`Tolerance must be <= ${MAX_TOLERANCE_VAL}, got ${tolerance}`);
|
|
221
166
|
}
|
|
222
167
|
if (identities.length > MAX_MEMBERS) {
|
|
223
168
|
throw new RangeError(`identities array must not exceed ${MAX_MEMBERS} entries, got ${identities.length}`);
|
|
@@ -232,7 +177,7 @@ export function verifyToken(secret, context, counter, input, identities, options
|
|
|
232
177
|
// 1. Check per-member tokens at exact counter (each member has a unique word)
|
|
233
178
|
let exactMember = null;
|
|
234
179
|
for (const identity of identities) {
|
|
235
|
-
if (timingSafeStringEqual(normalised,
|
|
180
|
+
if (timingSafeStringEqual(normalised, _deriveToken(secret, context, counter, encoding, identity))) {
|
|
236
181
|
exactMember = identity;
|
|
237
182
|
}
|
|
238
183
|
}
|
|
@@ -254,7 +199,7 @@ export function verifyToken(secret, context, counter, input, identities, options
|
|
|
254
199
|
for (let c = lo; c <= hi; c++) {
|
|
255
200
|
if (c === counter)
|
|
256
201
|
continue; // already checked in step 1
|
|
257
|
-
if (timingSafeStringEqual(normalised,
|
|
202
|
+
if (timingSafeStringEqual(normalised, _deriveToken(secret, context, c, encoding, identity))) {
|
|
258
203
|
toleranceMember = identity;
|
|
259
204
|
}
|
|
260
205
|
}
|
|
@@ -262,7 +207,7 @@ export function verifyToken(secret, context, counter, input, identities, options
|
|
|
262
207
|
// 4. Also check group-wide token (backwards compat for anonymous verification)
|
|
263
208
|
let groupMatch = false;
|
|
264
209
|
for (let c = lo; c <= hi; c++) {
|
|
265
|
-
if (timingSafeStringEqual(normalised,
|
|
210
|
+
if (timingSafeStringEqual(normalised, _deriveToken(secret, context, c, encoding))) {
|
|
266
211
|
groupMatch = true;
|
|
267
212
|
}
|
|
268
213
|
}
|
|
@@ -302,43 +247,4 @@ export function deriveLivenessToken(secret, context, identity, counter) {
|
|
|
302
247
|
const data = concatBytes(utf8(context + ':alive'), new Uint8Array([0x00]), utf8(identity), counterBe32(counter));
|
|
303
248
|
return hmacSha256(key, data);
|
|
304
249
|
}
|
|
305
|
-
/**
|
|
306
|
-
* Derive a directional pair: two distinct tokens from the same secret,
|
|
307
|
-
* one per role. Each token uses context = `${namespace}\0${role}`.
|
|
308
|
-
*
|
|
309
|
-
* Neither token can be derived from the other without the shared secret.
|
|
310
|
-
* This prevents the "echo problem" where the second speaker could parrot
|
|
311
|
-
* the first.
|
|
312
|
-
*
|
|
313
|
-
* @param secret - Shared secret (hex string or Uint8Array).
|
|
314
|
-
* @param namespace - Namespace prefix (e.g. `'aviva'`, `'dispatch'`).
|
|
315
|
-
* @param roles - Exactly two role names (e.g. `['caller', 'agent']`).
|
|
316
|
-
* @param counter - Current counter value.
|
|
317
|
-
* @param encoding - Output encoding format (default: single word).
|
|
318
|
-
* @returns Object keyed by role name, each value is the role's token string.
|
|
319
|
-
* @throws {Error} If roles does not contain exactly 2 entries, or roles are identical.
|
|
320
|
-
*/
|
|
321
|
-
export function deriveDirectionalPair(secret, namespace, roles, counter, encoding = DEFAULT_ENCODING) {
|
|
322
|
-
if (!namespace) {
|
|
323
|
-
throw new Error('namespace must be a non-empty string');
|
|
324
|
-
}
|
|
325
|
-
if (namespace.includes('\0')) {
|
|
326
|
-
throw new Error('namespace must not contain null bytes');
|
|
327
|
-
}
|
|
328
|
-
if (!roles[0] || !roles[1]) {
|
|
329
|
-
throw new Error('Both roles must be non-empty strings');
|
|
330
|
-
}
|
|
331
|
-
if (roles[0].includes('\0') || roles[1].includes('\0')) {
|
|
332
|
-
throw new Error('Roles must not contain null bytes');
|
|
333
|
-
}
|
|
334
|
-
if (roles[0] === roles[1]) {
|
|
335
|
-
throw new Error(`Roles must be distinct, got ["${roles[0]}", "${roles[1]}"]`);
|
|
336
|
-
}
|
|
337
|
-
// Use null-byte separator to prevent concatenation ambiguity
|
|
338
|
-
// (e.g. namespace "a:b" + role "c" vs namespace "a" + role "b:c")
|
|
339
|
-
return {
|
|
340
|
-
[roles[0]]: deriveToken(secret, `${namespace}\0${roles[0]}`, counter, encoding),
|
|
341
|
-
[roles[1]]: deriveToken(secret, `${namespace}\0${roles[1]}`, counter, encoding),
|
|
342
|
-
};
|
|
343
|
-
}
|
|
344
250
|
//# sourceMappingURL=token.js.map
|