@cardanowall/poe-standard 0.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/schema.ts","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/constants.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/tag.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/box.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/utils.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/typeEncoderMap.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/sorts.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/writer.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/float.js","../../../node_modules/.pnpm/@cto.af+wtf8@0.0.5/node_modules/@cto.af/wtf8/lib/errors.js","../../../node_modules/.pnpm/@cto.af+wtf8@0.0.5/node_modules/@cto.af/wtf8/lib/const.js","../../../node_modules/.pnpm/@cto.af+wtf8@0.0.5/node_modules/@cto.af/wtf8/lib/decode.js","../../../node_modules/.pnpm/@cto.af+wtf8@0.0.5/node_modules/@cto.af/wtf8/lib/encode.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/encoder.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/options.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/simple.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/decodeStream.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/container.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/diagnostic.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/comment.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/types.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/decoder.js","../../../node_modules/.pnpm/cbor2@2.3.0/node_modules/cbor2/lib/index.js","../../crypto-core/src/cbor/errors.ts","../../crypto-core/src/cbor/canonical.ts","../src/encoder.ts","../../../node_modules/.pnpm/@noble+ed25519@3.1.0/node_modules/@noble/ed25519/index.js","../../crypto-core/src/sig/ed25519.ts","../../crypto-core/src/cose/errors.ts","../../crypto-core/src/cose/sign1.ts","../src/chunked.ts","../src/error-codes.ts","../src/validator.ts"],"names":["z","b","s","n","k","o","e","t","f","r","a","A","d","u","c","l","I","g","p","S","x","U","h","B","F","y","N","m","O","Z","R","v","T","H","$","w","L","q","E","_","hashes","isBytes","abytes","C","M","X","Y","y2","X2","Y2","Z2","G","x2","b2","b4","v3","CanonicalCborError","decodeCanonicalCbor","mapDecodeError","UTF8_ENCODER","issue","j"],"mappings":"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","file":"index.cjs","sourcesContent":["// CIP-309 v1 PoE record Zod schemas.\n//\n// Scope: structural shape gate. The schema enforces per-field types, length\n// bounds (chunk size, digest length, supersedes length, nonce length,\n// passphrase salt length), closed-map invariants (`sigs[i]`, `slot`,\n// `passphrase`, `merkle[i]`), and the `v == 1` literal. Cross-field rules\n// (item.hashes content-hash binding when `enc` present, slots/passphrase\n// exclusivity, `crit[]` shape, registry membership of algorithm\n// identifiers, COSE_Sign1 structural decode, URI per-scheme shape rules)\n// fire in `validator.ts` so the validator can emit the precise structural\n// codes (`UNSUPPORTED_*_ALG`, `ENC_*`, `SIG_*`, `INVALID_URI`,\n// `CRIT_SHAPE_INVALID`, …) rather than a generic schema-mismatch.\n//\n// Refinements that DO live in the schema (because the validator's domain\n// pass lifts these as `SCHEMA_*` / `*_LENGTH_MISMATCH` codes directly):\n// - chunk size `[1, 64]` → `CHUNK_TOO_LARGE`\n// - 32-byte digest / 32-byte root / 32-byte supersedes → `HASH_DIGEST_LENGTH_MISMATCH`\n// / `SUPERSEDES_TX_INVALID_LENGTH`\n// - 24-byte nonce / 32-byte slots_mac →\n// `NONCE_LENGTH_MISMATCH` / `ENC_SLOTS_MAC_INVALID_LENGTH`\n// - passphrase salt 16..64 bytes → `ENC_PASSPHRASE_SALT_TOO_SHORT` /\n// `ENC_PASSPHRASE_SALT_TOO_LONG`\n//\n// Per-slot recipient lengths (`epk`, `kem_ct`, `wrap`) are NOT enforced here:\n// the required slot shape depends on the envelope-level `kem`, which a slot\n// cannot see in isolation. The KEM-driven slot descriptor in `validator.ts`\n// emits the precise `KEM_EPK_LENGTH_MISMATCH` / `KEM_CT_LENGTH_MISMATCH` /\n// `WRAP_LENGTH_MISMATCH` / `ENC_SLOT_INVALID_SHAPE` codes instead.\n\nimport { z } from 'zod';\n\n// =============================================================================\n// Chunked-bytes / chunked-text arrays\n// =============================================================================\n\n// `[1* bstr .size (1..64)]`. A zero-length chunk (0 < 1) is rejected with the\n// SAME `CHUNK_TOO_LARGE` code as oversized chunks (any length outside\n// `[1, 64]`).\nexport const ChunkedBytesArraySchema = z\n .array(\n z.instanceof(Uint8Array).refine((b) => b.length >= 1 && b.length <= 64, {\n params: { code: 'CHUNK_TOO_LARGE' },\n }),\n )\n .min(1);\nexport type ChunkedBytesArray = z.infer<typeof ChunkedBytesArraySchema>;\n\n// `[1* tstr .size (1..64)]` — chunk byte length is the UTF-8-encoded length\n// (each `tstr` is wire-encoded as UTF-8). The `tstr .size (1..64)` pin is a\n// byte-count constraint, not a code-unit constraint.\nconst UTF8_ENCODER = new TextEncoder();\nexport const UriChunkArraySchema = z\n .array(\n z.string().refine(\n (s) => {\n const n = UTF8_ENCODER.encode(s).length;\n return n >= 1 && n <= 64;\n },\n { params: { code: 'CHUNK_TOO_LARGE' } },\n ),\n )\n .min(1);\nexport type UriChunkArray = z.infer<typeof UriChunkArraySchema>;\n\n// =============================================================================\n// Hashes map\n// =============================================================================\n//\n// `hashes` is a non-empty CBOR map keyed by content-hash algorithm identifier\n// (a CBOR text string from the content-hash registry) with the 32-byte digest\n// as value. cbor2 surfaces a text-keyed CBOR map as a plain JS object — z.record\n// admits any string key here. Both the registry-membership check\n// (`UNSUPPORTED_HASH_ALG`) and the per-algorithm digest-length check\n// (`HASH_DIGEST_LENGTH_MISMATCH`) live in the validator's domain pass so\n// each violation emits its precise code; the schema only enforces the\n// value is a CBOR byte string.\n\nexport const HashDigestSchema = z.instanceof(Uint8Array);\n\nexport const HashesMapSchema = z.record(z.string(), HashDigestSchema);\nexport type HashesMap = z.infer<typeof HashesMapSchema>;\n\n// =============================================================================\n// Top-level `merkle[]`\n// =============================================================================\n//\n// Each commit is a closed map `{alg, root, leaf_count, ? uris}`. `alg` is open\n// (registry membership is enforced in the validator's domain pass — unknown\n// identifiers emit `UNSUPPORTED_MERKLE_COMMIT_ALG`).\n\nexport const MerkleCommitSchema = z\n .object({\n alg: z.string(),\n root: z.instanceof(Uint8Array),\n leaf_count: z.number().int().min(1),\n uris: z.array(UriChunkArraySchema).min(1).optional(),\n })\n .strict();\nexport type MerkleCommit = z.infer<typeof MerkleCommitSchema>;\n\n// =============================================================================\n// Encryption envelope\n// =============================================================================\n\n// Per-slot recipient entry. The slot shape is KEM-driven:\n//\n// - x25519: `{ epk: bstr(32), wrap: bstr(48) }` — `epk` is the\n// ephemeral X25519 public key, `wrap` is the 32-byte CEK + 16-byte\n// ChaCha20-Poly1305 tag.\n// - mlkem768x25519: `{ kem_ct: [ bstr .size (1..64) ], wrap: bstr(48) }` —\n// `kem_ct` is the 1120-byte X-Wing `enc` carried as a chunked byte-string\n// array (the same `bytes-chunk-array` shape `sigs[i].cose_sign1` uses);\n// there is NO per-slot `epk` on the hybrid path.\n//\n// The `kem` identifier is hoisted to envelope scope (a per-slot `kem` would\n// be wire-bloat). The schema is deliberately PERMISSIVE:\n// `epk`, `kem_ct`, and `wrap` are all optional and `.strict()` is NOT applied.\n// Both the per-field length checks (`KEM_EPK_LENGTH_MISMATCH`,\n// `KEM_CT_LENGTH_MISMATCH`, `WRAP_LENGTH_MISMATCH`) and the KEM-driven\n// shape gate (which field MUST/MUST NOT be present for the declared `kem`,\n// emitting `ENC_SLOT_INVALID_SHAPE`) live in the validator's domain pass —\n// the structural schema cannot know the envelope `kem` from a slot in\n// isolation, and we want the precise KEM-aware code rather than a generic\n// schema mismatch. Because `.strict()` is dropped, the domain pass MUST\n// explicitly reject cross-KEM contamination (an x25519 slot carrying\n// `kem_ct`, or a hybrid slot carrying `epk`).\nexport const SlotSchema = z.object({\n epk: z.instanceof(Uint8Array).optional(),\n kem_ct: ChunkedBytesArraySchema.optional(),\n wrap: z.instanceof(Uint8Array).optional(),\n});\nexport type Slot = z.infer<typeof SlotSchema>;\n\n// Argon2id params `{m, t, p}` are a closed map. Each value MUST be a CBOR\n// unsigned integer; the FLOOR check (`m ≥ 65536`,\n// `t ≥ 3`, `p ≥ 1`) emits `ENC_PASSPHRASE_ARGON2_PARAMS_TOO_LOW` in the\n// validator's domain pass — keeping it out of the schema lets us emit the\n// distinct salt-length code when salt itself is malformed too.\nexport const Argon2idParamsSchema = z\n .object({\n m: z.number().int(),\n t: z.number().int(),\n p: z.number().int(),\n })\n .strict();\nexport type Argon2idParams = z.infer<typeof Argon2idParamsSchema>;\n\n// Passphrase block. `alg` is open (registry membership checked in the\n// validator's domain pass → `ENC_PASSPHRASE_ALG_UNSUPPORTED`);\n// `params` is open here (validator narrows on the registered `alg` value and\n// emits `SCHEMA_UNKNOWN_FIELD` for extra keys, `ENC_PASSPHRASE_ARGON2_PARAMS_TOO_LOW`\n// for sub-floor values). `salt` length floor/ceiling are schema-layer\n// refinements with the dedicated `ENC_PASSPHRASE_SALT_TOO_SHORT/TOO_LONG`\n// codes — they belong at the schema layer because a slot cannot otherwise\n// see the salt length.\nexport const PassphraseBlockSchema = z\n .object({\n alg: z.string(),\n salt: z.instanceof(Uint8Array).superRefine((bytes, ctx) => {\n if (bytes.length < 16) {\n ctx.addIssue({\n code: 'custom',\n path: [],\n message: `passphrase.salt length ${bytes.length} < 16`,\n params: { code: 'ENC_PASSPHRASE_SALT_TOO_SHORT' },\n });\n } else if (bytes.length > 64) {\n ctx.addIssue({\n code: 'custom',\n path: [],\n message: `passphrase.salt length ${bytes.length} > 64`,\n params: { code: 'ENC_PASSPHRASE_SALT_TOO_LONG' },\n });\n }\n }),\n params: z.record(z.string(), z.unknown()),\n })\n .strict();\nexport type PassphraseBlock = z.infer<typeof PassphraseBlockSchema>;\n\n// Sealed-PoE envelope. The wire format admits any combination of\n// `kem` / `slots` / `slots_mac` / `passphrase` keys (permissive superset);\n// cross-field invariants (slots ⊕ passphrase, slots ↔ slots_mac, slots\n// requires kem, content-hash binding, slots non-empty) are enforced in the\n// validator's domain pass so each violation emits its typed code rather\n// than a generic shape mismatch.\nexport const EncryptionEnvelopeSchema = z\n .object({\n scheme: z.unknown(),\n aead: z.string(),\n kem: z.string().optional(),\n nonce: z.instanceof(Uint8Array),\n slots: z.array(SlotSchema).optional(),\n slots_mac: z\n .instanceof(Uint8Array)\n .refine((b) => b.length === 32, {\n params: { code: 'ENC_SLOTS_MAC_INVALID_LENGTH' },\n })\n .optional(),\n passphrase: PassphraseBlockSchema.optional(),\n })\n .strict();\nexport type EncryptionEnvelope = z.infer<typeof EncryptionEnvelopeSchema>;\n\n// =============================================================================\n// Item entry\n// =============================================================================\n\nexport const ItemEntrySchema = z\n .object({\n hashes: HashesMapSchema,\n uris: z.array(UriChunkArraySchema).min(1).optional(),\n // Captured as `unknown` so the validator can run the\n // `ENC_REQUIRES_CONTENT_HASH` pre-check ahead of any inner-shape errors\n // and surface the most informative code first.\n enc: z.unknown().optional(),\n })\n .strict();\nexport type ItemEntry = z.infer<typeof ItemEntrySchema>;\n\n// =============================================================================\n// Sig entry\n// =============================================================================\n//\n// Closed CBOR map `{cose_sign1, ? cose_key}`. Canonical CBOR map-key sort\n// (RFC 8949 §4.2.1, bytewise lex on encoded keys) places `cose_key`\n// (length-8 tstr, `0x68`) BEFORE `cose_sign1` (length-10 tstr, `0x6a`); the\n// schema property-order is irrelevant — the canonical encoder handles it.\nexport const SigEntrySchema = z\n .object({\n cose_key: ChunkedBytesArraySchema.optional(),\n cose_sign1: ChunkedBytesArraySchema,\n })\n .strict();\nexport type SigEntry = z.infer<typeof SigEntrySchema>;\n\n// =============================================================================\n// Supersedence\n// =============================================================================\n\nexport const SupersedesSchema = z.instanceof(Uint8Array).refine((b) => b.length === 32, {\n params: { code: 'SUPERSEDES_TX_INVALID_LENGTH' },\n});\nexport type Supersedes = z.infer<typeof SupersedesSchema>;\n\n// =============================================================================\n// Top-level record\n// =============================================================================\n//\n// `v == 1` is a literal — a future major (`v: 2`) MUST be rejected with\n// `SCHEMA_INVALID_LITERAL`. `z.literal(1)` preserves the narrow `1` type for\n// the inferred `PoeRecord[\"v\"]` (so consumers can dispatch on it) and emits\n// Zod's `invalid_value` code which the validator's mapper lifts to\n// `SCHEMA_INVALID_LITERAL`.\n//\n// `looseObject` admits extension keys (matching `^x-.+` or `^[a-z]+-.+`); the\n// validator's domain pass rejects unknown keys that match neither pattern with\n// `SCHEMA_UNKNOWN_FIELD`.\nexport const VersionLiteralSchema = z.literal(1);\n\nexport const PoeRecordSchema = z.looseObject({\n v: VersionLiteralSchema,\n items: z.array(ItemEntrySchema).optional(),\n merkle: z.array(MerkleCommitSchema).optional(),\n supersedes: SupersedesSchema.optional(),\n sigs: z.array(SigEntrySchema).optional(),\n crit: z.array(z.string()).optional(),\n});\nexport type PoeRecord = z.infer<typeof PoeRecordSchema>;\n\n// =============================================================================\n// Closed top-level base-key registry\n// =============================================================================\n//\n// Used by the validator's domain pass to distinguish unknown-typo keys from\n// well-formed extension keys (`^x-.+` / `^[a-z]+-.+`).\nexport const TOP_LEVEL_BASE_KEYS: ReadonlySet<string> = new Set([\n 'v',\n 'items',\n 'merkle',\n 'supersedes',\n 'sigs',\n 'crit',\n]);\n\n// Extension-key namespaces. Anchored at both ends so an\n// embedded newline cannot smuggle a multi-segment key past the check: `.`\n// excludes `\\n` in JS, and the `\\n?$` tail tolerates exactly ONE trailing\n// newline (matching the Python validator's `re.fullmatch(r'^(x-.+|[a-z]+-.+)$')`\n// semantics, where `$` likewise admits a single trailing `\\n`). So `x-note\\n`\n// is an extension key, but `x-a\\nb`, `x-note\\n\\n`, and `x-\\n` are not.\nexport const EXTENSION_KEY_VENDOR_RE = /^x-.+\\n?$/;\nexport const EXTENSION_KEY_COMPANION_RE = /^[a-z]+-.+\\n?$/;\n\nexport function isExtensionKey(k: string): boolean {\n return EXTENSION_KEY_VENDOR_RE.test(k) || EXTENSION_KEY_COMPANION_RE.test(k);\n}\n","const f={POS_INT:0,NEG_INT:1,BYTE_STRING:2,UTF8_STRING:3,ARRAY:4,MAP:5,TAG:6,SIMPLE_FLOAT:7},T={DATE_STRING:0,DATE_EPOCH:1,POS_BIGINT:2,NEG_BIGINT:3,DECIMAL_FRAC:4,BIGFLOAT:5,BASE64URL_EXPECTED:21,BASE64_EXPECTED:22,BASE16_EXPECTED:23,CBOR:24,URI:32,BASE64URL:33,BASE64:34,MIME:36,DATE_EPOCH_DAYS:100,SET:258,JSON:262,WTF8:273,SYMBOL:280,DATE_FULL:1004,REGEXP:21066,SELF_DESCRIBED:55799,INVALID_16:65535,INVALID_32:4294967295,INVALID_64:0xffffffffffffffffn},I={ZERO:0,ONE:24,TWO:25,FOUR:26,EIGHT:27,INDEFINITE:31},o={FALSE:20,TRUE:21,NULL:22,UNDEFINED:23};class A{static BREAK=Symbol.for(\"github.com/hildjj/cbor2/break\");static ENCODED=Symbol.for(\"github.com/hildjj/cbor2/cbor-encoded\");static LENGTH=Symbol.for(\"github.com/hildjj/cbor2/length\")}const S={MIN:-(2n**63n),MAX:2n**64n-1n};export{S as DCBOR_INT,f as MT,I as NUMBYTES,o as SIMPLE,A as SYMS,T as TAG};\n","class o{static#e=new Map;tag;contents;constructor(e,t=void 0){this.tag=e,this.contents=t}get noChildren(){return!!o.#e.get(this.tag)?.noChildren}static registerDecoder(e,t,n){const i=this.#e.get(e);return this.#e.set(e,t),i&&(\"comment\"in t||(t.comment=i.comment),\"noChildren\"in t||(t.noChildren=i.noChildren)),n&&!t.comment&&(t.comment=()=>`(${n})`),i}static clearDecoder(e){const t=this.#e.get(e);return this.#e.delete(e),t}static getDecoder(e){return this.#e.get(e)}static getAllDecoders(){return new Map(this.#e)}*[Symbol.iterator](){yield this.contents}push(e){return this.contents=e,1}decode(e){const t=e?.tags?.get(this.tag)??(e?.ignoreGlobalTags?void 0:o.#e.get(this.tag));return t?t(this,e):this}comment(e,t){const n=e?.tags?.get(this.tag)??(e?.ignoreGlobalTags?void 0:o.#e.get(this.tag));if(n?.comment)return n.comment(this,e,t)}toCBOR(){return[this.tag,this.contents]}[Symbol.for(\"nodejs.util.inspect.custom\")](e,t,n){return`${this.tag}(${n(this.contents,t)})`}}export{o as Tag};\n","import{SYMS as i}from\"./constants.js\";import{Tag as o}from\"./tag.js\";function f(n){if(n!=null&&typeof n==\"object\")return n[i.ENCODED]}function s(n){if(n!=null&&typeof n==\"object\")return n[i.LENGTH]}function u(n,e){Object.defineProperty(n,i.ENCODED,{configurable:!0,enumerable:!1,value:e})}function l(n,e){Object.defineProperty(n,i.LENGTH,{configurable:!0,enumerable:!1,value:e})}function d(n,e){const r=Object(n);return u(r,e),r}function t(n){if(!n||typeof n!=\"object\")return n;switch(n.constructor){case BigInt:case Boolean:case Number:case String:case Symbol:return n.valueOf();case Array:return n.map(e=>t(e));case Map:{const e=t([...n.entries()]);return e.every(([r])=>typeof r==\"string\")?Object.fromEntries(e):new Map(e)}case o:return new o(t(n.tag),t(n.contents));case Object:{const e={};for(const[r,a]of Object.entries(n))e[r]=t(a);return e}}return n}export{d as box,f as getEncoded,s as getEncodedLength,u as saveEncoded,l as saveEncodedLength,t as unbox};\n","const g=Symbol(\"CBOR_RANGES\");function c(r,n){Object.defineProperty(r,g,{configurable:!1,enumerable:!1,writable:!1,value:n})}function f(r){return r[g]}function l(r){return f(r)!==void 0}function R(r,n=0,t=r.length-1){const o=r.subarray(n,t),a=f(r);if(a){const s=[];for(const e of a)if(e[0]>=n&&e[0]+e[1]<=t){const i=[...e];i[0]-=n,s.push(i)}s.length&&c(o,s)}return o}function b(r){let n=Math.ceil(r.length/2);const t=new Uint8Array(n);n--;for(let o=r.length,a=o-2;o>=0;o=a,a-=2,n--)t[n]=parseInt(r.substring(a,o),16);return t}function A(r){return r.reduce((n,t)=>n+t.toString(16).padStart(2,\"0\"),\"\")}function d(r){const n=r.reduce((e,i)=>e+i.length,0),t=r.some(e=>l(e)),o=[],a=new Uint8Array(n);let s=0;for(const e of r){if(!(e instanceof Uint8Array))throw new TypeError(`Invalid array: ${e}`);if(a.set(e,s),t){const i=e[g]??[[0,e.length]];for(const u of i)u[0]+=s;o.push(...i)}s+=e.length}return t&&c(a,o),a}function y(r){const n=atob(r);return Uint8Array.from(n,t=>t.codePointAt(0))}const p={\"-\":\"+\",_:\"/\"};function x(r){const n=r.replace(/[_-]/g,t=>p[t]);return y(n.padEnd(Math.ceil(n.length/4)*4,\"=\"))}function h(){const r=new Uint8Array(4),n=new Uint32Array(r.buffer);return!((n[0]=1)&r[0])}function U(r){let n=\"\";for(const t of r){const o=t.codePointAt(0)?.toString(16).padStart(4,\"0\");n&&(n+=\", \"),n+=`U+${o}`}return n}export{g as CBOR_RANGES,y as base64ToBytes,x as base64UrlToBytes,f as getRanges,l as hasRanges,b as hexToU8,h as isBigEndian,c as setRanges,U as stringToHex,R as subarrayRanges,d as u8concat,A as u8toHex};\n","class s{#e=new Map;registerEncoder(e,t){const n=this.#e.get(e);return this.#e.set(e,t),n}get(e){return this.#e.get(e)}delete(e){return this.#e.delete(e)}clear(){this.#e.clear()}}export{s as TypeEncoderMap};\n","function f(c,d){const[u,a,n]=c,[l,s,t]=d,r=Math.min(n.length,t.length);for(let o=0;o<r;o++){const e=n[o]-t[o];if(e!==0)return e}return 0}function y(c,d){const[u,a,n]=c,[l,s,t]=d,r=n.length-t.length;if(r!==0)return r;const o=Math.min(n.length,t.length);for(let e=0;e<o;e++){const i=n[e]-t[e];if(i!==0)return i}return 0}export{f as sortCoreDeterministic,y as sortLengthFirstDeterministic};\n","class e{static defaultOptions={chunkSize:4096};#r;#i=[];#s=null;#t=0;#a=0;constructor(t={}){if(this.#r={...e.defaultOptions,...t},this.#r.chunkSize<8)throw new RangeError(`Expected size >= 8, got ${this.#r.chunkSize}`);this.#n()}get length(){return this.#a}read(){this.#o();const t=new Uint8Array(this.#a);let i=0;for(const s of this.#i)t.set(s,i),i+=s.length;return this.#n(),t}write(t){const i=t.length;i>this.#l()?(this.#o(),i>this.#r.chunkSize?(this.#i.push(t),this.#n()):(this.#n(),this.#i[this.#i.length-1].set(t),this.#t=i)):(this.#i[this.#i.length-1].set(t,this.#t),this.#t+=i),this.#a+=i}writeUint8(t){this.#e(1),this.#s.setUint8(this.#t,t),this.#h(1)}writeUint16(t,i=!1){this.#e(2),this.#s.setUint16(this.#t,t,i),this.#h(2)}writeUint32(t,i=!1){this.#e(4),this.#s.setUint32(this.#t,t,i),this.#h(4)}writeBigUint64(t,i=!1){this.#e(8),this.#s.setBigUint64(this.#t,t,i),this.#h(8)}writeInt16(t,i=!1){this.#e(2),this.#s.setInt16(this.#t,t,i),this.#h(2)}writeInt32(t,i=!1){this.#e(4),this.#s.setInt32(this.#t,t,i),this.#h(4)}writeBigInt64(t,i=!1){this.#e(8),this.#s.setBigInt64(this.#t,t,i),this.#h(8)}writeFloat32(t,i=!1){this.#e(4),this.#s.setFloat32(this.#t,t,i),this.#h(4)}writeFloat64(t,i=!1){this.#e(8),this.#s.setFloat64(this.#t,t,i),this.#h(8)}clear(){this.#a=0,this.#i=[],this.#n()}#n(){const t=new Uint8Array(this.#r.chunkSize);this.#i.push(t),this.#t=0,this.#s=new DataView(t.buffer,t.byteOffset,t.byteLength)}#o(){if(this.#t===0){this.#i.pop();return}const t=this.#i.length-1;this.#i[t]=this.#i[t].subarray(0,this.#t),this.#t=0,this.#s=null}#l(){const t=this.#i.length-1;return this.#i[t].length-this.#t}#e(t){this.#l()<t&&(this.#o(),this.#n())}#h(t){this.#t+=t,this.#a+=t}}export{e as Writer};\n","const w=1n<<15n,f=0b11111n<<10n,b=1n<<9n,d=b-1n,I=b|d,g=1n<<31n,l=0b11111111n<<23n,A=1n<<22n,E=A-1n,p=A|E,N=1n<<63n,a=0b11111111111n<<52n,c=1n<<51n,u=c-1n,F=c|u,_=u-(d<<42n),S=u-(E<<29n),m={2:\"0b\",8:\"0o\",16:\"0x\"};var x=(t=>(t[t.NATURAL=-2]=\"NATURAL\",t[t.UNKNOWN=-1]=\"UNKNOWN\",t[t.F16=2]=\"F16\",t[t.F32=4]=\"F32\",t[t.F64=8]=\"F64\",t))(x||{});function U(i,n,e,r){let o=\"nan'\";return i.quiet||(o+=\"!\"),i.sign===-1&&(o+=\"-\"),o+=r(Math.abs(i.payload),e),o+=\"'\",o+=i.encodingIndicator,o}class O extends Number{#n;#t=-1;constructor(n,e=!0,r=-1){super(NaN);const o=n;if(typeof n==\"number\"){if(!Number.isSafeInteger(n))throw new Error(`Invalid NAN payload: ${n}`);n=BigInt(n);let t=0n;if(n<0&&(t=N,n=-n),n>=c)throw new Error(`Payload too large: ${o}`);const s=e?c:0n;switch(this.#n=t|a|s|n,r){case-2:throw new Error(\"NAN_SIZE.NATURAL only valid for bigint constructor\");case-1:r=this.preferredSize;break;case 2:if(this.#n&_)throw new Error(\"Invalid size for payload\");break;case 4:if(this.#n&S)throw new Error(\"Invalid size for payload\");break;case 8:break;default:throw new Error(`Invalid size: ${r}`)}this.#t=r}else if(typeof n==\"bigint\"){let t=-1;if((n&a)===a)this.#n=n,t=8;else if((n&l)===l){const s=(n&g)<<32n;this.#n=s|a|(n&p)<<29n,t=4}else if((n&f)===f){const s=(n&w)<<48n;this.#n=s|a|(n&I)<<42n,t=2}else throw new Error(`Invalid raw NaN value: ${n}`);if(r===-1)this.#t=this.preferredSize;else if(r===-2)this.#t=t;else{if(r<t)throw new Error(\"Invalid bigint NaN size\");this.#t=r}}else{const t=new DataView(n.buffer,n.byteOffset,n.byteLength);switch(n.length){case 3:{if(n[0]!==249)throw new Error(\"Invalid CBOR encoding for half float\");const s=BigInt(t.getUint16(1,!1));if((s&f)!==f)throw new Error(\"Not a NaN\");const h=(s&w)<<48n;this.#n=h|a|(s&I)<<42n,this.#t=2;break}case 5:{if(n[0]!==250)throw new Error(\"Invalid CBOR encoding for single float\");const s=BigInt(t.getUint32(1,!1));if((s&l)!==l)throw new Error(\"Not a NaN\");const h=(s&g)<<32n;this.#n=h|a|(s&p)<<29n,this.#t=4;break}case 9:{if(n[0]!==251)throw new Error(\"Invalid CBOR encoding for double float\");if(this.#n=t.getBigUint64(1,!1),(this.#n&a)!==a)throw new Error(\"Not a NaN (NaNaN)\");this.#t=8;break}default:throw new RangeError(`Invalid NAN size (should be 2, 4, or 8): ${n.length-1}`)}}if(!this.payload&&!this.quiet)throw new Error(\"Signalling NaN with zero payload\")}get bytes(){const n=new ArrayBuffer(this.#t+1),e=new DataView(n);switch(this.#t){case 2:{e.setUint8(0,249);const o=(this.#n&N?w:0n)|f|(this.#n&F)>>42n;e.setUint16(1,Number(o),!1);break}case 4:{e.setUint8(0,250);const o=(this.#n&N?g:0n)|l|(this.#n&F)>>29n;e.setUint32(1,Number(o),!1);break}case 8:e.setUint8(0,251),e.setBigUint64(1,this.#n);break}return new Uint8Array(n)}get quiet(){return!!(this.#n&c)}get sign(){return this.#n&N?-1:1}get payload(){return Number(this.#n&u)*this.sign}get raw(){return this.#n}get encodingIndicator(){switch(this.#t){case 2:return\"_1\";case 4:return\"_2\"}return\"_3\"}get size(){return this.#t}get preferredSize(){return(this.#n&_)===0n?2:(this.#n&S)===0n?4:8}get isShortestEncoding(){return this.preferredSize===this.#t}toCBOR(n){n.write(this.bytes)}toString(n=10){return U(this,1,{},e=>(m[n]??\"\")+e.toString(n))}[Symbol.for(\"nodejs.util.inspect.custom\")](n,e,r){return U(this,n,e,r)}}function v(i,n=0,e=!1){const r=i[n]&128?-1:1,o=(i[n]&124)>>2,t=(i[n]&3)<<8|i[n+1];if(o===0){if(e&&t!==0)throw new Error(`Unwanted subnormal: ${r*5960464477539063e-23*t}`);return r*5960464477539063e-23*t}else if(o===31)return t?NaN:r*(1/0);return r*2**(o-25)*(1024+t)}function Z(i){const n=new DataView(new ArrayBuffer(4));n.setFloat32(0,i,!1);const e=n.getUint32(0,!1);if((e&8191)!==0)return null;let r=e>>16&32768;const o=e>>23&255,t=e&8388607;if(!(o===0&&t===0))if(o>=113&&o<=142)r+=(o-112<<10)+(t>>13);else if(o>=103&&o<113){if(t&(1<<126-o)-1)return null;r+=t+8388608>>126-o}else if(o===255)r|=31744,r|=t>>13;else return null;return r}function k(i){if(i!==0){const n=new ArrayBuffer(8),e=new DataView(n);e.setFloat64(0,i,!1);const r=e.getBigUint64(0,!1);if((r&0x7ff0000000000000n)===0n)return r&0x8000000000000000n?-0:0}return i}function B(i){switch(i.length){case 2:v(i,0,!0);break;case 4:{const n=new DataView(i.buffer,i.byteOffset,i.byteLength),e=n.getUint32(0,!1);if((e&2139095040)===0&&e&8388607)throw new Error(`Unwanted subnormal: ${n.getFloat32(0,!1)}`);break}case 8:{const n=new DataView(i.buffer,i.byteOffset,i.byteLength),e=n.getBigUint64(0,!1);if((e&0x7ff0000000000000n)===0n&&e&0x000fffffffffffn)throw new Error(`Unwanted subnormal: ${n.getFloat64(0,!1)}`);break}default:throw new TypeError(`Bad input to isSubnormal: ${i}`)}}export{O as NAN,x as NAN_SIZE,B as checkSubnormal,k as flushToZero,Z as halfToUint,v as parseHalf};\n","export class DecodeError extends TypeError {\n code = 'ERR_ENCODING_INVALID_ENCODED_DATA';\n constructor() {\n super('The encoded data was not valid for encoding wtf-8');\n }\n}\nexport class InvalidEncodingError extends RangeError {\n code = 'ERR_ENCODING_NOT_SUPPORTED';\n constructor(label) {\n super(`Invalid encoding: \"${label}\"`);\n }\n}\n","export const BOM = 0xfeff;\nexport const EMPTY = new Uint8Array(0);\nexport const MAX_HIGH_SURROGATE = 0xdbff;\nexport const MAX_LOW_SURROGATE = 0xdfff;\nexport const MIN_HIGH_SURROGATE = 0xd800;\nexport const MIN_LOW_SURROGATE = 0xdc00;\nexport const REPLACEMENT = 0xfffd;\nexport const WTF8 = 'wtf-8';\n","import { BOM, EMPTY, MIN_HIGH_SURROGATE, MIN_LOW_SURROGATE, REPLACEMENT, WTF8, } from './const.js';\nimport { DecodeError, InvalidEncodingError } from './errors.js';\nfunction isArrayBufferView(input) {\n return (input &&\n (typeof input === 'object') &&\n !(input instanceof ArrayBuffer) &&\n !(input instanceof SharedArrayBuffer) &&\n input.buffer instanceof ArrayBuffer);\n}\nfunction getUint8(input) {\n if (!input) {\n return EMPTY;\n }\n if (input instanceof Uint8Array) {\n return input;\n }\n if (isArrayBufferView(input)) {\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n return new Uint8Array(input);\n}\nconst REMAINDER = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n -1,\n -1,\n -1,\n -1,\n 1,\n 1,\n 2,\n 3,\n];\nexport class Wtf8Decoder {\n static DEFAULT_BUFFERSIZE = 0x1000;\n encoding = WTF8;\n fatal;\n ignoreBOM;\n bufferSize;\n #left = 0;\n #cur = 0;\n #pending = 0;\n #first = true;\n #buf;\n constructor(label = 'wtf8', options = undefined) {\n if (label.toLowerCase().replace('-', '') !== 'wtf8') {\n throw new InvalidEncodingError(label);\n }\n this.fatal = Boolean(options?.fatal);\n this.ignoreBOM = Boolean(options?.ignoreBOM);\n this.bufferSize = Math.floor(options?.bufferSize ?? Wtf8Decoder.DEFAULT_BUFFERSIZE);\n if (isNaN(this.bufferSize) || (this.bufferSize < 1)) {\n throw new RangeError(`Invalid buffer size: ${options?.bufferSize}`);\n }\n this.#buf = new Uint16Array(this.bufferSize);\n }\n decode(input, options) {\n const streaming = Boolean(options?.stream);\n const bytes = getUint8(input);\n const res = [];\n const out = this.#buf;\n const maxSize = this.bufferSize - 3;\n let pos = 0;\n const fatal = () => {\n this.#cur = 0;\n this.#left = 0;\n this.#pending = 0;\n if (this.fatal) {\n throw new DecodeError();\n }\n out[pos++] = REPLACEMENT;\n };\n const fatals = () => {\n const p = this.#pending;\n for (let i = 0; i < p; i++) {\n fatal();\n }\n };\n const oneByte = (b) => {\n if (this.#left === 0) {\n const n = REMAINDER[b >> 4];\n switch (n) {\n case -1:\n fatal();\n break;\n case 0:\n out[pos++] = b;\n break;\n case 1:\n this.#cur = b & 0x1f;\n if ((this.#cur & 0x1e) === 0) {\n fatal();\n }\n else {\n this.#left = 1;\n this.#pending = 1;\n }\n break;\n case 2:\n this.#cur = b & 0x0f;\n this.#left = 2;\n this.#pending = 1;\n break;\n case 3:\n if (b & 0x08) {\n fatal();\n }\n else {\n this.#cur = b & 0x07;\n this.#left = 3;\n this.#pending = 1;\n }\n break;\n }\n }\n else {\n if ((b & 0xc0) !== 0x80) {\n fatals();\n return oneByte(b);\n }\n if ((this.#pending === 1) &&\n (this.#left === 2) &&\n (this.#cur === 0) &&\n ((b & 0x20) === 0)) {\n fatals();\n return oneByte(b);\n }\n if ((this.#left === 3) && (this.#cur === 0) && ((b & 0x30) === 0)) {\n fatals();\n return oneByte(b);\n }\n this.#cur = (this.#cur << 6) | (b & 0x3f);\n this.#pending++;\n if (--this.#left === 0) {\n if (this.ignoreBOM || !this.#first || (this.#cur !== BOM)) {\n if (this.#cur < 0x10000) {\n out[pos++] = this.#cur;\n }\n else {\n const cp = this.#cur - 0x10000;\n out[pos++] = ((cp >>> 10) & 0x3ff) | MIN_HIGH_SURROGATE;\n out[pos++] = (cp & 0x3ff) | MIN_LOW_SURROGATE;\n }\n }\n this.#cur = 0;\n this.#pending = 0;\n this.#first = false;\n }\n }\n };\n for (const b of bytes) {\n if (pos >= maxSize) {\n res.push(String.fromCharCode.apply(null, out.subarray(0, pos)));\n pos = 0;\n }\n oneByte(b);\n }\n if (!streaming) {\n this.#first = true;\n if (this.#cur || this.#left) {\n fatals();\n }\n }\n if (pos > 0) {\n res.push(String.fromCharCode.apply(null, out.subarray(0, pos)));\n }\n return res.join('');\n }\n}\n","import { EMPTY, WTF8 } from './const.js';\nfunction utf8length(str) {\n let len = 0;\n for (const s of str) {\n const cp = s.codePointAt(0);\n if (cp < 0x80) {\n len++;\n }\n else if (cp < 0x800) {\n len += 2;\n }\n else if (cp < 0x10000) {\n len += 3;\n }\n else {\n len += 4;\n }\n }\n return len;\n}\nexport class Wtf8Encoder {\n encoding = WTF8;\n encode(input) {\n if (!input) {\n return EMPTY;\n }\n const buf = new Uint8Array(utf8length(String(input)));\n this.encodeInto(input, buf);\n return buf;\n }\n encodeInto(source, destination) {\n const str = String(source);\n const len = str.length;\n const outLen = destination.length;\n let written = 0;\n let read = 0;\n for (read = 0; read < len; read++) {\n const c = str.codePointAt(read);\n if (c < 0x80) {\n if (written >= outLen) {\n break;\n }\n destination[written++] = c;\n }\n else if (c < 0x800) {\n if (written >= outLen - 1) {\n break;\n }\n destination[written++] = 0xc0 | (c >> 6);\n destination[written++] = 0x80 | (c & 0x3f);\n }\n else if (c < 0x10000) {\n if (written >= outLen - 2) {\n break;\n }\n destination[written++] = 0xe0 | (c >> 12);\n destination[written++] = 0x80 | ((c >> 6) & 0x3f);\n destination[written++] = 0x80 | (c & 0x3f);\n }\n else {\n if (written >= outLen - 3) {\n break;\n }\n destination[written++] = 0xf0 | (c >> 18);\n destination[written++] = 0x80 | ((c >> 12) & 0x3f);\n destination[written++] = 0x80 | ((c >> 6) & 0x3f);\n destination[written++] = 0x80 | (c & 0x3f);\n read++;\n }\n }\n return {\n read,\n written,\n };\n }\n}\n","import{TypeEncoderMap as _}from\"./typeEncoderMap.js\";import{DCBOR_INT as x,MT as f,NUMBYTES as d,SIMPLE as T,SYMS as E,TAG as p}from\"./constants.js\";import{sortCoreDeterministic as G}from\"./sorts.js\";import{Writer as I}from\"./writer.js\";import{box as C,getEncodedLength as D}from\"./box.js\";import{flushToZero as W,halfToUint as S}from\"./float.js\";import{Wtf8Encoder as M}from\"@cto.af/wtf8\";import{hexToU8 as P}from\"./utils.js\";const{ENCODED:ce}=E,U=f.SIMPLE_FLOAT<<5|d.TWO,h=f.SIMPLE_FLOAT<<5|d.FOUR,B=f.SIMPLE_FLOAT<<5|d.EIGHT,j=f.SIMPLE_FLOAT<<5|T.TRUE,q=f.SIMPLE_FLOAT<<5|T.FALSE,$=f.SIMPLE_FLOAT<<5|T.UNDEFINED,z=f.SIMPLE_FLOAT<<5|T.NULL,H=new TextEncoder,K=new M,k={...I.defaultOptions,avoidInts:!1,cde:!1,collapseBigInts:!0,dateTag:p.DATE_EPOCH,dcbor:!1,float64:!1,flushToZero:!1,forceEndian:null,ignoreOriginalEncoding:!1,largeNegativeAsBigInt:!1,reduceUnsafeNumbers:!1,rejectBigInts:!1,rejectCustomSimples:!1,rejectDuplicateKeys:!1,rejectFloats:!1,rejectUndefined:!1,simplifyNegativeZero:!1,sortKeys:null,stringNormalization:null,types:null,wtf8:!1,ignoreGlobalTags:!1},F={cde:!0,ignoreOriginalEncoding:!0,sortKeys:G},Y={...F,dcbor:!0,largeNegativeAsBigInt:!0,reduceUnsafeNumbers:!0,rejectCustomSimples:!0,rejectDuplicateKeys:!0,rejectUndefined:!0,simplifyNegativeZero:!0,stringNormalization:\"NFC\"};function y(e){const n=e<0;return typeof e==\"bigint\"?[n?-e-1n:e,n]:[n?-e-1:e,n]}function N(e,n,i){if(i.rejectFloats)throw new Error(`Attempt to encode an unwanted floating point number: ${e}`);if(isNaN(e))n.writeUint8(U),n.writeUint16(32256);else if(!i.float64&&Math.fround(e)===e){const r=S(e);r===null?(n.writeUint8(h),n.writeFloat32(e)):(n.writeUint8(U),n.writeUint16(r))}else n.writeUint8(B),n.writeFloat64(e)}function a(e,n,i){const[r,t]=y(e);if(t&&i)throw new TypeError(`Negative size: ${e}`);i??=t?f.NEG_INT:f.POS_INT,i<<=5,r<24?n.writeUint8(i|r):r<=255?(n.writeUint8(i|d.ONE),n.writeUint8(r)):r<=65535?(n.writeUint8(i|d.TWO),n.writeUint16(r)):r<=4294967295?(n.writeUint8(i|d.FOUR),n.writeUint32(r)):(n.writeUint8(i|d.EIGHT),n.writeBigUint64(BigInt(r)))}function m(e,n,i){typeof e==\"number\"?a(e,n,f.TAG):typeof e==\"object\"&&!i.ignoreOriginalEncoding&&E.ENCODED in e?n.write(e[E.ENCODED]):e<=Number.MAX_SAFE_INTEGER?a(Number(e),n,f.TAG):(n.writeUint8(f.TAG<<5|d.EIGHT),n.writeBigUint64(BigInt(e)))}function O(e,n,i){const[r,t]=y(e);if(i.collapseBigInts&&(!i.largeNegativeAsBigInt||e>=-0x8000000000000000n)){if(r<=0xffffffffn){a(Number(e),n);return}if(r<=0xffffffffffffffffn){const l=(t?f.NEG_INT:f.POS_INT)<<5;n.writeUint8(l|d.EIGHT),n.writeBigUint64(r);return}}if(i.rejectBigInts)throw new Error(`Attempt to encode unwanted bigint: ${e}`);const o=t?p.NEG_BIGINT:p.POS_BIGINT,c=r.toString(16),s=c.length%2?\"0\":\"\";m(o,n,i);const u=P(s+c);a(u.length,n,f.BYTE_STRING),n.write(u)}function Z(e,n,i){i.flushToZero&&(e=W(e)),Object.is(e,-0)?i.simplifyNegativeZero?i.avoidInts?N(0,n,i):a(0,n):N(e,n,i):!i.avoidInts&&Number.isSafeInteger(e)?a(e,n):i.reduceUnsafeNumbers&&Math.floor(e)===e&&e>=x.MIN&&e<=x.MAX?O(BigInt(e),n,i):N(e,n,i)}function R(e,n,i){const r=i.stringNormalization?e.normalize(i.stringNormalization):e;if(i.wtf8&&!e.isWellFormed()){const t=K.encode(r);m(p.WTF8,n,i),a(t.length,n,f.BYTE_STRING),n.write(t)}else{const t=H.encode(r);a(t.length,n,f.UTF8_STRING),n.write(t)}}function J(e,n,i){const r=e;L(r,r.length,f.ARRAY,n,i);for(const t of r)g(t,n,i)}function V(e,n){a(e.length,n,f.BYTE_STRING),n.write(e)}const b=new _;b.registerEncoder(Array,J),b.registerEncoder(Uint8Array,V);function ue(e,n){return b.registerEncoder(e,n)}function de(e){const n=b.get(e);return b.delete(e),n}function L(e,n,i,r,t){const o=D(e);o&&!t.ignoreOriginalEncoding?r.write(o):a(n,r,i)}function X(e,n,i){if(e===null){n.writeUint8(z);return}if(!i.ignoreOriginalEncoding&&E.ENCODED in e){n.write(e[E.ENCODED]);return}const r=e.constructor;if(r){const o=i.types?.get(r)??(i.ignoreGlobalTags?void 0:b.get(r));if(o){const c=o(e,n,i);if(c!==void 0){if(!Array.isArray(c)||c.length!==2)throw new Error(\"Invalid encoder return value\");(typeof c[0]==\"bigint\"||isFinite(Number(c[0])))&&m(c[0],n,i),g(c[1],n,i)}return}}if(typeof e.toCBOR==\"function\"){const o=e.toCBOR(n,i);o&&((typeof o[0]==\"bigint\"||isFinite(Number(o[0])))&&m(o[0],n,i),g(o[1],n,i));return}if(typeof e.toJSON==\"function\"){g(e.toJSON(),n,i);return}const t=Object.entries(e).map(o=>[o[0],o[1],v(o[0],i)]);i.sortKeys&&t.sort(i.sortKeys),L(e,t.length,f.MAP,n,i);for(const[o,c,s]of t)n.write(s),g(c,n,i)}function Q(e,n,i){if(!e.description||e!==Symbol.for(e.description))throw new TypeError(`Private or empty symbol: ${e.toString()}`);m(280,n,i),R(e.description,n,i)}function g(e,n,i){switch(typeof e){case\"number\":Z(e,n,i);break;case\"bigint\":O(e,n,i);break;case\"string\":R(e,n,i);break;case\"boolean\":n.writeUint8(e?j:q);break;case\"undefined\":if(i.rejectUndefined)throw new Error(\"Attempt to encode unwanted undefined.\");n.writeUint8($);break;case\"object\":X(e,n,i);break;case\"symbol\":Q(e,n,i);break;default:throw new TypeError(`Unknown type: ${typeof e}, ${String(e)}`)}}function v(e,n={}){const i={...k};n.dcbor?Object.assign(i,Y):n.cde&&Object.assign(i,F),Object.assign(i,n);const r=new I(i);return g(e,r,i),r.read()}function ae(e,n,i=f.POS_INT){n||(n=\"f\");const r={...k,collapseBigInts:!1,chunkSize:10,simplifyNegativeZero:!1},t=new I(r),o=Number(e);function c(s){if(Object.is(e,-0))throw new Error(\"Invalid integer: -0\");const[u,l]=y(e);if(l&&i!==f.POS_INT)throw new Error(\"Invalid major type combination\");const w=typeof s==\"number\"&&isFinite(s);if(w&&!Number.isSafeInteger(o))throw new TypeError(`Unsafe number for ${n}: ${e}`);if(u>s)throw new TypeError(`Undersized encoding ${n} for: ${e}`);const A=(l?f.NEG_INT:i)<<5;return w?[A,Number(u)]:[A,u]}switch(n){case\"bigint\":if(Object.is(e,-0))throw new TypeError(\"Invalid bigint: -0\");e=BigInt(e),O(e,t,r);break;case\"f\":N(o,t,r);break;case\"f16\":{const s=S(o);if(s===null)throw new TypeError(`Invalid f16: ${e}`);t.writeUint8(U),t.writeUint16(s);break}case\"f32\":if(!isNaN(o)&&Math.fround(o)!==o)throw new TypeError(`Invalid f32: ${e}`);t.writeUint8(h),t.writeFloat32(o);break;case\"f64\":t.writeUint8(B),t.writeFloat64(o);break;case\"i\":if(Object.is(e,-0))throw new Error(\"Invalid integer: -0\");if(Number.isSafeInteger(o))a(o,t,e<0?void 0:i);else{const[s,u]=c(1/0);u>0xffffffffffffffffn?(e=BigInt(e),O(e,t,r)):(t.writeUint8(s|d.EIGHT),t.writeBigUint64(BigInt(u)))}break;case\"i0\":{const[s,u]=c(23);t.writeUint8(s|u);break}case\"i8\":{const[s,u]=c(255);t.writeUint8(s|d.ONE),t.writeUint8(u);break}case\"i16\":{const[s,u]=c(65535);t.writeUint8(s|d.TWO),t.writeUint16(u);break}case\"i32\":{const[s,u]=c(4294967295);t.writeUint8(s|d.FOUR),t.writeUint32(u);break}case\"i64\":{const[s,u]=c(0xffffffffffffffffn);t.writeUint8(s|d.EIGHT),t.writeBigUint64(BigInt(u));break}default:throw new TypeError(`Invalid number encoding: \"${n}\"`)}return C(e,t.read())}export{ce as ENCODED,F as cdeEncodeOptions,de as clearEncoder,Y as dcborEncodeOptions,k as defaultEncodeOptions,v as encode,ae as encodedNumber,ue as registerEncoder,J as writeArray,O as writeBigInt,N as writeFloat,a as writeInt,L as writeLength,Z as writeNumber,R as writeString,Q as writeSymbol,m as writeTag,V as writeUint8Array,g as writeUnknown};\n","var o=(e=>(e[e.NEVER=-1]=\"NEVER\",e[e.PREFERRED=0]=\"PREFERRED\",e[e.ALWAYS=1]=\"ALWAYS\",e))(o||{});export{o as DiagnosticSizes};\n","import{MT as u,SIMPLE as n}from\"./constants.js\";import{writeInt as o}from\"./encoder.js\";class t{static KnownSimple=new Map([[n.FALSE,!1],[n.TRUE,!0],[n.NULL,null],[n.UNDEFINED,void 0]]);value;constructor(e){this.value=e}static create(e){return t.KnownSimple.has(e)?t.KnownSimple.get(e):new t(e)}toCBOR(e,i){if(i.rejectCustomSimples)throw new Error(`Cannot encode non-standard Simple value: ${this.value}`);o(this.value,e,u.SIMPLE_FLOAT)}toString(){return`simple(${this.value})`}decode(){return t.KnownSimple.has(this.value)?t.KnownSimple.get(this.value):this}[Symbol.for(\"nodejs.util.inspect.custom\")](e,i,r){return`simple(${r(this.value,i)})`}}export{t as Simple};\n","import{MT as s,NUMBYTES as l,SYMS as d}from\"./constants.js\";import{base64ToBytes as m,hexToU8 as b,subarrayRanges as u}from\"./utils.js\";import{Simple as g}from\"./simple.js\";import{parseHalf as E}from\"./float.js\";const p=new TextDecoder(\"utf8\",{fatal:!0,ignoreBOM:!0});class y{static defaultOptions={maxDepth:1024,encoding:\"hex\",requirePreferred:!1};#t;#r;#e=0;#i;constructor(t,r){if(this.#i={...y.defaultOptions,...r},typeof t==\"string\")switch(this.#i.encoding){case\"hex\":this.#t=b(t);break;case\"base64\":this.#t=m(t);break;default:throw new TypeError(`Encoding not implemented: \"${this.#i.encoding}\"`)}else this.#t=t;this.#r=new DataView(this.#t.buffer,this.#t.byteOffset,this.#t.byteLength)}toHere(t){return u(this.#t,t,this.#e)}*[Symbol.iterator](){if(yield*this.#n(0),this.#e!==this.#t.length)throw new Error(\"Extra data in input\")}*seq(){for(;this.#e<this.#t.length;)yield*this.#n(0)}*#n(t){if(t++>this.#i.maxDepth)throw new Error(`Maximum depth ${this.#i.maxDepth} exceeded`);const r=this.#e,c=this.#r.getUint8(this.#e++),i=c>>5,n=c&31;let e=n,f=!1,a=0;switch(n){case l.ONE:if(a=1,e=this.#r.getUint8(this.#e),i===s.SIMPLE_FLOAT){if(e<32)throw new Error(`Invalid simple encoding in extra byte: ${e}`);f=!0}else if(this.#i.requirePreferred&&e<24)throw new Error(`Unexpectedly long integer encoding (1) for ${e}`);break;case l.TWO:if(a=2,i===s.SIMPLE_FLOAT)e=E(this.#t,this.#e);else if(e=this.#r.getUint16(this.#e,!1),this.#i.requirePreferred&&e<=255)throw new Error(`Unexpectedly long integer encoding (2) for ${e}`);break;case l.FOUR:if(a=4,i===s.SIMPLE_FLOAT)e=this.#r.getFloat32(this.#e,!1);else if(e=this.#r.getUint32(this.#e,!1),this.#i.requirePreferred&&e<=65535)throw new Error(`Unexpectedly long integer encoding (4) for ${e}`);break;case l.EIGHT:{if(a=8,i===s.SIMPLE_FLOAT)e=this.#r.getFloat64(this.#e,!1);else if(e=this.#r.getBigUint64(this.#e,!1),e<=Number.MAX_SAFE_INTEGER&&(e=Number(e)),this.#i.requirePreferred&&e<=4294967295)throw new Error(`Unexpectedly long integer encoding (8) for ${e}`);break}case 28:case 29:case 30:throw new Error(`Additional info not implemented: ${n}`);case l.INDEFINITE:switch(i){case s.POS_INT:case s.NEG_INT:case s.TAG:throw new Error(`Invalid indefinite encoding for MT ${i}`);case s.SIMPLE_FLOAT:yield[i,n,d.BREAK,r,0];return}e=1/0;break;default:f=!0}switch(this.#e+=a,i){case s.POS_INT:yield[i,n,e,r,a];break;case s.NEG_INT:yield[i,n,typeof e==\"bigint\"?-1n-e:-1-Number(e),r,a];break;case s.BYTE_STRING:e===1/0?yield*this.#s(i,t,r):yield[i,n,this.#a(e),r,e];break;case s.UTF8_STRING:e===1/0?yield*this.#s(i,t,r):yield[i,n,p.decode(this.#a(e)),r,e];break;case s.ARRAY:if(e===1/0)yield*this.#s(i,t,r,!1);else{const o=Number(e);yield[i,n,o,r,a];for(let h=0;h<o;h++)yield*this.#n(t+1)}break;case s.MAP:if(e===1/0)yield*this.#s(i,t,r,!1);else{const o=Number(e);yield[i,n,o,r,a];for(let h=0;h<o;h++)yield*this.#n(t),yield*this.#n(t)}break;case s.TAG:yield[i,n,e,r,a],yield*this.#n(t);break;case s.SIMPLE_FLOAT:{const o=e;f&&(e=g.create(Number(e))),yield[i,n,e,r,o];break}}}#a(t){const r=u(this.#t,this.#e,this.#e+=t);if(r.length!==t)throw new Error(`Unexpected end of stream reading ${t} bytes, got ${r.length}`);return r}*#s(t,r,c,i=!0){for(yield[t,l.INDEFINITE,1/0,c,1/0];;){const n=this.#n(r),e=n.next(),[f,a,o]=e.value;if(o===d.BREAK){yield e.value,n.next();return}if(i){if(f!==t)throw new Error(`Unmatched major type. Expected ${t}, got ${f}.`);if(a===l.INDEFINITE)throw new Error(\"New stream started in typed stream\")}yield e.value,yield*n}}}export{y as DecodeStream};\n","import{DCBOR_INT as g,MT as a,NUMBYTES as l}from\"./constants.js\";import{DiagnosticSizes as N}from\"./options.js\";import{sortCoreDeterministic as j}from\"./sorts.js\";import{NAN as E,checkSubnormal as I}from\"./float.js\";import{box as d,getEncoded as b,saveEncoded as T}from\"./box.js\";import{defaultEncodeOptions as S,encode as O}from\"./encoder.js\";import{stringToHex as p,u8concat as D,u8toHex as m}from\"./utils.js\";import{DecodeStream as v}from\"./decodeStream.js\";import{Simple as k}from\"./simple.js\";import{Tag as w}from\"./tag.js\";const A=new Map([[l.ZERO,1],[l.ONE,2],[l.TWO,3],[l.FOUR,5],[l.EIGHT,9]]),R=new Uint8Array(0);function F(h,r){return!r.boxed&&!r.preferMap&&h.every(([i])=>typeof i==\"string\")?Object.fromEntries(h):new Map(h)}class y{static defaultDecodeOptions={...v.defaultOptions,ParentType:y,boxed:!1,cde:!1,dcbor:!1,diagnosticSizes:N.PREFERRED,collapseBigInts:!1,convertUnsafeIntsToFloat:!1,createObject:F,keepNanPayloads:!1,pretty:!1,preferBigInt:!1,preferMap:!1,rejectLargeNegatives:!1,rejectBigInts:!1,rejectDuplicateKeys:!1,rejectFloats:!1,rejectInts:!1,rejectLongLoundNaN:!1,rejectLongFloats:!1,rejectNegativeZero:!1,rejectSimple:!1,rejectStreaming:!1,rejectStringsNotNormalizedAs:null,rejectSubnormals:!1,rejectUndefined:!1,rejectUnsafeFloatInts:!1,saveOriginal:!1,sortKeys:null,tags:null,ignoreGlobalTags:!1};static cdeDecodeOptions={cde:!0,rejectStreaming:!0,requirePreferred:!0,sortKeys:j};static dcborDecodeOptions={...this.cdeDecodeOptions,dcbor:!0,convertUnsafeIntsToFloat:!0,rejectDuplicateKeys:!0,rejectLargeNegatives:!0,rejectLongLoundNaN:!0,rejectLongFloats:!0,rejectNegativeZero:!0,rejectSimple:!0,rejectUndefined:!0,rejectUnsafeFloatInts:!0,rejectStringsNotNormalizedAs:\"NFC\"};parent;mt;ai;left;offset;count=0;children=[];depth=0;#e;#t=null;constructor(r,i,e,t){if([this.mt,this.ai,,this.offset]=r,this.left=i,this.parent=e,this.#e=t,e&&(this.depth=e.depth+1),this.mt===a.MAP&&(this.#e.sortKeys||this.#e.rejectDuplicateKeys)&&(this.#t=[]),this.#e.rejectStreaming&&this.ai===l.INDEFINITE)throw new Error(\"Streaming not supported\")}get isStreaming(){return this.left===1/0}get done(){return this.left===0}static create(r,i,e,t){const[s,u,n,c]=r;switch(s){case a.POS_INT:case a.NEG_INT:{if(e.rejectInts)throw new Error(`Unexpected integer: ${n}`);if(e.rejectLargeNegatives&&n<-0x8000000000000000n)throw new Error(`Invalid 65bit negative number: ${n}`);let o=n;return e.preferBigInt?o=BigInt(o):e.convertUnsafeIntsToFloat&&o>=g.MIN&&o<=g.MAX&&(o=Number(n)),e.boxed?d(o,t.toHere(c)):o}case a.SIMPLE_FLOAT:if(u>l.ONE){if(typeof n==\"symbol\")return n;if(e.rejectFloats)throw new Error(`Decoding unwanted floating point number: ${n}`);if(e.rejectNegativeZero&&Object.is(n,-0))throw new Error(\"Decoding negative zero\");if(isNaN(n)){const o=t.toHere(c),f=new E(o);if(e.rejectLongLoundNaN){if(f.payload||o.length>3)throw new Error(`Invalid NaN encoding: \"${m(o)}\"`)}else if(e.keepNanPayloads&&(f.payload||f.sign===-1)){if(e.rejectLongFloats&&!f.isShortestEncoding)throw new Error(`NaN should have been encoded shorter: ${n}`);return f}}if(e.rejectSubnormals&&I(t.toHere(c+1)),e.rejectLongFloats){const o=O(n,{chunkSize:9,reduceUnsafeNumbers:e.rejectUnsafeFloatInts});if(o[0]>>5!==s)throw new Error(`Should have been encoded as int, not float: ${n}`);if(o.length<A.get(u))throw new Error(`Number should have been encoded shorter: ${n}`)}if(typeof n==\"number\"&&e.boxed)return d(n,t.toHere(c))}else{if(e.rejectSimple&&n instanceof k)throw new Error(`Invalid simple value: ${n}`);if(e.rejectUndefined&&n===void 0)throw new Error(\"Unexpected undefined\")}return n;case a.BYTE_STRING:case a.UTF8_STRING:if(n===1/0)return new e.ParentType(r,1/0,i,e);if(e.rejectStringsNotNormalizedAs&&typeof n==\"string\"){const o=n.normalize(e.rejectStringsNotNormalizedAs);if(n!==o)throw new Error(`String not normalized as \"${e.rejectStringsNotNormalizedAs}\", got [${p(n)}] instead of [${p(o)}]`)}return e.boxed?d(n,t.toHere(c)):n;case a.ARRAY:return new e.ParentType(r,n,i,e);case a.MAP:return new e.ParentType(r,n*2,i,e);case a.TAG:{const o=new e.ParentType(r,1,i,e);return o.children=new w(n),o}}throw new TypeError(`Invalid major type: ${s}`)}static decodeToEncodeOpts(r){return{...S,avoidInts:r.rejectInts,float64:!r.rejectLongFloats,flushToZero:r.rejectSubnormals,largeNegativeAsBigInt:r.rejectLargeNegatives,sortKeys:r.sortKeys}}push(r,i,e){if(this.children.push(r),this.#t){const t=b(r)||i.toHere(e);this.#t.push(t)}return--this.left}replaceLast(r,i,e){let t,s=-1/0;if(this.children instanceof w?(s=0,t=this.children.contents,this.children.contents=r):(s=this.children.length-1,t=this.children[s],this.children[s]=r),this.#t){const u=b(r)||e.toHere(i.offset);this.#t[s]=u}return t}convert(r){let i;switch(this.mt){case a.ARRAY:i=this.children;break;case a.MAP:{const e=this.#r();if(this.#e.sortKeys){let t;for(const s of e){if(t&&this.#e.sortKeys(t,s)>=0)throw new Error(`Duplicate or out of order key: \"0x${s[2]}\"`);t=s}}else if(this.#e.rejectDuplicateKeys){const t=new Set;for(const[s,u,n]of e){const c=m(n);if(t.has(c))throw new Error(`Duplicate key: \"0x${c}\"`);t.add(c)}}i=this.#e.createObject(e,this.#e);break}case a.BYTE_STRING:return D(this.children);case a.UTF8_STRING:{const e=this.children.join(\"\");i=this.#e.boxed?d(e,r.toHere(this.offset)):e;break}case a.TAG:i=this.children.decode(this.#e);break;default:throw new TypeError(`Invalid mt on convert: ${this.mt}`)}return this.#e.saveOriginal&&i&&typeof i==\"object\"&&T(i,r.toHere(this.offset)),i}#r(){const r=this.children,i=r.length;if(i%2)throw new Error(\"Missing map value\");const e=new Array(i/2);if(this.#t)for(let t=0;t<i;t+=2)e[t>>1]=[r[t],r[t+1],this.#t[t]];else for(let t=0;t<i;t+=2)e[t>>1]=[r[t],r[t+1],R];return e}}export{y as CBORcontainer};\n","import{DiagnosticSizes as b}from\"./options.js\";import{MT as s,NUMBYTES as f,SYMS as d}from\"./constants.js\";import{CBORcontainer as S}from\"./container.js\";import{DecodeStream as E}from\"./decodeStream.js\";import{Simple as N}from\"./simple.js\";import{halfToUint as I}from\"./float.js\";import{u8toHex as _}from\"./utils.js\";const O=\" \",y=new TextEncoder;class g extends S{close=\"\";quote='\"';get isEmptyStream(){return(this.mt===s.UTF8_STRING||this.mt===s.BYTE_STRING)&&this.count===0}}function a(m,l,n,p){let t=\"\";if(l===f.INDEFINITE)t+=\"_\";else{if(p.diagnosticSizes===b.NEVER)return\"\";{let r=p.diagnosticSizes===b.ALWAYS;if(!r){let e=f.ZERO;if(Object.is(n,-0))e=f.TWO;else if(m===s.POS_INT||m===s.NEG_INT){const T=n<0,u=typeof n==\"bigint\"?1n:1,o=T?-n-u:n;o<=23?e=Number(o):o<=255?e=f.ONE:o<=65535?e=f.TWO:o<=4294967295?e=f.FOUR:e=f.EIGHT}else isFinite(n)?Math.fround(n)===n?I(n)==null?e=f.FOUR:e=f.TWO:e=f.EIGHT:e=f.TWO;r=e!==l}r&&(t+=\"_\",l<f.ONE?t+=\"i\":t+=String(l-24))}}return t}function M(m,l){const n={...S.defaultDecodeOptions,...l,ParentType:g},p=new E(m,n);let t,r,e=\"\";for(const T of p){const[u,o,i]=T;switch(t&&(t.count>0&&i!==d.BREAK&&(t.mt===s.MAP&&t.count%2?e+=\": \":(e+=\",\",n.pretty||(e+=\" \"))),n.pretty&&(t.mt!==s.MAP||t.count%2===0)&&(e+=`\n${O.repeat(t.depth+1)}`)),r=S.create(T,t,n,p),u){case s.POS_INT:case s.NEG_INT:e+=String(i),e+=a(u,o,i,n);break;case s.SIMPLE_FLOAT:if(i!==d.BREAK)if(typeof i==\"number\"){const c=Object.is(i,-0)?\"-0.0\":String(i);e+=c,isFinite(i)&&!/[.e]/.test(c)&&(e+=\".0\"),e+=a(u,o,i,n)}else i instanceof N?(e+=\"simple(\",e+=String(i.value),e+=a(s.POS_INT,o,i.value,n),e+=\")\"):e+=String(i);break;case s.BYTE_STRING:i===1/0?(e+=\"(_ \",r.close=\")\",r.quote=\"'\"):(e+=\"h'\",e+=_(i),e+=\"'\",e+=a(s.POS_INT,o,i.length,n));break;case s.UTF8_STRING:i===1/0?(e+=\"(_ \",r.close=\")\"):(e+=JSON.stringify(i),e+=a(s.POS_INT,o,y.encode(i).length,n));break;case s.ARRAY:{e+=\"[\";const c=a(s.POS_INT,o,i,n);e+=c,c&&(e+=\" \"),n.pretty&&i?r.close=`\n${O.repeat(r.depth)}]`:r.close=\"]\";break}case s.MAP:{e+=\"{\";const c=a(s.POS_INT,o,i,n);e+=c,c&&(e+=\" \"),n.pretty&&i?r.close=`\n${O.repeat(r.depth)}}`:r.close=\"}\";break}case s.TAG:e+=String(i),e+=a(s.POS_INT,o,i,n),e+=\"(\",r.close=\")\";break}if(r===d.BREAK)if(t?.isStreaming)t.left=0;else throw new Error(\"Unexpected BREAK\");else t&&(t.count++,t.left--);for(r instanceof g&&(t=r);t?.done;){if(t.isEmptyStream)e=e.slice(0,-3),e+=`${t.quote}${t.quote}_`;else{if(t.mt===s.MAP&&t.count%2!==0)throw new Error(`Odd streaming map size: ${t.count}`);e+=t.close}t=t.parent}}return e}export{M as diagnose};\n","import{MT as u,NUMBYTES as b,SYMS as E}from\"./constants.js\";import{getEncoded as B,saveEncoded as R}from\"./box.js\";import{getRanges as S,subarrayRanges as I,u8toHex as C}from\"./utils.js\";import{CBORcontainer as T}from\"./container.js\";import{DecodeStream as M}from\"./decodeStream.js\";import{Simple as N}from\"./simple.js\";import{Tag as P}from\"./tag.js\";import{diagnose as U}from\"./diagnostic.js\";const H=new TextDecoder;class A extends T{depth=0;leaf=!1;value;length;[E.ENCODED];constructor(a,f,e,n){super(a,f,e,n),this.parent?this.depth=this.parent.depth+1:this.depth=n.initialDepth,[,,this.value,,this.length]=a}numBytes(){switch(this.ai){case b.ONE:return 1;case b.TWO:return 2;case b.FOUR:return 4;case b.EIGHT:return 8}return 0}}function k(t){return t instanceof A}function O(t,a){return t===1/0?\"Indefinite\":a?`${t} ${a}${t!==1&&t!==1n?\"s\":\"\"}`:String(t)}function y(t){return\"\".padStart(t,\" \")}function x(t,a,f){let e=\"\";e+=y(t.depth*2);const n=B(t);e+=C(n.subarray(0,1));const r=t.numBytes();r&&(e+=\" \",e+=C(n.subarray(1,r+1))),e=e.padEnd(a.minCol+1,\" \"),e+=\"-- \",f!==void 0&&(e+=y(t.depth*2),f!==\"\"&&(e+=`[${f}] `));let p=!1;const[s]=t.children;switch(t.mt){case u.POS_INT:e+=`Unsigned: ${s}`,typeof s==\"bigint\"&&(e+=\"n\");break;case u.NEG_INT:e+=`Negative: ${s}`,typeof s==\"bigint\"&&(e+=\"n\");break;case u.BYTE_STRING:e+=`Bytes (Length: ${O(t.length)})`;break;case u.UTF8_STRING:e+=`UTF8 (Length: ${O(t.length)})`,t.length!==1/0&&(e+=`: ${JSON.stringify(s)}`);break;case u.ARRAY:e+=`Array (Length: ${O(t.value,\"item\")})`;break;case u.MAP:e+=`Map (Length: ${O(t.value,\"pair\")})`;break;case u.TAG:{e+=`Tag #${t.value}`;const o=t.children,[m]=o.contents.children,i=new P(o.tag,m);R(i,n);const l=i.comment(a,t.depth);l&&(e+=\": \",e+=l),p||=i.noChildren;break}case u.SIMPLE_FLOAT:s===E.BREAK?e+=\"BREAK\":t.ai>b.ONE?Object.is(s,-0)?e+=\"Float: -0\":e+=`Float: ${s}`:(e+=\"Simple: \",s instanceof N?e+=s.value:e+=s);break}if(!p)if(t.leaf){if(e+=`\n`,n.length>r+1){const o=y((t.depth+1)*2),m=S(n);if(m?.length){m.sort((l,c)=>{const g=l[0]-c[0];return g||c[1]-l[1]});let i=0;for(const[l,c,g]of m)if(!(l<i)){if(i=l+c,g===\"<<\"){e+=y(a.minCol+1),e+=\"--\",e+=o,e+=\"<< \";const d=I(n,l,l+c),h=S(d);if(h){const $=h.findIndex(([w,D,v])=>w===0&&D===c&&v===\"<<\");$>=0&&h.splice($,1)}e+=U(d),e+=` >>\n`,e+=L(d,{initialDepth:t.depth+1,minCol:a.minCol,noPrefixHex:!0});continue}else g===\"'\"&&(e+=y(a.minCol+1),e+=\"--\",e+=o,e+=\"'\",e+=H.decode(n.subarray(l,l+c)),e+=`'\n`);if(l>r)for(let d=l;d<l+c;d+=8){const h=Math.min(d+8,l+c);e+=o,e+=C(n.subarray(d,h)),e+=`\n`}}}else for(let i=r+1;i<n.length;i+=8)e+=o,e+=C(n.subarray(i,i+8)),e+=`\n`}}else{e+=`\n`;let o=0;for(const m of t.children){if(k(m)){let i=String(o);t.mt===u.MAP?i=o%2?`val ${(o-1)/2}`:`key ${o/2}`:t.mt===u.TAG&&(i=\"\"),e+=x(m,a,i)}o++}}return e}const q={...T.defaultDecodeOptions,initialDepth:0,noPrefixHex:!1,minCol:0};function L(t,a){const f={...q,...a,ParentType:A,saveOriginal:!0},e=new M(t,f);let n,r;for(const s of e){if(r=T.create(s,n,f,e),s[2]===E.BREAK)if(n?.isStreaming)n.left=1;else throw new Error(\"Unexpected BREAK\");if(!k(r)){const i=new A(s,0,n,f);i.leaf=!0,i.children.push(r),R(i,e.toHere(s[3])),r=i}let o=(r.depth+1)*2;const m=r.numBytes();for(m&&(o+=1,o+=m*2),f.minCol=Math.max(f.minCol,o),n&&n.push(r,e,s[3]),n=r;n?.done;)r=n,r.leaf||R(r,e.toHere(r.offset)),{parent:n}=n}a&&(a.minCol=f.minCol);let p=f.noPrefixHex?\"\":`0x${C(e.toHere(0))}\n`;return p+=x(r,f),p}export{L as comment};\n","import{MT as O,TAG as o}from\"./constants.js\";import{box as q,getEncoded as F}from\"./box.js\";import{base64ToBytes as v,base64UrlToBytes as V,isBigEndian as W,u8toHex as A}from\"./utils.js\";import{encode as b,registerEncoder as s,writeInt as k,writeLength as P,writeTag as M,writeUnknown as K}from\"./encoder.js\";import{CBORcontainer as G}from\"./container.js\";import{Tag as t}from\"./tag.js\";import{Wtf8Decoder as B}from\"@cto.af/wtf8\";import{comment as Y}from\"./comment.js\";const U=!W();function I(e){if(typeof e==\"object\"&&e){if(e.constructor!==Number)throw new Error(`Expected number: ${e}`)}else if(typeof e!=\"number\")throw new Error(`Expected number: ${e}`)}function f(e){if(typeof e==\"object\"&&e){if(e.constructor!==String)throw new Error(`Expected string: ${e}`)}else if(typeof e!=\"string\")throw new Error(`Expected string: ${e}`)}function E(e){if(!(e instanceof Uint8Array))throw new Error(`Expected Uint8Array: ${e}`)}function _(e){if(!Array.isArray(e))throw new Error(`Expected Array: ${e}`)}s(Map,(e,r,n)=>{const i=[...e.entries()].map(a=>[a[0],a[1],b(a[0],n)]);if(n.rejectDuplicateKeys){const a=new Set;for(const[d,u,g]of i){const y=A(g);if(a.has(y))throw new Error(`Duplicate map key: 0x${y}`);a.add(y)}}n.sortKeys&&i.sort(n.sortKeys),P(e,e.size,O.MAP,r,n);for(const[a,d,u]of i)r.write(u),K(d,r,n)});function w(e){return f(e.contents),new Date(e.contents)}w.comment=e=>{f(e.contents);const r=new Date(e.contents);return`(String ${e.tag===o.DATE_FULL?\"Full \":\"\"}Date) ${r.toISOString()}`},t.registerDecoder(o.DATE_STRING,w),t.registerDecoder(o.DATE_FULL,w);function N(e){return I(e.contents),new Date(e.contents*1e3)}N.comment=e=>(I(e.contents),`(Epoch Date) ${new Date(e.contents*1e3).toISOString()}`),t.registerDecoder(o.DATE_EPOCH,N);const S=1e3*60*60*24;function $(e){return I(e.contents),new Date(e.contents*S)}$.comment=e=>(I(e.contents),`(Epoch Date) ${new Date(e.contents*S).toISOString()}`),t.registerDecoder(o.DATE_EPOCH_DAYS,$),s(Date,(e,r,n)=>{switch(n.dateTag){case o.DATE_EPOCH:return[n.dateTag,e.valueOf()/1e3];case o.DATE_STRING:return[n.dateTag,e.toISOString().replace(/\\.000Z$/,\"Z\")];case o.DATE_EPOCH_DAYS:return[n.dateTag,Math.floor(e.valueOf()/S)];case o.DATE_FULL:return[n.dateTag,e.toISOString().split(\"T\")[0]];default:throw new Error(`Unsupported date tag: ${n.dateTag}`)}});function m(e,r,n){if(E(r.contents),n.rejectBigInts)throw new Error(`Decoding unwanted big integer: ${r}(h'${A(r.contents)}')`);if(n.requirePreferred&&r.contents[0]===0)throw new Error(`Decoding overly-large bigint: ${r.tag}(h'${A(r.contents)})`);let i=r.contents.reduce((d,u)=>d<<8n|BigInt(u),0n);e&&(i=-1n-i);const a=i>=Number.MIN_SAFE_INTEGER&&i<=Number.MAX_SAFE_INTEGER;if(n.requirePreferred&&a)throw new Error(`Decoding bigint that could have been int: ${i}n`);return n.collapseBigInts&&a&&(i=Number(i)),n.boxed?q(i,r.contents):i}const L=m.bind(null,!1),x=m.bind(null,!0);L.comment=(e,r)=>`(Positive BigInt) ${m(!1,e,r)}n`,x.comment=(e,r)=>`(Negative BigInt) ${m(!0,e,r)}n`,t.registerDecoder(o.POS_BIGINT,L),t.registerDecoder(o.NEG_BIGINT,x);function R(e,r){return E(e.contents),e}R.comment=(e,r,n)=>{E(e.contents);const i={...r,initialDepth:n+2,noPrefixHex:!0},a=F(e);let u=2**((a[0]&31)-24)+1;const g=a[u]&31;let y=A(a.subarray(u,++u));g>=24&&(y+=\" \",y+=A(a.subarray(u,u+2**(g-24)))),i.minCol=Math.max(i.minCol,(n+1)*2+y.length);const D=Y(e.contents,i);let T=`Embedded CBOR\n`;return T+=`${\"\".padStart((n+1)*2,\" \")}${y}`.padEnd(i.minCol+1,\" \"),T+=`-- Bytes (Length: ${e.contents.length})\n`,T+=D,T},R.noChildren=!0,t.registerDecoder(o.CBOR,R),t.registerDecoder(o.URI,e=>(f(e.contents),new URL(e.contents)),\"URI\"),s(URL,e=>[o.URI,e.toString()]),t.registerDecoder(o.BASE64URL,e=>(f(e.contents),V(e.contents)),\"Base64url-encoded\"),t.registerDecoder(o.BASE64,e=>(f(e.contents),v(e.contents)),\"Base64-encoded\"),t.registerDecoder(35,e=>(f(e.contents),new RegExp(e.contents)),\"RegExp\"),t.registerDecoder(21065,e=>{f(e.contents);const r=`^(?:${e.contents})$`;return new RegExp(r,\"u\")},\"I-RegExp\"),t.registerDecoder(o.REGEXP,e=>{if(_(e.contents),e.contents.length<1||e.contents.length>2)throw new Error(`Invalid RegExp Array: ${e.contents}`);return new RegExp(e.contents[0],e.contents[1])},\"RegExp\"),s(RegExp,e=>[o.REGEXP,[e.source,e.flags]]),t.registerDecoder(64,e=>(E(e.contents),e.contents),\"uint8 Typed Array\");function c(e,r,n){E(e.contents);let i=e.contents.length;if(i%r.BYTES_PER_ELEMENT!==0)throw new Error(`Number of bytes must be divisible by ${r.BYTES_PER_ELEMENT}, got: ${i}`);i/=r.BYTES_PER_ELEMENT;const a=new r(i),d=new DataView(e.contents.buffer,e.contents.byteOffset,e.contents.byteLength),u=d[`get${r.name.replace(/Array/,\"\")}`].bind(d);for(let g=0;g<i;g++)a[g]=u(g*r.BYTES_PER_ELEMENT,n);return a}function l(e,r,n,i,a){const d=a.forceEndian??U;if(M(d?r:n,e,a),k(i.byteLength,e,O.BYTE_STRING),U===d)e.write(new Uint8Array(i.buffer,i.byteOffset,i.byteLength));else{const g=`write${i.constructor.name.replace(/Array/,\"\")}`,y=e[g].bind(e);for(const D of i)y(D,d)}}t.registerDecoder(65,e=>c(e,Uint16Array,!1),\"uint16, big endian, Typed Array\"),t.registerDecoder(66,e=>c(e,Uint32Array,!1),\"uint32, big endian, Typed Array\"),t.registerDecoder(67,e=>c(e,BigUint64Array,!1),\"uint64, big endian, Typed Array\"),t.registerDecoder(68,e=>(E(e.contents),new Uint8ClampedArray(e.contents)),\"uint8 Typed Array, clamped arithmetic\"),s(Uint8ClampedArray,e=>[68,new Uint8Array(e.buffer,e.byteOffset,e.byteLength)]),t.registerDecoder(69,e=>c(e,Uint16Array,!0),\"uint16, little endian, Typed Array\"),s(Uint16Array,(e,r,n)=>l(r,69,65,e,n)),t.registerDecoder(70,e=>c(e,Uint32Array,!0),\"uint32, little endian, Typed Array\"),s(Uint32Array,(e,r,n)=>l(r,70,66,e,n)),t.registerDecoder(71,e=>c(e,BigUint64Array,!0),\"uint64, little endian, Typed Array\"),s(BigUint64Array,(e,r,n)=>l(r,71,67,e,n)),t.registerDecoder(72,e=>(E(e.contents),new Int8Array(e.contents)),\"sint8 Typed Array\"),s(Int8Array,e=>[72,new Uint8Array(e.buffer,e.byteOffset,e.byteLength)]),t.registerDecoder(73,e=>c(e,Int16Array,!1),\"sint16, big endian, Typed Array\"),t.registerDecoder(74,e=>c(e,Int32Array,!1),\"sint32, big endian, Typed Array\"),t.registerDecoder(75,e=>c(e,BigInt64Array,!1),\"sint64, big endian, Typed Array\"),t.registerDecoder(77,e=>c(e,Int16Array,!0),\"sint16, little endian, Typed Array\"),s(Int16Array,(e,r,n)=>l(r,77,73,e,n)),t.registerDecoder(78,e=>c(e,Int32Array,!0),\"sint32, little endian, Typed Array\"),s(Int32Array,(e,r,n)=>l(r,78,74,e,n)),t.registerDecoder(79,e=>c(e,BigInt64Array,!0),\"sint64, little endian, Typed Array\"),s(BigInt64Array,(e,r,n)=>l(r,79,75,e,n)),t.registerDecoder(81,e=>c(e,Float32Array,!1),\"IEEE 754 binary32, big endian, Typed Array\"),t.registerDecoder(82,e=>c(e,Float64Array,!1),\"IEEE 754 binary64, big endian, Typed Array\"),t.registerDecoder(85,e=>c(e,Float32Array,!0),\"IEEE 754 binary32, little endian, Typed Array\"),s(Float32Array,(e,r,n)=>l(r,85,81,e,n)),t.registerDecoder(86,e=>c(e,Float64Array,!0),\"IEEE 754 binary64, big endian, Typed Array\"),s(Float64Array,(e,r,n)=>l(r,86,82,e,n)),t.registerDecoder(o.SET,(e,r)=>{if(_(e.contents),r.sortKeys){const n=G.decodeToEncodeOpts(r);let i=null;for(const a of e.contents){const d=[a,void 0,b(a,n)];if(i&&r.sortKeys(i,d)>=0)throw new Error(`Set items out of order in tag #${o.SET}`);i=d}}return new Set(e.contents)},\"Set\"),s(Set,(e,r,n)=>{let i=[...e];if(n.sortKeys){const a=i.map(d=>[d,void 0,b(d,n)]);a.sort(n.sortKeys),i=a.map(([d])=>d)}return[o.SET,i]}),t.registerDecoder(o.JSON,e=>(f(e.contents),JSON.parse(e.contents)),\"JSON-encoded\");function C(e){return E(e.contents),new B().decode(e.contents)}C.comment=e=>{E(e.contents);const r=new B;return`(WTF8 string): ${JSON.stringify(r.decode(e.contents))}`},t.registerDecoder(o.WTF8,C),t.registerDecoder(o.SELF_DESCRIBED,e=>e.contents,\"Self-Described\"),t.registerDecoder(o.INVALID_16,()=>{throw new Error(`Tag always invalid: ${o.INVALID_16}`)},\"Invalid\"),t.registerDecoder(o.INVALID_32,()=>{throw new Error(`Tag always invalid: ${o.INVALID_32}`)},\"Invalid\"),t.registerDecoder(o.INVALID_64,()=>{throw new Error(`Tag always invalid: ${o.INVALID_64}`)},\"Invalid\"),t.registerDecoder(o.SYMBOL,e=>{let r=e.contents;if(Array.isArray(e.contents)){if(e.contents.length!==1)throw new Error(`Expected Array of size 1: ${e.contents}`);[r]=e.contents}if(f(r),!r.length)throw new Error(`Expected non-empty string: ${e.contents}`);return Symbol.for(r)},\"Symbol\");function h(e){throw new Error(`Encoding ${e.constructor.name} intentionally unimplmented. It is not concrete enough to interoperate. Convert to Uint8Array first.`)}s(ArrayBuffer,h),s(DataView,h),typeof SharedArrayBuffer<\"u\"&&s(SharedArrayBuffer,h);function p(e){return[NaN,e.valueOf()]}s(Boolean,p),s(Number,p),s(String,p),s(BigInt,p);\n","import{DecodeStream as a}from\"./decodeStream.js\";import{CBORcontainer as s}from\"./container.js\";import{SYMS as u}from\"./constants.js\";function c(i){const e={...s.defaultDecodeOptions};if(i.dcbor?Object.assign(e,s.dcborDecodeOptions):i.cde&&Object.assign(e,s.cdeDecodeOptions),Object.assign(e,i),Object.hasOwn(e,\"rejectLongNumbers\"))throw new TypeError(\"rejectLongNumbers has changed to requirePreferred\");return e.boxed&&(e.saveOriginal=!0),e}class d{parent=void 0;ret=void 0;step(e,n,t){if(this.ret=s.create(e,this.parent,n,t),e[2]===u.BREAK)if(this.parent?.isStreaming)this.parent.left=0;else throw new Error(\"Unexpected BREAK\");else this.parent&&this.parent.push(this.ret,t,e[3]);for(this.ret instanceof s&&(this.parent=this.ret);this.parent?.done;){this.ret=this.parent.convert(t);const r=this.parent.parent;r?.replaceLast(this.ret,this.parent,t),this.parent=r}}}function l(i,e={}){const n=c(e),t=new a(i,n),r=new d;for(const o of t)r.step(o,n,t);return r.ret}class O{#t;#e;constructor(e,n={}){const t=new a(e,c(n));this.#t=t.seq()}peek(){return this.#e||(this.#e=this.#n()),this.#e}read(){const e=this.#e??this.#n();return this.#e=void 0,e}*[Symbol.iterator](){for(;;){const e=this.read();if(!e)return;yield e}}#n(){const{value:e,done:n}=this.#t.next();if(!n)return e}}function*b(i,e={}){const n=c(e),t=new a(i,n),r=new d;for(const o of t.seq())r.step(o,n,t),r.parent||(yield r.ret)}export{O as SequenceEvents,l as decode,b as decodeSequence};\n","import\"./types.js\";import{version as i}from\"./version.js\";import{CBORcontainer as e}from\"./container.js\";import{DiagnosticSizes as m}from\"./options.js\";import{decode as O,decodeSequence as f,SequenceEvents as u}from\"./decoder.js\";import{diagnose as g}from\"./diagnostic.js\";import{comment as D}from\"./comment.js\";import{cdeEncodeOptions as y,defaultEncodeOptions as S,dcborEncodeOptions as T,encode as b,encodedNumber as C}from\"./encoder.js\";import{Simple as q}from\"./simple.js\";import{Tag as v}from\"./tag.js\";import{Writer as V}from\"./writer.js\";import{saveEncoded as B,saveEncodedLength as I,unbox as M,getEncoded as W}from\"./box.js\";const{cdeDecodeOptions:r,dcborDecodeOptions:n,defaultDecodeOptions:d}=e;import{TypeEncoderMap as P}from\"./typeEncoderMap.js\";import{NAN as G,NAN_SIZE as L}from\"./float.js\";export{m as DiagnosticSizes,G as NAN,L as NAN_SIZE,u as SequenceEvents,q as Simple,v as Tag,P as TypeEncoderMap,V as Writer,r as cdeDecodeOptions,y as cdeEncodeOptions,D as comment,n as dcborDecodeOptions,T as dcborEncodeOptions,O as decode,f as decodeSequence,d as defaultDecodeOptions,S as defaultEncodeOptions,g as diagnose,b as encode,C as encodedNumber,W as getEncoded,B as saveEncoded,I as saveEncodedLength,M as unbox,i as version};\n","// Every canonical-CBOR decode violation collapses to the single public CIP-309\n// taxonomy code MALFORMED_CBOR: indefinite-length (streaming) items, duplicate\n// keys, unsorted keys, non-minimal integer encodings, and invalid UTF-8 in text\n// strings. The taxonomy intentionally has one code for all of these; the\n// specific cause survives in the human-readable error message, not as a\n// separate code.\nexport type CanonicalCborErrorCode = 'MALFORMED_CBOR';\n\nexport class CanonicalCborError extends Error {\n readonly code: CanonicalCborErrorCode;\n\n constructor(code: CanonicalCborErrorCode, message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = 'CanonicalCborError';\n this.code = code;\n }\n}\n","import { cdeDecodeOptions, decode, encode } from 'cbor2';\nimport { sortCoreDeterministic } from 'cbor2/sorts';\n\nimport { CanonicalCborError } from './errors';\n\nexport type CanonicalCborValue =\n | null\n | boolean\n | number\n | bigint\n | string\n | Uint8Array\n | readonly CanonicalCborValue[]\n | { readonly [key: string]: CanonicalCborValue }\n | ReadonlyMap<string | number, CanonicalCborValue>;\n\nexport function encodeCanonicalCbor(value: CanonicalCborValue): Uint8Array {\n return encode(value, {\n cde: true,\n collapseBigInts: true,\n rejectDuplicateKeys: true,\n sortKeys: sortCoreDeterministic,\n });\n}\n\nexport function decodeCanonicalCbor(bytes: Uint8Array): unknown {\n try {\n return decode(bytes, {\n ...cdeDecodeOptions,\n rejectStreaming: true,\n rejectDuplicateKeys: true,\n // A CIP-309 record carries integers, byte/text strings, arrays, maps and\n // `null` — and nothing else. Without these rejections the major-type-7\n // surface leaks into the decoder: a float16/32/64 that happens to hold an\n // integral value (e.g. 1.0) silently decodes to the integer 1 and passes\n // a `z.literal(1)` / Number.isInteger schema check, so two byte strings\n // that are NOT byte-identical canonicalise to the same record. That\n // breaks the cross-implementation parity invariant (the Python twin\n // already rejects non-integer `v` / `enc.scheme` outright). Reject the\n // whole non-record surface — floats, negative zero, undefined, and\n // non-{true,false,null} simple values — so any such input surfaces as\n // MALFORMED_CBOR via mapDecodeError rather than decoding to a look-alike.\n rejectFloats: true,\n rejectNegativeZero: true,\n rejectUndefined: true,\n rejectSimple: true,\n });\n } catch (cause) {\n throw mapDecodeError(cause);\n }\n}\n\nfunction mapDecodeError(cause: unknown): CanonicalCborError {\n const message = cause instanceof Error ? cause.message : String(cause);\n const lower = message.toLowerCase();\n // Every canonical-decode violation collapses to the single public taxonomy\n // code MALFORMED_CBOR: indefinite-length (streaming) items, duplicate keys,\n // non-canonical (unsorted) key ordering, non-minimal integer encodings, and\n // invalid UTF-8 in text strings. cbor2 raises the SAME \"Duplicate or out of\n // order key\" message for both true duplicates AND distinct-but-unsorted keys,\n // so the two are indistinguishable by message — and per the CIP-309 taxonomy\n // both belong under MALFORMED_CBOR anyway. The specific cause survives in the\n // human-readable message below; for indefinite-length we state it explicitly\n // so the diagnostic is not lost when the code is collapsed.\n const isIndefinite = lower.includes('streaming') || lower.includes('indefinite');\n const detail = isIndefinite\n ? `indefinite-length items are not permitted in canonical CBOR: ${message}`\n : message;\n return new CanonicalCborError('MALFORMED_CBOR', `cbor decode failed: ${detail}`, { cause });\n}\n","// CIP-309 v1 record encoder.\n//\n// Produces canonical CBOR bytes per RFC 8949 §4.2.1 deterministic encoding —\n// definite-length, sorted bytewise lex map keys, no duplicates, preferred\n// integer/float form. The canonical layer (`@cardanowall/crypto-core/cbor`)\n// configures `cbor2` with `cde: true, rejectDuplicateKeys: true`, so the\n// encoder's only job is to translate the validator-typed record shape into\n// the `CanonicalCborValue` algebra.\n//\n// Wire-shape contract:\n// - `items[i].hashes` is a CBOR MAP (text-keyed) — not an array of `{alg,h}`.\n// - `merkle[]` is a top-level array, peer to `items` and `sigs`.\n// - Each `sigs[i]` is a CBOR MAP `{cose_sign1, ? cose_key}` (canonical\n// sort places the optional `cose_key` BEFORE `cose_sign1`).\n// - The encryption envelope uses `scheme` (NOT `v`), `aead` (NOT `alg`),\n// `nonce` (NOT `iv`), `slots` (NOT `recipients`), `slots_mac` (NOT\n// `hdr_mac`); the KEM identifier is hoisted to envelope scope as `kem`.\n// - The passphrase block uses key name `passphrase` and `alg = \"argon2id\"`.\n//\n// Round-trip property: for every record `R` that the validator accepts,\n// validate(encode(R)).ok === true\n// && validate(encode(R)).record ≡ R (modulo CBOR-canonical key sort)\n\nimport { encodeCanonicalCbor, type CanonicalCborValue } from '@cardanowall/crypto-core/cbor';\n\nimport type {\n EncryptionEnvelope,\n ItemEntry,\n MerkleCommit,\n PassphraseBlock,\n PoeRecord,\n SigEntry,\n Slot,\n} from './schema';\n\ntype CborMap = { [key: string]: CanonicalCborValue };\n\nexport function encodePoeRecord(record: PoeRecord): Uint8Array {\n return encodeCanonicalCbor(recordToCbor(record));\n}\n\n// Helper: build the canonical-CBOR `record_body` (the bytes that record-level\n// `sigs[i]` signs over). The body is the full record map MINUS the `sigs`\n// field; producers prepend the 25-byte UTF-8 domain prefix\n// `cardano-poe-record-sig-v1` before invoking Ed25519 (the crypto-core\n// helper `buildCip309SigStructure` handles the prefix and `Sig_structure`\n// wrapping).\nexport function encodeRecordBodyForSigning(record: PoeRecord): Uint8Array {\n const body: CborMap = recordToCborInternal(record, /* includeSigs */ false);\n return encodeCanonicalCbor(body);\n}\n\nfunction recordToCbor(record: PoeRecord): CanonicalCborValue {\n return recordToCborInternal(record, /* includeSigs */ true);\n}\n\nfunction recordToCborInternal(record: PoeRecord, includeSigs: boolean): CborMap {\n const out: CborMap = { v: record.v };\n if (record.items !== undefined) out['items'] = record.items.map(itemToCbor);\n if (record.merkle !== undefined) out['merkle'] = record.merkle.map(merkleToCbor);\n if (record.supersedes !== undefined) out['supersedes'] = record.supersedes;\n if (includeSigs && record.sigs !== undefined) out['sigs'] = record.sigs.map(sigEntryToCbor);\n if (record.crit !== undefined) out['crit'] = record.crit.slice();\n // Preserve extension keys verbatim — they are part of the signed\n // `record_body` and MUST round-trip byte-identical.\n for (const [k, v] of Object.entries(record)) {\n if (\n k === 'v' ||\n k === 'items' ||\n k === 'merkle' ||\n k === 'supersedes' ||\n k === 'sigs' ||\n k === 'crit'\n ) {\n continue;\n }\n out[k] = v as CanonicalCborValue;\n }\n return out;\n}\n\nfunction itemToCbor(item: ItemEntry): CanonicalCborValue {\n const out: CborMap = { hashes: hashesToCbor(item.hashes) };\n if (item.uris !== undefined) {\n out['uris'] = item.uris.map((chunks) => chunks.slice());\n }\n if (item.enc !== undefined) {\n out['enc'] = envelopeToCbor(item.enc as EncryptionEnvelope);\n }\n return out;\n}\n\nfunction hashesToCbor(hashes: Readonly<Record<string, Uint8Array>>): CanonicalCborValue {\n // text-keyed CBOR map — canonical sort orders by encoded-key bytewise lex\n // automatically (`sha2-256` `0x68` precedes `blake2b-256` `0x6b`).\n const out: CborMap = {};\n for (const [alg, digest] of Object.entries(hashes)) {\n out[alg] = digest;\n }\n return out;\n}\n\nfunction merkleToCbor(commit: MerkleCommit): CanonicalCborValue {\n const out: CborMap = {\n alg: commit.alg,\n root: commit.root,\n leaf_count: commit.leaf_count,\n };\n if (commit.uris !== undefined) {\n out['uris'] = commit.uris.map((chunks) => chunks.slice());\n }\n return out;\n}\n\nfunction envelopeToCbor(enc: EncryptionEnvelope): CanonicalCborValue {\n const out: CborMap = {\n scheme: enc.scheme as CanonicalCborValue,\n aead: enc.aead,\n nonce: enc.nonce,\n };\n if (enc.kem !== undefined) out['kem'] = enc.kem;\n if (enc.slots !== undefined) out['slots'] = enc.slots.map(slotToCbor);\n if (enc.slots_mac !== undefined) out['slots_mac'] = enc.slots_mac;\n if (enc.passphrase !== undefined) out['passphrase'] = passphraseToCbor(enc.passphrase);\n return out;\n}\n\nfunction slotToCbor(slot: Slot): CanonicalCborValue {\n // KEM-driven slot serialization. The canonical encoder sorts map keys by\n // length-then-bytewise (RFC 8949 §4.2.1), so it emits `wrap` (4-byte key)\n // before `kem_ct` (6-byte key) and `epk` (3-byte key) before `wrap`\n // automatically — insertion order here is irrelevant to the wire bytes.\n //\n // - x25519: `{ epk: bstr(32), wrap: bstr(48) }`\n // - mlkem768x25519: `{ kem_ct: [ bstr, ... ], wrap: bstr(48) }` — `kem_ct`\n // is the already-chunked array (NOT re-chunked here), so the bytes match\n // what crypto-core committed to `slots_mac` byte-for-byte.\n if (slot.kem_ct !== undefined) {\n return { kem_ct: slot.kem_ct.map((c) => c), wrap: slot.wrap! };\n }\n return { epk: slot.epk!, wrap: slot.wrap! };\n}\n\nfunction passphraseToCbor(pp: PassphraseBlock): CanonicalCborValue {\n return {\n alg: pp.alg,\n salt: pp.salt,\n params: pp.params as { readonly [key: string]: CanonicalCborValue },\n };\n}\n\nfunction sigEntryToCbor(entry: SigEntry): CanonicalCborValue {\n const out: CborMap = { cose_sign1: entry.cose_sign1.map((b) => b) };\n if (entry.cose_key !== undefined) {\n out['cose_key'] = entry.cose_key.map((b) => b);\n }\n return out;\n}\n","/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\n/**\n * 5KB JS implementation of ed25519 EdDSA signatures.\n * Targets RFC8032, FIPS 186-5, and ZIP215 behavior.\n * @module\n * @example\n * ```js\nimport * as ed from '@noble/ed25519';\n(async () => {\n const secretKey = ed.utils.randomSecretKey();\n const message = Uint8Array.from([0xab, 0xbc, 0xcd, 0xde]);\n const pubKey = await ed.getPublicKeyAsync(secretKey); // Sync methods are also present\n const signature = await ed.signAsync(message, secretKey);\n const isValid = await ed.verifyAsync(signature, message, pubKey);\n})();\n```\n */\n/**\n * Curve params. edwards25519 uses the RFC equation `-x² + y² = 1 + dx²y²`.\n * The stored `a` literal below is `p - 1`, i.e. the field-element encoding of RFC `a = -1`.\n * * P = `2n**255n - 19n` // field over which calculations are done\n * * N = `2n**252n + 27742317777372353535851937790883648493n` // prime-order subgroup order\n * * h = 8 // cofactor\n * * a = `Fp.create(BigInt(-1))` // equation param, stored here as `p - 1`\n * * d = -121665/121666 a.k.a. `Fp.neg(121665 * Fp.inv(121666))` // equation param\n * * Gx, Gy are coordinates of Generator / base point\n *\n * Mirror noble-curves: Point.CURVE() exposes shared params, but callers must not be able to mutate\n * that shared view and desynchronize it from the arithmetic constants captured below.\n */\nconst ed25519_CURVE = Object.freeze({\n p: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,\n n: 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,\n h: 8n,\n a: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,\n d: 0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,\n Gx: 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,\n Gy: 0x6666666666666666666666666666666666666666666666666666666666666658n,\n});\nconst { p: P, n: N, Gx, Gy, a: _a, d: _d, h } = ed25519_CURVE;\nconst L = 32; // shared 32-byte encoded width for Ed25519 points, scalars, signatures, and keys\n// Helpers and Precomputes sections are reused between libraries\n// ## Helpers\n// ----------\n// @ts-ignore\nconst captureTrace = (...args) => {\n if ('captureStackTrace' in Error && typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(...args);\n }\n};\nconst err = (message = '') => {\n const e = new Error(message);\n captureTrace(e, err);\n throw e;\n};\nconst isBig = (n) => typeof n === 'bigint'; // is big integer\nconst isStr = (s) => typeof s === 'string'; // is string\n// Plain `instanceof Uint8Array` is too strict for some Buffer / proxy / cross-realm cases. The\n// fallback still requires a real ArrayBuffer view so plain JSON-deserialized `{ constructor: ... }`\n// spoofing is rejected, and `BYTES_PER_ELEMENT === 1` keeps the fallback on byte-oriented views.\nconst isBytes = (a) => a instanceof Uint8Array ||\n (ArrayBuffer.isView(a) &&\n a.constructor.name === 'Uint8Array' &&\n 'BYTES_PER_ELEMENT' in a &&\n a.BYTES_PER_ELEMENT === 1);\n/**\n * Asserts something is Bytes, optionally enforces exact length,\n * and returns the same reference.\n */\nconst abytes = (value, length, title = '') => {\n const bytes = isBytes(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n const msg = prefix + 'expected Uint8Array' + ofLen + ', got ' + got;\n throw bytes ? new RangeError(msg) : new TypeError(msg);\n }\n return value;\n};\n/** create Uint8Array */\nconst u8n = (len) => new Uint8Array(len);\n// Clone helper used before in-place byte edits such as sign-bit clearing or endian reversal.\nconst u8fr = (buf) => Uint8Array.from(buf);\n// Left-pad hex to a caller-chosen width. Width enforcement/truncation policy stays with callers.\nconst padh = (n, pad) => n.toString(16).padStart(pad, '0');\n// Lowercase hex serializer.\nconst bytesToHex = (b) => Array.from(abytes(b))\n .map((e) => padh(e, 2))\n .join('');\nconst C = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 }; // ASCII characters\nconst _ch = (ch) => {\n if (ch >= C._0 && ch <= C._9)\n return ch - C._0; // '2' => 50-48\n if (ch >= C.A && ch <= C.F)\n return ch - (C.A - 10); // 'B' => 66-(65-10)\n if (ch >= C.a && ch <= C.f)\n return ch - (C.a - 10); // 'b' => 98-(97-10)\n return;\n};\n// Accepts both uppercase and lowercase hex; all parse failures intentionally collapse to `hex invalid`.\nconst hexToBytes = (hex) => {\n const e = 'hex invalid';\n if (!isStr(hex))\n return err(e);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n return err(e);\n const array = u8n(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n // treat each char as ASCII\n const n1 = _ch(hex.charCodeAt(hi)); // parse first char, multiply it by 16\n const n2 = _ch(hex.charCodeAt(hi + 1)); // parse second char\n if (n1 === undefined || n2 === undefined)\n return err(e);\n array[ai] = n1 * 16 + n2; // example: 'A9' => 10*16 + 9\n }\n return array;\n};\nconst cr = () => globalThis?.crypto; // Optional WebCrypto lookup; sync code still handles absence.\n// Async-path capability helper for WebCrypto-backed APIs.\nconst subtle = () => cr()?.subtle ?? err('crypto.subtle must be defined, consider polyfill');\n// prettier-ignore\nconst concatBytes = (...arrs) => {\n // Argument order is transcript-significant for hash/signature callers, and input validation here\n // intentionally reuses `abytes(...)` without making defensive copies of the source chunks.\n let len = 0;\n for (const a of arrs)\n len += abytes(a).length;\n const r = u8n(len); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\n/** WebCrypto OS-level CSPRNG (random number generator). Absence still fails later via `cr()`. */\nconst randomBytes = (len = L) => {\n const c = cr();\n return c.getRandomValues(u8n(len));\n};\nconst big = BigInt;\n/** Inclusive-lower, exclusive-upper bigint range assertion. */\nconst assertRange = (n, min, max, msg = 'bad number: out of range') => {\n if (!isBig(n))\n throw new TypeError(msg);\n if (min <= n && n < max)\n return n;\n throw new RangeError(msg);\n};\n/** Canonical modular reduction into `[0, b)`. */\nconst M = (a, b = P) => {\n const r = a % b;\n return r >= 0n ? r : b + r;\n};\n// Low-255-bit mask used by the `2^255 - 19` fast reduction in `modP(...)`.\nconst P_MASK = (1n << 255n) - 1n;\n// Fast reduction for the special prime `2^255 - 19`. This path assumes nonnegative inputs; the\n// generic fallback would simply be `M(num, P)`.\nconst modP = (num) => {\n // return M(num, P);\n if (num < 0n)\n err('negative coordinate');\n let r = (num >> 255n) * 19n + (num & P_MASK);\n r = (r >> 255n) * 19n + (r & P_MASK);\n return r % P;\n};\n// Reduce modulo the subgroup order stored in implementation constant `N` (RFC 8032's `L`).\nconst modN = (a) => M(a, N);\n/** Modular inversion using Euclidean GCD (non-CT) instead of the RFC's `x^(p-2)` formulation.\n * This still sits on secret-dependent paths like point normalization during keygen/signing. */\n// prettier-ignore\nconst invert = (num, md) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md);\n let a = M(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) {\n const q = b / a, r = b % a;\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? M(x, md) : err('no inverse'); // b is gcd at this point\n};\n// Dynamic lookup keeps sync/async hash providers configurable at runtime. Both exported slots are\n// caller-owned and may be unset; wrapper helpers use this lookup first and then enforce the digest\n// contract instead of trusting provider output.\nconst callHash = (name) => {\n // @ts-ignore\n const fn = hashes[name];\n if (typeof fn !== 'function')\n err('hashes.' + name + ' not set');\n return fn;\n};\n// Both provider slots are configurable API surface and may return arbitrary values, so callers must\n// enforce the promised 64-byte SHA-512 digest contract here instead of trusting provider output.\nconst checkDigest = (value) => abytes(value, 64, 'digest');\n/**\n * SHA-512 helper used by the synchronous API.\n * @param msg - Message bytes to hash.\n * @returns 64-byte SHA-512 digest.\n * @example\n * Hash message bytes after wiring the synchronous SHA-512 implementation.\n *\n * ```ts\n * import * as ed from '@noble/ed25519';\n * import { sha512 } from '@noble/hashes/sha2.js';\n *\n * ed.hashes.sha512 = sha512;\n * const digest = ed.hash(new Uint8Array([1, 2, 3]));\n * ```\n */\n// Public helper validates the message boundary explicitly; the configured provider is still looked\n// up dynamically and its output is checked with `checkDigest(...)`.\nconst hash = (msg) => checkDigest(callHash('sha512')(abytes(msg, undefined, 'message')));\n// Runtime class guard: this is `instanceof Point`, so cross-realm / duplicate-bundle Point objects\n// are rejected even if they are structurally identical.\nconst apoint = (p) => (p instanceof Point ? p : err('Point expected'));\n// ## End of Helpers\n// -----------------\n// Exclusive upper bound `2^256` used by 32-byte decode/serialization range checks.\nconst B256 = 2n ** 256n;\n/**\n * Point in XYZT extended coordinates.\n * @param X - X coordinate.\n * @param Y - Y coordinate.\n * @param Z - Projective Z coordinate.\n * @param T - Cached cross-product term.\n * @example\n * Do point arithmetic with the built-in base point and encode the result as hex.\n *\n * ```ts\n * const hex = Point.BASE.double().toHex();\n * ```\n */\nclass Point {\n static BASE;\n static ZERO;\n X;\n Y;\n Z;\n T;\n // Constructor only bounds-checks and freezes XYZT coordinates; it does not prove the point is\n // on-curve or that T matches X*Y/Z.\n constructor(X, Y, Z, T) {\n const max = B256;\n this.X = assertRange(X, 0n, max);\n this.Y = assertRange(Y, 0n, max);\n this.Z = assertRange(Z, 1n, max);\n this.T = assertRange(T, 0n, max);\n Object.freeze(this);\n }\n static CURVE() {\n return ed25519_CURVE;\n }\n static fromAffine(p) {\n return new Point(p.x, p.y, 1n, modP(p.x * p.y));\n }\n /** RFC8032 5.1.3: Bytes to Point. */\n static fromBytes(hex, zip215 = false) {\n const d = _d;\n // Copy array to not mess it up.\n const normed = u8fr(abytes(hex, L));\n // adjust first LE byte = last BE byte\n const lastByte = hex[31];\n normed[31] = lastByte & ~0x80;\n const y = bytesToNumberLE(normed);\n // After clearing the sign bit, parsed `y` is always < 2^255. ZIP-215 still accepts the full\n // post-mask range here, while strict RFC8032 decoding further requires `y < p`.\n const max = zip215 ? B256 : P;\n assertRange(y, 0n, max);\n const y2 = modP(y * y); // y²\n const u = M(y2 - 1n); // u=y²-1\n const v = modP(d * y2 + 1n); // v=dy²+1\n let { isValid, value: x } = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (!isValid)\n err('bad point: y not sqrt'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n // ZIP-215-compatible decoding keeps the x=0 / sign-bit=1 encoding accepted; strict RFC 8032\n // rejects it, but the vendored ZIP-215 compliance vectors include this form in A/R bytes.\n if (!zip215 && x === 0n && isLastByteOdd)\n err('bad point: x==0, isLastByteOdd'); // x=0, x_0=1\n if (isLastByteOdd !== isXOdd)\n x = M(-x);\n return new Point(x, y, 1n, modP(x * y)); // Z=1, T=xy\n }\n static fromHex(hex, zip215) {\n return Point.fromBytes(hexToBytes(hex), zip215);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /** Checks if the point is valid and on-curve. */\n assertValidity() {\n const a = _a;\n const d = _d;\n const p = this;\n // Intentional stricter-than-on-curve policy: reject ZERO by default because many protocols\n // require a non-zero point, and silently accepting identity points is a common caller mistake.\n if (p.is0())\n return err('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²\n const { X, Y, Z, T } = p;\n const X2 = modP(X * X); // X²\n const Y2 = modP(Y * Y); // Y²\n const Z2 = modP(Z * Z); // Z²\n const Z4 = modP(Z2 * Z2); // Z⁴\n const aX2 = modP(X2 * a); // aX²\n const left = modP(Z2 * (aX2 + Y2)); // (aX² + Y²)Z²\n const right = M(Z4 + modP(d * modP(X2 * Y2))); // Z⁴ + dX²Y²\n if (left !== right)\n return err('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = modP(X * Y);\n const ZT = modP(Z * T);\n if (XY !== ZT)\n return err('bad point: equation left != right (2)');\n return this;\n }\n /** Equality check: compare points P&Q. */\n equals(other) {\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: Z2 } = apoint(other); // checks class equality\n const X1Z2 = modP(X1 * Z2);\n const X2Z1 = modP(X2 * Z1);\n const Y1Z2 = modP(Y1 * Z2);\n const Y2Z1 = modP(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() {\n return this.equals(I);\n }\n /** Flip point over y coordinate. */\n negate() {\n return new Point(M(-this.X), this.Y, this.Z, M(-this.T));\n }\n /** Point doubling. Complete formula. Cost: `4M + 4S + 1*a + 6add + 1*2`. */\n double() {\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const a = _a;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = modP(X1 * X1);\n const B = modP(Y1 * Y1);\n const C = modP(2n * Z1 * Z1);\n const D = modP(a * A);\n const x1y1 = M(X1 + Y1);\n const E = M(modP(x1y1 * x1y1) - A - B);\n const G = M(D + B);\n const F = M(G - C);\n const H = M(D - B);\n const X3 = modP(E * F);\n const Y3 = modP(G * H);\n const T3 = modP(E * H);\n const Z3 = modP(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n /** Point addition. Complete formula. Cost: `8M + 1*k + 8add + 1*2`. */\n add(other) {\n const { X: X1, Y: Y1, Z: Z1, T: T1 } = this;\n const { X: X2, Y: Y2, Z: Z2, T: T2 } = apoint(other); // doesn't check if other on-curve\n const a = _a;\n const d = _d;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = modP(X1 * X2);\n const B = modP(Y1 * Y2);\n const C = modP(modP(T1 * d) * T2);\n const D = modP(Z1 * Z2);\n const E = M(modP(M(X1 + Y1) * M(X2 + Y2)) - A - B);\n const F = M(D - C);\n const G = M(D + C);\n const H = M(B - modP(a * A));\n const X3 = modP(E * F);\n const Y3 = modP(G * H);\n const T3 = modP(E * H);\n const Z3 = modP(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n subtract(other) {\n return this.add(apoint(other).negate());\n }\n /**\n * Point-by-scalar multiplication. Safe mode requires `1 <= n < CURVE.n`.\n * Unsafe mode additionally permits `n = 0` and returns the identity point for that case.\n * Uses {@link wNAF} for base point.\n * Uses fake point to mitigate side-channel leakage.\n * @param n - scalar by which point is multiplied\n * @param safe - safe mode guards against timing attacks; unsafe mode is faster\n */\n multiply(n, safe = true) {\n // Mirror noble-curves: unsafe mode still validates scalar range first, but intentionally keeps\n // `n = 0` as the one extra accepted case used by verification-style callers.\n if (!safe && n === 0n)\n return I;\n assertRange(n, 1n, N);\n if (!safe && this.is0())\n return I;\n if (n === 1n)\n return this;\n if (this.equals(G))\n return wNAF(n).p;\n // init result point & fake point\n let p = I;\n let f = G;\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) {\n // if bit is present, add to point\n // if not present, add to fake, for timing safety\n if (n & 1n)\n p = p.add(d);\n else if (safe)\n f = f.add(d);\n }\n return p;\n }\n multiplyUnsafe(scalar) {\n return this.multiply(scalar, false);\n }\n /** Convert point to 2d xy affine point. (X, Y, Z) ∋ (x=X/Z, y=Y/Z) */\n toAffine() {\n const { X, Y, Z } = this;\n // Fast-path only for the identity point; all other inputs still go through inversion.\n if (this.equals(I))\n return { x: 0n, y: 1n };\n const iz = invert(Z, P);\n // (Z * Z^-1) must be 1, otherwise bad math\n if (modP(Z * iz) !== 1n)\n err('invalid inverse');\n // x = X*Z^-1; y = Y*Z^-1\n const x = modP(X * iz);\n const y = modP(Y * iz);\n return { x, y };\n }\n toBytes() {\n const { x, y } = this.toAffine();\n const b = numTo32bLE(y);\n // store sign in first LE byte\n b[31] |= x & 1n ? 0x80 : 0;\n return b;\n }\n toHex() {\n return bytesToHex(this.toBytes());\n }\n clearCofactor() {\n return this.multiply(big(h), false);\n }\n isSmallOrder() {\n return this.clearCofactor().is0();\n }\n isTorsionFree() {\n // Multiply by big number N. We can't `mul(N)` because of checks. Instead, we `mul(N/2)*2+1`\n let p = this.multiply(N / 2n, false).double();\n if (N % 2n)\n p = p.add(this);\n return p.is0();\n }\n}\n/** Generator / base point */\nconst G = new Point(Gx, Gy, 1n, M(Gx * Gy));\n/** Identity / zero point */\nconst I = new Point(0n, 1n, 1n, 0n);\n// Static aliases\nPoint.BASE = G;\nPoint.ZERO = I;\nconst numTo32bLE = (num) => hexToBytes(padh(assertRange(num, 0n, B256), 64)).reverse();\n// Caller-enforced width: some sites require 32-byte RFC encodings, while others intentionally feed\n// wider SHA-512 output chunks through the same little-endian parser.\nconst bytesToNumberLE = (b) => big('0x' + bytesToHex(u8fr(abytes(b)).reverse()));\nconst pow2 = (x, power) => {\n // pow2(x, 4) == x^(2^4)\n // Negative `power` values are not rejected here and currently leave `x` unchanged.\n let r = x;\n while (power-- > 0n) {\n r = modP(r * r);\n }\n return r;\n};\n// prettier-ignore\nconst pow_2_252_3 = (x) => {\n const x2 = modP(x * x); // x^2, bits 1\n const b2 = modP(x2 * x); // x^3, bits 11\n const b4 = modP(pow2(b2, 2n) * b2); // x^(2^4-1), bits 1111\n const b5 = modP(pow2(b4, 1n) * x); // x^(2^5-1), bits 11111\n const b10 = modP(pow2(b5, 5n) * b5); // x^(2^10-1)\n const b20 = modP(pow2(b10, 10n) * b10); // x^(2^20-1)\n const b40 = modP(pow2(b20, 20n) * b20); // x^(2^40-1)\n const b80 = modP(pow2(b40, 40n) * b40); // x^(2^80-1)\n const b160 = modP(pow2(b80, 80n) * b80); // x^(2^160-1)\n const b240 = modP(pow2(b160, 80n) * b80); // x^(2^240-1)\n const b250 = modP(pow2(b240, 10n) * b10); // x^(2^250-1)\n const pow_p_5_8 = modP(pow2(b250, 2n) * x); // x^((p-5)/8), used by RFC8032 point decode\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n; // 2^((p-1)/4) = sqrt(-1)\n// RFC8032 §5.1.3 square-root helper for point decompression. `value` is only meaningful when\n// `isValid` is true; callers are also expected to pass canonical field elements with non-zero `v`.\n// prettier-ignore\nconst uvRatio = (u, v) => {\n const v3 = modP(v * modP(v * v)); // v³\n const v7 = modP(modP(v3 * v3) * v); // v⁷\n const pow = pow_2_252_3(modP(u * v7)).pow_p_5_8; // (uv⁷)^(p-5)/8\n let x = modP(u * modP(v3 * pow)); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = modP(v * modP(x * x)); // vx²\n const root1 = x; // First root candidate\n const root2 = modP(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === M(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === M(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((M(x) & 1n) === 1n)\n x = M(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\n// Implementation `N` is the subgroup order; `L` is only the shared 32-byte encoded width constant.\n// Reduce any little-endian byte string modulo the subgroup order; the `hash` name reflects the\n// common caller shape, not an input restriction.\nconst modL_LE = (hash) => modN(bytesToNumberLE(hash)); // modulo L; but little-endian\n// Both sync and async SHA-512 slots are exported/configurable; use `callHash(...)` for both so\n// missing async overrides fail explicitly, then validate the returned digest type/length.\nconst sha512a = (...m) => Promise.resolve(callHash('sha512Async')(concatBytes(...m))).then(checkDigest);\nconst sha512s = (...m) => checkDigest(callHash('sha512')(concatBytes(...m)));\n// RFC8032 5.1.5. Split the 64-byte hashed seed into the clamped scalar half and nonce prefix.\nconst hash2extK = (hashed) => {\n // slice creates a copy, unlike subarray\n const copy = u8fr(hashed);\n const head = copy.slice(0, 32);\n head[0] &= 248; // Clamp bits: 0b1111_1000\n head[31] &= 127; // 0b0111_1111\n head[31] |= 64; // 0b0100_0000\n const prefix = copy.slice(32, 64); // secret key \"prefix\"\n // RFC words this as `[s]B`; reducing the clamped little-endian scalar modulo `N` is equivalent\n // for base-point multiplication because `G` already has subgroup order `N`.\n const scalar = modL_LE(head);\n const point = G.multiply(scalar); // public key point\n const pointBytes = point.toBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (secretKey) => sha512a(abytes(secretKey, L)).then(hash2extK);\nconst getExtendedPublicKey = (secretKey) => hash2extK(sha512s(abytes(secretKey, L)));\n/**\n * Creates a 32-byte Ed25519 public key from the RFC 8032 32-byte secret-key seed. Async.\n * @param secretKey - 32-byte RFC 8032 secret-key seed, not a 64-byte expanded secret key.\n * @returns 32-byte public key.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @example\n * Derive the public key bytes for a newly generated signer secret.\n *\n * ```ts\n * import * as ed from '@noble/ed25519';\n *\n * const secretKey = ed.utils.randomSecretKey();\n * const publicKey = await ed.getPublicKeyAsync(secretKey);\n * ```\n */\nconst getPublicKeyAsync = (secretKey) => getExtendedPublicKeyAsync(secretKey).then((p) => p.pointBytes);\n/**\n * Creates a 32-byte Ed25519 public key from the RFC 8032 32-byte secret-key seed.\n * To use, set `hashes.sha512` first.\n * @param priv - 32-byte RFC 8032 secret-key seed, not a 64-byte expanded secret key.\n * @returns 32-byte public key.\n * @throws If synchronous SHA-512 has not been configured in `hashes`. {@link Error}\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @example\n * Derive the public key entirely through the synchronous API.\n *\n * ```ts\n * import * as ed from '@noble/ed25519';\n * import { sha512 } from '@noble/hashes/sha2.js';\n *\n * ed.hashes.sha512 = sha512;\n * const secretKey = ed.utils.randomSecretKey();\n * const publicKey = ed.getPublicKey(secretKey);\n * ```\n */\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nconst hashFinishA = (res) => sha512a(res.hashable).then(res.finish);\nconst hashFinishS = (res) => res.finish(sha512s(res.hashable));\n// Code, shared between sync & async sign\nconst _sign = (e, rBytes, msg) => {\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n // RFC 8032 5.1.6 allows r mod L = 0, and SUPERCOP ref10 accepts the resulting identity-point\n // signature.\n // We intentionally keep the safe multiply() rejection here so a miswired all-zero SHA-512 provider\n // fails loudly instead of silently producing a degenerate signature.\n const R = G.multiply(r).toBytes(); // R = [r]B\n const hashable = concatBytes(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n const S = modN(r + modL_LE(hashed) * s); // S = (r + k * s) mod L; 0 <= s < l\n return abytes(concatBytes(R, numTo32bLE(S)), 64); // 64-byte sig: 32-byte encoded R point || 32-byte LE(S)\n };\n return { hashable, finish };\n};\n/**\n * Signs message using secret key. Async.\n * Follows RFC8032 5.1.6.\n * @param message - Message bytes to sign.\n * @param secretKey - 32-byte RFC 8032 secret-key seed, not a 64-byte expanded secret key.\n * @returns 64-byte Ed25519 signature.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @example\n * Sign an arbitrary message with a fresh Ed25519 secret key.\n *\n * ```ts\n * import * as ed from '@noble/ed25519';\n *\n * const secretKey = ed.utils.randomSecretKey();\n * const message = new Uint8Array([1, 2, 3]);\n * const signature = await ed.signAsync(message, secretKey);\n * ```\n */\nconst signAsync = async (message, secretKey) => {\n const m = abytes(message);\n const e = await getExtendedPublicKeyAsync(secretKey);\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishA(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\n/**\n * Signs message using secret key. To use, set `hashes.sha512` first.\n * Follows RFC8032 5.1.6.\n * @param message - Message bytes to sign.\n * @param secretKey - 32-byte RFC 8032 secret-key seed, not a 64-byte expanded secret key.\n * @returns 64-byte Ed25519 signature.\n * @throws If synchronous SHA-512 has not been configured in `hashes`. {@link Error}\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @example\n * Use the sync API when you've wired a SHA-512 implementation yourself.\n *\n * ```ts\n * import * as ed from '@noble/ed25519';\n * import { sha512 } from '@noble/hashes/sha2.js';\n *\n * ed.hashes.sha512 = sha512;\n * const secretKey = ed.utils.randomSecretKey();\n * const signature = ed.sign(new Uint8Array([1, 2, 3]), secretKey);\n * ```\n */\nconst sign = (message, secretKey) => {\n const m = abytes(message);\n const e = getExtendedPublicKey(secretKey);\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishS(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\n// Exported defaults favor ZIP-215 interoperability semantics; callers must opt into the stricter\n// branch with `{ zip215: false }`.\nconst defaultVerifyOpts = { zip215: true };\nconst _verify = (sig, msg, publicKey, options = defaultVerifyOpts) => {\n sig = abytes(sig, 64); // Signature hex str/Bytes, must be 64 bytes\n msg = abytes(msg); // Message hex str/Bytes\n publicKey = abytes(publicKey, L);\n // zip215=false keeps the library's stricter branch, which still canonicalizes `R` / `A` before\n // hashing and rejects small-order public keys earlier than pure RFC8032 text would require.\n // Preserve the exported ZIP-215 default for `{}` / `{ zip215: undefined }`, not just omitted opts.\n const { zip215 = true } = options;\n const r = sig.subarray(0, L);\n const s = bytesToNumberLE(sig.subarray(L, L * 2)); // Decode second half as an integer S;\n let A, R, SB;\n let hashable = Uint8Array.of();\n let finished = false;\n try {\n // zip215=true is good for consensus-critical apps. =false follows RFC8032 / NIST186-5.\n // zip215=true: 0 <= y < MASK (2^256 for ed25519)\n // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n A = Point.fromBytes(publicKey, zip215);\n R = Point.fromBytes(r, zip215);\n SB = G.multiply(s, false); // 0 <= s < l is done inside\n // ZIP-215 accepts noncanonical / unreduced point encodings, so the challenge hash must use the\n // exact signature/public-key bytes rather than canonicalized re-encodings of the decoded points.\n hashable = concatBytes(r, publicKey, msg); // dom2(F, C) || R || A || PH(M)\n finished = true;\n }\n catch (error) { }\n const finish = (hashed) => {\n if (!finished)\n return false;\n // Policy: strict mode intentionally rejects all small-order public keys, even though the raw RFC\n // equation text is looser here. This matches libsodium and avoids weak / ambiguous verification\n // outcomes where unusual low-order public keys can make distinct key/signature combinations verify.\n if (!zip215 && A.isSmallOrder())\n return false;\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n const k = modL_LE(hashed);\n const RkA = R.add(A.multiply(k, false));\n // Extended group equation\n // [8][S]B = [8]R + [8][k]A'\n return RkA.subtract(SB).clearCofactor().is0();\n };\n return { hashable, finish };\n};\n/**\n * Verifies a signature on message and public key. Async.\n * The implementation is based on RFC8032 5.1.7, but default opts use ZIP-215 semantics; pass\n * `{ zip215: false }` for the library's stricter branch.\n * @param signature - 64-byte signature.\n * @param message - Signed message bytes.\n * @param publicKey - 32-byte public key.\n * @param opts - Verification options. Defaults to ZIP-215 semantics. See {@link EdDSAVerifyOpts}.\n * @returns `true` when the signature is valid.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @example\n * Verify the signature against the same message and derived public key.\n *\n * ```ts\n * import * as ed from '@noble/ed25519';\n *\n * const secretKey = ed.utils.randomSecretKey();\n * const message = new Uint8Array([1, 2, 3]);\n * const publicKey = await ed.getPublicKeyAsync(secretKey);\n * const signature = await ed.signAsync(message, secretKey);\n * const isValid = await ed.verifyAsync(signature, message, publicKey);\n * ```\n */\nconst verifyAsync = async (signature, message, publicKey, opts = defaultVerifyOpts) => hashFinishA(_verify(signature, message, publicKey, opts));\n/**\n * Verifies a signature on message and public key using the synchronous hash path.\n * The implementation is based on RFC8032 5.1.7, but default opts use ZIP-215 semantics; pass\n * `{ zip215: false }` for the library's stricter branch.\n * @param signature - 64-byte signature.\n * @param message - Signed message bytes.\n * @param publicKey - 32-byte public key.\n * @param opts - Verification options. Defaults to ZIP-215 semantics. See {@link EdDSAVerifyOpts}.\n * @returns `true` when the signature is valid.\n * @throws If synchronous SHA-512 has not been configured in `hashes`. {@link Error}\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @example\n * Verify a signature entirely through the synchronous API.\n *\n * ```ts\n * import * as ed from '@noble/ed25519';\n * import { sha512 } from '@noble/hashes/sha2.js';\n *\n * ed.hashes.sha512 = sha512;\n * const secretKey = ed.utils.randomSecretKey();\n * const message = new Uint8Array([1, 2, 3]);\n * const publicKey = ed.getPublicKey(secretKey);\n * const signature = ed.sign(message, secretKey);\n * const isValid = ed.verify(signature, message, publicKey);\n * ```\n */\nconst verify = (signature, message, publicKey, opts = defaultVerifyOpts) => hashFinishS(_verify(signature, message, publicKey, opts));\n/**\n * Math, hex, byte helpers. Not in `utils` because utils share API with noble-curves.\n * Exposes the same low-level field-default `mod` reducer and non-CT `invert` helper used\n * internally.\n * @example\n * Convert bytes to a hex string with the low-level helper namespace.\n *\n * ```ts\n * const hex = etc.bytesToHex(new Uint8Array([1, 2, 3]));\n * ```\n */\nconst etc = /* @__PURE__ */ Object.freeze({\n bytesToHex,\n hexToBytes,\n concatBytes,\n mod: M,\n invert: invert,\n randomBytes,\n});\n/**\n * Hash implementations used by the synchronous API plus the default async WebCrypto provider.\n * Both slots are configurable API surface; wrapper helpers revalidate that providers still return\n * 64-byte SHA-512 digests.\n * @example\n * Provide a SHA-512 implementation before calling synchronous helpers.\n *\n * ```ts\n * import * as ed from '@noble/ed25519';\n * import { sha512 } from '@noble/hashes/sha2.js';\n *\n * ed.hashes.sha512 = sha512;\n * const { publicKey } = ed.keygen();\n * ```\n */\nconst hashes = {\n sha512Async: async (message) => {\n const s = subtle();\n const m = concatBytes(message);\n return u8n(await s.digest('SHA-512', m.buffer));\n },\n sha512: undefined,\n};\n// Returns the final 32-byte Ed25519 secret-key seed verbatim, generating fresh random bytes only\n// when omitted.\nconst randomSecretKey = (seed) => {\n seed = seed === undefined ? randomBytes(L) : seed;\n return abytes(seed, L);\n};\n/**\n * Generates a secret/public keypair.\n * @param seed - Optional 32-byte Ed25519 secret-key seed, returned verbatim as `secretKey`.\n * @returns Keypair with `secretKey` and `publicKey`.\n * @throws If synchronous SHA-512 has not been configured in `hashes`. {@link Error}\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @example\n * Generate a new keypair through the synchronous API after wiring SHA-512.\n *\n * ```ts\n * import * as ed from '@noble/ed25519';\n * import { sha512 } from '@noble/hashes/sha2.js';\n *\n * ed.hashes.sha512 = sha512;\n * const { secretKey, publicKey } = ed.keygen();\n * ```\n */\nconst keygen = (seed) => {\n const secretKey = randomSecretKey(seed);\n const publicKey = getPublicKey(secretKey);\n return { secretKey, publicKey };\n};\n/**\n * Generates a secret/public keypair asynchronously.\n * @param seed - Optional 32-byte Ed25519 secret-key seed, returned verbatim as `secretKey`.\n * @returns Keypair with `secretKey` and `publicKey`.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @example\n * Generate a new keypair through the asynchronous WebCrypto-backed path.\n *\n * ```ts\n * import * as ed from '@noble/ed25519';\n *\n * const { secretKey, publicKey } = await ed.keygenAsync();\n * ```\n */\nconst keygenAsync = async (seed) => {\n const secretKey = randomSecretKey(seed);\n const publicKey = await getPublicKeyAsync(secretKey);\n return { secretKey, publicKey };\n};\n/**\n * Ed25519-specific key utilities.\n * `utils.getExtendedPublicKey*` expose secret-derived internals (`head`, `prefix`, `scalar`, and\n * point objects), not just public-key bytes.\n * @example\n * Generate a new Ed25519 secret key and derive the matching public key.\n *\n * ```ts\n * import * as ed from '@noble/ed25519';\n *\n * const secretKey = ed.utils.randomSecretKey();\n * const publicKey = await ed.getPublicKeyAsync(secretKey);\n * ```\n */\nconst utils = /* @__PURE__ */ Object.freeze({\n getExtendedPublicKeyAsync: getExtendedPublicKeyAsync,\n getExtendedPublicKey: getExtendedPublicKey,\n randomSecretKey: randomSecretKey,\n});\n// ## Precomputes\n// --------------\nconst W = 8; // W is window size\nconst scalarBits = 256;\nconst pwindows = Math.ceil(scalarBits / W) + 1; // 33 for W=8, NOT 32 - see wNAF loop\nconst pwindowSize = 2 ** (W - 1); // 128 for W=8\n// Layout is grouped by window: each block stores the positive multiples `1*base .. 128*base` for\n// that window, and the extra `+1` window in `pwindows` absorbs carries from signed-digit recoding.\nconst precompute = () => {\n const points = [];\n let p = G;\n let b = p;\n for (let w = 0; w < pwindows; w++) {\n b = p;\n points.push(b);\n for (let i = 1; i < pwindowSize; i++) {\n b = b.add(p);\n points.push(b);\n } // i=1, bc we skip 0\n p = b.double();\n }\n return points;\n};\nlet Gpows = undefined; // shared process-wide cache of base-point precomputes\n// Branch-based negate helper used for JS/JIT mitigation symmetry, not a strict constant-time claim.\nconst ctneg = (cnd, p) => {\n const n = p.negate();\n return cnd ? n : p;\n};\n/**\n * Precomputes give 12x faster getPublicKey(), 10x sign(), 2x verify() by\n * caching multiples of G (base point). Cache is stored in 32MB of RAM.\n * Any time `G.multiply` is done, precomputes are used.\n * Not used for getSharedSecret, which instead multiplies random pubkey `P.multiply`.\n *\n * w-ary non-adjacent form (wNAF) precomputation method is 10% slower than windowed method,\n * but takes 2x less RAM. RAM reduction is possible by utilizing `.subtract`.\n * Returns the real accumulator `p` plus a fake accumulator `f`; callers only care about `p`, while\n * `f` exists to keep similar work in zero-digit branches as a JS/JIT side-channel mitigation.\n *\n * !! Precomputes can be disabled by commenting-out call of the wNAF() inside Point#multiply().\n */\nconst wNAF = (n) => {\n const comp = Gpows || (Gpows = precompute());\n let p = I;\n let f = G; // f must be G, or could become I in the end\n const pow_2_w = 2 ** W; // 256 for W=8\n const maxNum = pow_2_w; // 256 for W=8\n const mask = big(pow_2_w - 1); // 255 for W=8 == mask 0b11111111\n const shiftBy = big(W); // 8 for W=8\n for (let w = 0; w < pwindows; w++) {\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n // We use negative indexes to reduce size of precomputed table by 2x.\n // Instead of needing precomputes 0..256, we only calculate them for 0..128.\n // If an index > 128 is found, we do (256-index) - where 256 is next window.\n // Naive: index +127 => 127, +224 => 224\n // Optimized: index +127 => 127, +224 => 256-32\n if (wbits > pwindowSize) {\n wbits -= maxNum;\n n += 1n;\n }\n const off = w * pwindowSize;\n const offF = off; // offsets, evaluate both\n const offP = off + Math.abs(wbits) - 1;\n const isEven = w % 2 !== 0; // conditions, evaluate both\n const isNeg = wbits < 0;\n if (wbits === 0) {\n // off == I: can't add it. Adding random offF instead.\n f = f.add(ctneg(isEven, comp[offF])); // bits are 0: add garbage to fake point\n }\n else {\n p = p.add(ctneg(isNeg, comp[offP])); // bits are 1: add to result point\n }\n }\n if (n !== 0n)\n err('invalid wnaf');\n return { p, f }; // callers only need `p`; `f` is kept for zero-digit mitigation symmetry\n};\n// !! Remove the export to easily use in REPL / browser console\nexport { etc, getPublicKey, getPublicKeyAsync, hash, hashes, keygen, keygenAsync, Point, sign, signAsync, utils, verify, verifyAsync };\n","import * as ed from '@noble/ed25519';\nimport { sha512 } from '@noble/hashes/sha2.js';\n\ned.hashes.sha512 = sha512;\n\n// Ed25519 group order L (= 2^252 + 27742317777372353535851937790883648493).\nconst L = ed.Point.CURVE().n;\n\nexport interface SignEd25519Opts {\n readonly seed: Uint8Array;\n readonly message: Uint8Array;\n}\n\nexport interface VerifyEd25519Opts {\n readonly publicKey: Uint8Array;\n readonly message: Uint8Array;\n readonly signature: Uint8Array;\n}\n\nexport interface GetPublicKeyEd25519Opts {\n readonly seed: Uint8Array;\n}\n\nexport function signEd25519(opts: SignEd25519Opts): Uint8Array {\n return ed.sign(opts.message, opts.seed);\n}\n\n// Little-endian 32-byte scalar → bigint.\nfunction leBytesToBigInt(bytes: Uint8Array): bigint {\n let value = 0n;\n for (let i = bytes.length - 1; i >= 0; i--) {\n value = (value << 8n) | BigInt(bytes[i]!);\n }\n return value;\n}\n\n// Strict (non-cofactored) Ed25519 verification per RFC 8032 §5.1.7, matching\n// libsodium/PyNaCl `crypto_sign_verify_detached` and ed25519-dalek\n// `verify_strict`. The cofactor-less check rejects every small-order /\n// torsion-component edge case in the C2SP/CCTV corpus, which noble's\n// `{ zip215: false }` mode does NOT (it remains cofactored: it checks\n// `[8]([S]B - [k]A - R) == 0`, accepting torsion components).\n//\n// The verification equation is the unscaled `[S]B == R + [k]A`, rewritten as\n// `[S]B - [k]A - R == identity`. We reject S >= L (non-canonical scalar) and\n// any small-order A or R up front, so a torsion component can never be smuggled\n// through the cofactor multiplication the cofactored variant performs.\nexport function verifyEd25519(opts: VerifyEd25519Opts): boolean {\n const { signature, message, publicKey } = opts;\n if (signature.length !== 64 || publicKey.length !== 32) return false;\n\n // S = LE(sig[32..64]); reject if not a canonical scalar (S >= L).\n const S = leBytesToBigInt(signature.subarray(32, 64));\n if (S >= L) return false;\n\n // Decode A (public key) and R (sig[0..32]) with the canonical (non-zip215)\n // point encoding; a non-canonical encoding throws and rejects.\n let A: ed.Point;\n let R: ed.Point;\n try {\n A = ed.Point.fromBytes(publicKey);\n R = ed.Point.fromBytes(signature.subarray(0, 32));\n } catch {\n return false;\n }\n\n // Reject small-order (cofactor-torsion) A or R: this is exactly the strictness\n // that distinguishes verify_strict from the cofactored check.\n if (A.isSmallOrder() || R.isSmallOrder()) return false;\n\n // k = SHA-512(R || A || M) reduced mod L.\n const k =\n leBytesToBigInt(ed.hash(concatBytes(signature.subarray(0, 32), publicKey, message))) % L;\n\n // Accept iff [S]B - [k]A - R == identity. `multiplyUnsafe` returns the\n // identity for a 0 scalar, but guard explicitly to avoid relying on that.\n const sB = S === 0n ? ed.Point.ZERO : ed.Point.BASE.multiplyUnsafe(S);\n const kA = k === 0n ? ed.Point.ZERO : A.multiplyUnsafe(k);\n return sB.subtract(kA).subtract(R).is0();\n}\n\nfunction concatBytes(...parts: Uint8Array[]): Uint8Array {\n let total = 0;\n for (const p of parts) total += p.length;\n const out = new Uint8Array(total);\n let offset = 0;\n for (const p of parts) {\n out.set(p, offset);\n offset += p.length;\n }\n return out;\n}\n\nexport function getPublicKeyEd25519(opts: GetPublicKeyEd25519Opts): Uint8Array {\n return ed.getPublicKey(opts.seed);\n}\n","export type CoseVerifyErrorCode =\n | 'MALFORMED_SIG_COSE'\n | 'MALFORMED_SIG_COSE_SIGN1'\n | 'UNSUPPORTED_SIG_ALG'\n | 'KID_UNRESOLVED'\n | 'SIGNATURE_INVALID';\n\nexport class CoseVerifyError extends Error {\n readonly code: CoseVerifyErrorCode;\n\n constructor(code: CoseVerifyErrorCode, message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = 'CoseVerifyError';\n this.code = code;\n }\n}\n\nexport type CoseVerifyResult =\n | { ok: true; signerKey: Uint8Array; alg: number }\n | { ok: false; error: { code: CoseVerifyErrorCode; message: string } };\n","import {\n decodeCanonicalCbor,\n encodeCanonicalCbor,\n type CanonicalCborValue,\n} from '../cbor/canonical';\nimport { CanonicalCborError } from '../cbor/errors';\nimport { blake2b224 } from '../hash/blake2b-256';\nimport { signEd25519, verifyEd25519 } from '../sig/ed25519';\nimport { compareCt } from '../util/compare-ct';\n\nimport { CoseVerifyError, type CoseVerifyResult } from './errors';\n\nexport type CoseHeader = Map<number | string, unknown>;\n\n// CIP-309 v1 domain separator embedded as a prefix on `Sig_structure[3]`\n// (`to_sign`). The separator is\n// NOT placed in `Sig_structure[2]` (`external_aad`) because CIP-30 `signData`\n// — the only realistic wallet-signing path on Cardano — explicitly forbids a\n// non-empty `external_aad`. Pinning the prefix into the payload preserves the\n// anti-replay property while keeping wallet-produced signatures byte-identical\n// to verifier-side recomputation.\nexport const CARDANO_POE_SIG_DOMAIN_PREFIX = 'cardano-poe-record-sig-v1' as const;\n// Composer path-2 wallet flow consumes the prefix bytes directly\n// to assemble `toSign = prefix || canonical_cbor(record_body)` BEFORE calling\n// `walletSignData` (the wallet's `signData()` receives this concatenation as\n// its `payload` argument verbatim per CIP-30). The bytes constant is exported\n// so a composer can build the input without re-encoding the prefix at every\n// call site.\nexport const CARDANO_POE_SIG_DOMAIN_PREFIX_BYTES = new TextEncoder().encode(\n CARDANO_POE_SIG_DOMAIN_PREFIX,\n);\n\n// Fail-fast: the prefix length is byte-pinned at 25 UTF-8 bytes. A different\n// runtime encoding would silently break round-tripping\n// against the reference vectors.\nif (CARDANO_POE_SIG_DOMAIN_PREFIX_BYTES.length !== 25) {\n throw new Error(\n `cardano-poe-record-sig-v1 prefix must encode to exactly 25 UTF-8 bytes, got ${CARDANO_POE_SIG_DOMAIN_PREFIX_BYTES.length}`,\n );\n}\n\nconst EMPTY_BYTES = new Uint8Array(0);\n\nexport interface CoseSign1Decoded {\n readonly protectedHeader: CoseHeader;\n // preserved for Sig_structure reconstruction — never re-encode the decoded header map (RFC 9052 §4.4)\n readonly protectedBytes: Uint8Array;\n readonly unprotectedHeader: CoseHeader;\n readonly payload: Uint8Array | null;\n readonly signature: Uint8Array;\n}\n\nexport interface BuildSigStructureArgs {\n readonly context: 'Signature1';\n readonly bodyProtectedBytes: Uint8Array;\n readonly externalAad: Uint8Array;\n readonly payload: Uint8Array;\n}\n\n// Raw RFC 9052 §4.4 Sig_structure builder. General-purpose: callers control\n// `external_aad` and `payload` exactly. For CIP-309 record signing use\n// `buildCip309SigStructure` instead — it enforces the CIP-309 record-signature invariants.\nexport function buildSigStructure(args: BuildSigStructureArgs): Uint8Array {\n return encodeCanonicalCbor([\n args.context,\n args.bodyProtectedBytes,\n args.externalAad,\n args.payload,\n ] as readonly CanonicalCborValue[]);\n}\n\nexport interface BuildCip309SigStructureArgs {\n readonly bodyProtectedBytes: Uint8Array;\n // Canonical CBOR of the record body with `sigs` removed.\n readonly recordBodyCbor: Uint8Array;\n}\n\n// CIP-309 v1 specialisation of `Sig_structure` (RFC 9052 §4.4 base structure):\n// to_sign = utf8(\"cardano-poe-record-sig-v1\") || canonical_cbor(record_body_minus_sigs)\n// Sig_structure = [ \"Signature1\", body_protected, h'' (empty), to_sign ]\n// Always forces `external_aad = h''` (empty bstr) — the CIP-30 wallet path\n// cannot carry a non-empty `external_aad`, so the domain separator lives in\n// `Sig_structure[3]` rather than `Sig_structure[2]`.\nexport function buildCip309SigStructure(args: BuildCip309SigStructureArgs): Uint8Array {\n const toSign = new Uint8Array(\n CARDANO_POE_SIG_DOMAIN_PREFIX_BYTES.length + args.recordBodyCbor.length,\n );\n toSign.set(CARDANO_POE_SIG_DOMAIN_PREFIX_BYTES, 0);\n toSign.set(args.recordBodyCbor, CARDANO_POE_SIG_DOMAIN_PREFIX_BYTES.length);\n return buildSigStructure({\n context: 'Signature1',\n bodyProtectedBytes: args.bodyProtectedBytes,\n externalAad: EMPTY_BYTES,\n payload: toSign,\n });\n}\n\nexport interface EncodeCoseSign1Args {\n readonly protectedHeader: CoseHeader;\n readonly unprotectedHeader: CoseHeader;\n readonly payload: Uint8Array | null;\n readonly signature: Uint8Array;\n}\n\nexport function encodeCoseSign1(args: EncodeCoseSign1Args): Uint8Array {\n const protectedBytes =\n args.protectedHeader.size === 0\n ? EMPTY_BYTES\n : encodeCanonicalCbor(args.protectedHeader as CanonicalCborValue);\n return encodeCanonicalCbor([\n protectedBytes,\n args.unprotectedHeader as CanonicalCborValue,\n args.payload,\n args.signature,\n ] as readonly CanonicalCborValue[]);\n}\n\n// cbor2's decoder returns Map for integer-keyed maps but plain Object for empty\n// or string-keyed maps; normalise both representations to Map.\nfunction asCoseHeader(value: unknown): CoseHeader | null {\n if (value instanceof Map) return value as CoseHeader;\n if (value !== null && typeof value === 'object' && (value as object).constructor === Object) {\n return new Map(Object.entries(value as Record<string, unknown>));\n }\n return null;\n}\n\nexport function decodeCoseSign1(bytes: Uint8Array): CoseSign1Decoded {\n let arr: unknown;\n try {\n arr = decodeCanonicalCbor(bytes);\n } catch (cause) {\n throw new CoseVerifyError('MALFORMED_SIG_COSE', 'cose decode failed', { cause });\n }\n if (!Array.isArray(arr) || arr.length !== 4) {\n throw new CoseVerifyError('MALFORMED_SIG_COSE', 'expected 4-element array');\n }\n const [protectedBytesRaw, unprotectedRaw, payloadRaw, signatureRaw] = arr;\n if (!(protectedBytesRaw instanceof Uint8Array)) {\n throw new CoseVerifyError('MALFORMED_SIG_COSE', 'protected_bytes must be bytes');\n }\n const unprotectedHeader = asCoseHeader(unprotectedRaw);\n if (unprotectedHeader === null) {\n throw new CoseVerifyError('MALFORMED_SIG_COSE', 'unprotected header must be map');\n }\n if (payloadRaw !== null && !(payloadRaw instanceof Uint8Array)) {\n throw new CoseVerifyError('MALFORMED_SIG_COSE', 'payload must be bytes or null');\n }\n if (!(signatureRaw instanceof Uint8Array) || signatureRaw.length !== 64) {\n throw new CoseVerifyError('MALFORMED_SIG_COSE', 'signature must be 64 bytes');\n }\n let protectedHeader: CoseHeader;\n if (protectedBytesRaw.length === 0) {\n protectedHeader = new Map();\n } else {\n let decodedProtected: unknown;\n try {\n decodedProtected = decodeCanonicalCbor(protectedBytesRaw);\n } catch (cause) {\n throw new CoseVerifyError('MALFORMED_SIG_COSE', 'protected header decode failed', { cause });\n }\n const ph = asCoseHeader(decodedProtected);\n if (ph === null) {\n throw new CoseVerifyError('MALFORMED_SIG_COSE', 'protected header must decode to map');\n }\n // Empty protected header MUST encode as the single byte 0x40 (zero-length bstr),\n // not 0x41 0xA0 (a 1-byte bstr containing an empty CBOR map). RFC 9052 §3 +\n // CIP-309 canonical-CBOR mandate.\n if (ph.size === 0) {\n throw new CoseVerifyError(\n 'MALFORMED_SIG_COSE',\n 'empty protected header must encode as 0x40 (zero-length bstr), not as an empty map',\n );\n }\n protectedHeader = ph;\n }\n return {\n protectedHeader,\n protectedBytes: protectedBytesRaw,\n unprotectedHeader,\n payload: payloadRaw,\n signature: signatureRaw,\n };\n}\n\nexport type CoseSign1BuildErrorCode = 'SIGNER_NOT_PROVIDED' | 'SIGNER_AND_SEED_BOTH_PROVIDED';\n\nexport class CoseSign1BuildError extends Error {\n readonly code: CoseSign1BuildErrorCode;\n\n constructor(code: CoseSign1BuildErrorCode, message: string) {\n super(message);\n this.name = 'CoseSign1BuildError';\n this.code = code;\n }\n}\n\nexport interface CoseSign1Cip309BuildArgs {\n readonly protectedHeader: CoseHeader;\n readonly unprotectedHeader: CoseHeader;\n // Canonical CBOR of the record body with `sigs` removed. The\n // builder prepends the 25-byte UTF-8 domain prefix `cardano-poe-record-sig-v1`\n // internally — callers MUST NOT pre-concatenate it.\n readonly recordBodyCbor: Uint8Array;\n // EITHER the raw 32-byte Ed25519 seed (used by KAT tests, Python parity, and\n // the off-host signing helper) OR an injected signer closure that signs the\n // assembled Sig_structure bytes (composer-side use — keeps the private key\n // inside the unlock-store closure so it never escapes scope).\n // Exactly one of the two MUST be provided; mutual exclusion enforced at\n // runtime via CoseSign1BuildError.\n readonly signerSecretKey?: Uint8Array;\n readonly signer?: (sigStructureBytes: Uint8Array) => Uint8Array;\n}\n\n// CIP-309 v1 record-signature builder:\n// 1. compute `to_sign = utf8(\"cardano-poe-record-sig-v1\") || recordBodyCbor`\n// 2. Sig_structure = [ \"Signature1\", bodyProtected, h'', to_sign ]\n// 3. Ed25519-sign Sig_structure (via seed OR injected closure)\n// 4. emit COSE_Sign1 with payload = CBOR null (detached signature, mandatory)\nexport function coseSign1Cip309Build(args: CoseSign1Cip309BuildArgs): Uint8Array {\n if (args.signerSecretKey === undefined && args.signer === undefined) {\n throw new CoseSign1BuildError(\n 'SIGNER_NOT_PROVIDED',\n 'coseSign1Cip309Build requires either signerSecretKey or signer',\n );\n }\n if (args.signerSecretKey !== undefined && args.signer !== undefined) {\n throw new CoseSign1BuildError(\n 'SIGNER_AND_SEED_BOTH_PROVIDED',\n 'coseSign1Cip309Build accepts signerSecretKey XOR signer (not both)',\n );\n }\n const protectedBytes =\n args.protectedHeader.size === 0\n ? EMPTY_BYTES\n : encodeCanonicalCbor(args.protectedHeader as CanonicalCborValue);\n const sigStructureBytes = buildCip309SigStructure({\n bodyProtectedBytes: protectedBytes,\n recordBodyCbor: args.recordBodyCbor,\n });\n let signature: Uint8Array;\n if (args.signer !== undefined) {\n signature = args.signer(sigStructureBytes);\n if (!(signature instanceof Uint8Array) || signature.length !== 64) {\n throw new CoseSign1BuildError(\n 'SIGNER_NOT_PROVIDED',\n `injected signer must return a 64-byte Uint8Array; got ${signature instanceof Uint8Array ? `${signature.length}-byte Uint8Array` : typeof signature}`,\n );\n }\n } else {\n signature = signEd25519({ seed: args.signerSecretKey!, message: sigStructureBytes });\n }\n return encodeCoseSign1({\n protectedHeader: args.protectedHeader,\n unprotectedHeader: args.unprotectedHeader,\n payload: null,\n signature,\n });\n}\n\nexport interface CoseSign1Cip309VerifyArgs {\n readonly message: Uint8Array;\n // Canonical CBOR of the record body with `sigs` removed (verifier-recomputed;\n // the 25-byte UTF-8 prefix is prepended internally — callers\n // MUST NOT pre-concatenate it).\n readonly detachedRecordBodyCbor: Uint8Array;\n // Optional out-of-band signer key (path-2 wallet path resolves the key from\n // `sigs[i].cose_key`). Path-1 records carry the 32-byte raw Ed25519 pubkey\n // in the protected header at label 4 (`kid`) and need no out-of-band hint.\n readonly expectedSignerKey?: Uint8Array;\n}\n\n// CIP-309 v1 record-signature verifier:\n// - Decode COSE_Sign1\n// - Reject COSE_Sign1[2] != CBOR null (attached payload — including h'') as\n// MALFORMED_SIG_COSE_SIGN1\n// - Recompute to_sign = utf8(\"cardano-poe-record-sig-v1\") || detachedRecordBodyCbor\n// - Sig_structure = [ \"Signature1\", protectedBytes, h'', to_sign ]\n// - Strict Ed25519 verify (RFC 8032 §5.1.7 — `zip215: false` per ed25519.ts)\n//\n// The verifier does NOT accept an `externalAad` argument: CIP-309 v1 pins\n// `external_aad = h''` and any deviation would either silently weaken the\n// domain separator or quietly accept malformed records. If a future CIP\n// revision re-enables external_aad, this helper takes a v-bump.\nexport function coseSign1Cip309Verify(args: CoseSign1Cip309VerifyArgs): CoseVerifyResult {\n let decoded: CoseSign1Decoded;\n try {\n decoded = decodeCoseSign1(args.message);\n } catch (e) {\n if (e instanceof CoseVerifyError) {\n return { ok: false, error: { code: e.code, message: 'errors.cose.malformed' } };\n }\n if (e instanceof CanonicalCborError) {\n return {\n ok: false,\n error: { code: 'MALFORMED_SIG_COSE', message: 'errors.cose.malformed_cbor' },\n };\n }\n throw e;\n }\n // CIP-309 v1 mandate: COSE_Sign1[2] (payload field) MUST be CBOR `null` (0xF6).\n // Any non-null payload — including a zero-length byte string `h''` — MUST\n // be rejected as MALFORMED_SIG_COSE_SIGN1.\n if (decoded.payload !== null) {\n return {\n ok: false,\n error: {\n code: 'MALFORMED_SIG_COSE_SIGN1',\n message: 'errors.cose.attached_payload_forbidden',\n },\n };\n }\n const alg = decoded.protectedHeader.get(1);\n if (typeof alg !== 'number' || alg !== -8) {\n return {\n ok: false,\n error: { code: 'UNSUPPORTED_SIG_ALG', message: 'errors.cose.unsupported_alg' },\n };\n }\n const kidRaw = decoded.protectedHeader.get(4);\n let signerKey: Uint8Array | undefined;\n if (kidRaw instanceof Uint8Array && kidRaw.length === 32) {\n signerKey = kidRaw;\n } else if (args.expectedSignerKey instanceof Uint8Array && args.expectedSignerKey.length === 32) {\n signerKey = args.expectedSignerKey;\n }\n if (signerKey === undefined) {\n return {\n ok: false,\n error: { code: 'KID_UNRESOLVED', message: 'errors.cose.kid_unresolved' },\n };\n }\n // When both a protected-header kid AND an expectedSignerKey are provided,\n // require they agree (constant-time). A protected kid that disagrees with\n // the caller's out-of-band binding is a misuse, not a transient mismatch.\n if (\n kidRaw instanceof Uint8Array &&\n kidRaw.length === 32 &&\n args.expectedSignerKey instanceof Uint8Array &&\n args.expectedSignerKey.length === 32 &&\n !compareCt(kidRaw, args.expectedSignerKey)\n ) {\n return {\n ok: false,\n error: { code: 'KID_UNRESOLVED', message: 'errors.cose.kid_mismatch' },\n };\n }\n // CIP-8 `hashed = true` mode (the wallet-signed path-2 variant). The unprotected\n // header carries the literal text key `\"hashed\"` with boolean value `true`\n // (text-keyed CBOR maps decode to `Map<string, unknown>` via cbor2). When\n // set, both producer and verifier build `Sig_structure[3] = Blake2b-224(to_sign)`\n // (28-byte digest of the FULL `to_sign` payload including the 25-byte\n // domain prefix). When absent or false, the standard non-hashed path\n // applies unchanged.\n const hashedFlag = decoded.unprotectedHeader.get('hashed');\n let sigStructureBytes: Uint8Array;\n if (hashedFlag === true) {\n const toSign = new Uint8Array(\n CARDANO_POE_SIG_DOMAIN_PREFIX_BYTES.length + args.detachedRecordBodyCbor.length,\n );\n toSign.set(CARDANO_POE_SIG_DOMAIN_PREFIX_BYTES, 0);\n toSign.set(args.detachedRecordBodyCbor, CARDANO_POE_SIG_DOMAIN_PREFIX_BYTES.length);\n const hashedPayload = blake2b224(toSign);\n sigStructureBytes = buildSigStructure({\n context: 'Signature1',\n bodyProtectedBytes: decoded.protectedBytes,\n externalAad: EMPTY_BYTES,\n payload: hashedPayload,\n });\n } else {\n sigStructureBytes = buildCip309SigStructure({\n bodyProtectedBytes: decoded.protectedBytes,\n recordBodyCbor: args.detachedRecordBodyCbor,\n });\n }\n const valid = verifyEd25519({\n publicKey: signerKey,\n message: sigStructureBytes,\n signature: decoded.signature,\n });\n if (!valid) {\n return {\n ok: false,\n error: { code: 'SIGNATURE_INVALID', message: 'errors.cose.signature_invalid' },\n };\n }\n return { ok: true, signerKey, alg };\n}\n","// CIP-309 v1 chunked-bytes and chunked-text helpers.\n//\n// The Cardano ledger CDDL constrains every `transaction_metadatum` byte string\n// (`bstr`) and text string (`tstr`) to ≤ 64 bytes. CIP-309 therefore carries\n// any logical value larger than 64 bytes as an ARRAY of ≤ 64-byte chunks. Two\n// chunked shapes exist:\n//\n// * `bytes-chunk-array` — `[ 1* bstr .size (1..64) ]` — used for chunked\n// `COSE_Sign1` bytes (`sigs[i].cose_sign1`) and the chunked\n// `cbor<COSE_Key>` blob (`sigs[i].cose_key`).\n// * `uri-chunk-array` — `[ 1* tstr .size (1..64) ]` — used as the inner\n// element of `items[i].uris` and `merkle[i].uris`.\n//\n// Two reconstruction invariants are normative:\n//\n// 1. **Per-chunk size.** `[1, 64]` bytes (zero-length chunks rejected\n// identically to oversized chunks). The validator's schema layer enforces\n// this; the helpers here assume the schema gate has fired.\n// 2. **UTF-8 codepoint integrity (text only).** The reconstructed\n// concatenation MUST be valid UTF-8. The canonical-CBOR decoder already\n// rejects any `tstr` that is not valid UTF-8 (→ `MALFORMED_CBOR`) before\n// these helpers run, so each chunk arrives as a well-formed string; the\n// `TextDecoder({ fatal: true })` pass below is the residual structural\n// guard.\n\nconst CHUNK_MAX_BYTES = 64;\n\nconst UTF8_ENCODER = new TextEncoder();\n\n/**\n * Split a logical byte string into ≤ 64-byte CBOR-bytes chunks\n * (`bytes-chunk-array`). Always returns a non-empty array.\n *\n * For empty inputs, returns `[<empty>]` so the caller's schema gate fails\n * later via `CHUNK_TOO_LARGE` (zero-length chunks are rejected). Real callers\n * feed COSE_Sign1 / cbor<COSE_Key> byte strings, which are never empty.\n */\nexport function chunkBytes(value: Uint8Array): Uint8Array[] {\n if (value.length === 0) return [new Uint8Array(0)];\n const chunks: Uint8Array[] = [];\n for (let i = 0; i < value.length; i += CHUNK_MAX_BYTES) {\n chunks.push(value.subarray(i, Math.min(i + CHUNK_MAX_BYTES, value.length)));\n }\n return chunks;\n}\n\n/**\n * Reverse of {@link chunkBytes}: concatenate chunked bytes (`sigs[i].cose_sign1`,\n * `sigs[i].cose_key`) into a single buffer for downstream CBOR/COSE decode.\n * The validator-layer schema enforces the per-chunk size + non-empty-array\n * invariants before this helper runs, so it makes no length checks.\n */\nexport function bytesChunkArrayConcat(chunks: ReadonlyArray<Uint8Array>): Uint8Array {\n let total = 0;\n for (const c of chunks) total += c.length;\n const out = new Uint8Array(total);\n let offset = 0;\n for (const c of chunks) {\n out.set(c, offset);\n offset += c.length;\n }\n return out;\n}\n\nexport type ReconstructUriResult =\n | { ok: true; uri: string }\n | { ok: false; code: 'INVALID_URI'; reason: string };\n\n/**\n * Reconstruct a chunked URI (`uri-chunk-array`) into its logical string.\n *\n * The chunks arrive as JS strings produced by the canonical-CBOR decoder,\n * which already rejects any non-UTF-8 `tstr` (surfacing it upstream as\n * `MALFORMED_CBOR`) — so by the time this helper runs the only structural\n * task left is to byte-concatenate and decode. We re-encode each chunk to its\n * UTF-8 bytes, concatenate, and decode the whole with `{ fatal: true }`. A\n * conformant producer never splits a multi-byte codepoint across chunks (the\n * Cardano 64-byte cap is applied on codepoint boundaries), so this decode\n * succeeds for every well-formed record; the `INVALID_URI` branch is the\n * residual guard for a byte sequence that does not reconstruct to valid UTF-8.\n *\n * Per-scheme shape validation (the IPFS CID profile) and absolute-URI /\n * fragment-identifier / scheme-set checks fire in `validator.ts`, NOT here —\n * this helper is structural-only.\n */\nexport function reconstructChunkedUri(chunks: ReadonlyArray<string>): ReconstructUriResult {\n const merged = bytesChunkArrayConcat(chunks.map((c) => UTF8_ENCODER.encode(c)));\n try {\n const uri = new TextDecoder('utf-8', { fatal: true }).decode(merged);\n return { ok: true, uri };\n } catch (cause) {\n return {\n ok: false,\n code: 'INVALID_URI',\n reason: cause instanceof Error ? cause.message : String(cause),\n };\n }\n}\n\n/**\n * Chunk a URI string into `[ tstr .size (1..64) ]`, splitting on UTF-8 byte\n * boundaries so no multi-byte codepoint straddles a chunk.\n *\n * For pure-ASCII URIs (the common `ar://`, `ipfs://` cases) this collapses\n * to plain 64-byte byte-slice chunks. For URIs with non-ASCII path components\n * (rare but possible — RFC 3986 §2.5 IRIs / percent-encoded UTF-8) the\n * algorithm rewinds to the nearest codepoint boundary at each chunk break.\n */\nexport function chunkUri(uri: string): string[] {\n const bytes = UTF8_ENCODER.encode(uri);\n if (bytes.length === 0) return [''];\n if (bytes.length <= CHUNK_MAX_BYTES) return [uri];\n const decoder = new TextDecoder('utf-8', { fatal: true });\n const chunks: string[] = [];\n let cursor = 0;\n while (cursor < bytes.length) {\n let end = Math.min(cursor + CHUNK_MAX_BYTES, bytes.length);\n // Rewind to the start of the previous UTF-8 codepoint if we landed in\n // the middle of a multibyte sequence. UTF-8 continuation bytes match\n // 0b10xx_xxxx; rewind while the byte at `end` is a continuation.\n while (end < bytes.length && (bytes[end]! & 0xc0) === 0x80) end--;\n chunks.push(decoder.decode(bytes.subarray(cursor, end)));\n cursor = end;\n }\n return chunks;\n}\n","// CIP-309 v1 error-code catalogue — single source of truth for the\n// structural-validator codes (Part A) and the verifier-layer codes (Part B)\n// that downstream verifiers re-export from this package.\n//\n// The structural validator emits ONLY Part A codes. Part B codes are\n// re-exported so consumers can `import { ErrorCode } from '@cardanowall/poe-standard'`\n// and dispatch on a single union type without round-tripping through the\n// verifier package.\n//\n// Codes are SCREAMING_SNAKE_CASE and MUST match the canonical taxonomy\n// byte-exact across the TS/PY/RS implementations — no lowercase synonyms,\n// no `schema_*`-prefixed parser-internal codes.\n\n// =============================================================================\n// Part A — structural validator codes\n// =============================================================================\nexport const STRUCTURAL_ERROR_CODES = [\n // CBOR decode layer. A single code covers every canonical-decode failure —\n // malformed/truncated bytes, indefinite-length encodings, non-canonical\n // (unsorted) map-key ordering, duplicate map keys, non-minimal integers, and\n // invalid UTF-8 — by design (no separate duplicate-key code).\n 'MALFORMED_CBOR',\n // Generic schema-layer\n 'SCHEMA_TYPE_MISMATCH',\n 'SCHEMA_MISSING_REQUIRED',\n 'SCHEMA_UNKNOWN_FIELD',\n 'SCHEMA_INVALID_LITERAL',\n 'SCHEMA_EMPTY_RECORD',\n // Hash-map\n 'HASH_DIGEST_LENGTH_MISMATCH',\n 'UNSUPPORTED_HASH_ALG',\n // Top-level `merkle[]`\n 'UNSUPPORTED_MERKLE_COMMIT_ALG',\n // URI / chunking. A chunk whose bytes do not reconstruct to valid UTF-8\n // surfaces as MALFORMED_CBOR at decode (cbor2 rejects invalid-UTF-8 tstr)\n // or, in the residual reconstruct guard, as INVALID_URI — there is no\n // separate codepoint-split code.\n 'INVALID_URI',\n 'CHUNK_TOO_LARGE',\n // Encryption envelope\n 'UNAUTHENTICATED_CIPHER_FORBIDDEN',\n 'UNSUPPORTED_AEAD_ALG',\n 'NONCE_LENGTH_MISMATCH',\n 'UNSUPPORTED_ENVELOPE_SCHEME',\n 'ENC_SLOTS_EMPTY',\n 'ENC_SLOT_INVALID_SHAPE',\n 'UNSUPPORTED_KEM_ALG',\n 'ENC_KEM_REQUIRED',\n 'KEM_EPK_LENGTH_MISMATCH',\n 'KEM_CT_LENGTH_MISMATCH',\n 'WRAP_LENGTH_MISMATCH',\n 'ENC_SLOTS_MAC_INVALID_LENGTH',\n 'ENC_SLOTS_MAC_REQUIRED',\n 'ENC_SLOTS_REQUIRED',\n 'ENC_EXCLUSIVITY_VIOLATION',\n 'ENC_NO_KEY_PATH',\n 'ENC_REQUIRES_CONTENT_HASH',\n 'ENC_PASSPHRASE_ALG_UNSUPPORTED',\n 'ENC_PASSPHRASE_SALT_TOO_SHORT',\n 'ENC_PASSPHRASE_SALT_TOO_LONG',\n 'ENC_PASSPHRASE_ARGON2_PARAMS_TOO_LOW',\n 'ENC_PASSPHRASE_PARAMS_EXCEED_POLICY',\n // Signatures\n 'MALFORMED_SIG_COSE_SIGN1',\n 'SIGNATURE_UNSUPPORTED',\n 'SIG_ENTRY_INVALID_SHAPE',\n 'SIG_ENTRY_KID_COSE_KEY_CONFLICT',\n 'SIG_PRIVATE_KEY_LEAKED',\n // Supersedence\n 'SUPERSEDES_TX_INVALID_LENGTH',\n // Forward-compat critical extensions\n 'EXTENSION_UNSUPPORTED_CRITICAL',\n 'CRIT_SHAPE_INVALID',\n] as const;\n\n// =============================================================================\n// Part B — verifier-layer codes\n// Re-exported so downstream verifiers can dispatch on a single union.\n// The structural validator NEVER emits these.\n// =============================================================================\nexport const VERIFIER_ERROR_CODES = [\n 'METADATA_NOT_FOUND',\n 'INSUFFICIENT_CONFIRMATIONS',\n 'SIGNATURE_INVALID',\n 'SIGNER_KEY_UNRESOLVED',\n 'WALLET_ADDRESS_MISMATCH',\n 'URI_TARGET_FORBIDDEN',\n 'URI_INTEGRITY_MISMATCH',\n 'URI_FETCH_FAILED',\n 'CONTENT_UNAVAILABLE',\n 'CIPHERTEXT_UNAVAILABLE',\n 'PROVIDER_UNAVAILABLE',\n 'SERVICE_INDEPENDENCE_VIOLATION',\n 'WRONG_DECRYPTION_INPUT_SHAPE',\n 'WRONG_RECIPIENT_KEY',\n 'TAMPERED_HEADER',\n 'TAMPERED_CIPHERTEXT',\n 'KDF_DERIVATION_FAILED',\n 'SCHEMA_MERKLE_LEAF_COUNT_MISMATCH',\n 'SCHEMA_MERKLE_LEAVES_FORMAT_UNSUPPORTED',\n 'SCHEMA_MERKLE_LEAVES_MALFORMED',\n 'MERKLE_ROOT_MISMATCH',\n 'MERKLE_LEAVES_UNAVAILABLE',\n 'MERKLE_LEAVES_INFORMATIVE_FORM',\n 'MERKLE_UNSUPPORTED',\n 'OUT_OF_PROFILE_SKIPPED',\n] as const;\n\nexport const ERROR_CODES = [...STRUCTURAL_ERROR_CODES, ...VERIFIER_ERROR_CODES] as const;\n\nexport type StructuralErrorCode = (typeof STRUCTURAL_ERROR_CODES)[number];\nexport type VerifierErrorCode = (typeof VERIFIER_ERROR_CODES)[number];\nexport type ErrorCode = (typeof ERROR_CODES)[number];\n\n// Severity classification. Codes not listed are `error` by default.\n//\n// `info` — a deliberate non-check (algorithm out of profile, unrecognised\n// signature algorithm at the opt-in informational tier).\n//\n// `warning` — a non-fatal anomaly that occurred at runtime but did not\n// invalidate the record (e.g. a transient gateway failure, partial leaves\n// availability).\n//\n// `MERKLE_UNSUPPORTED` / `OUT_OF_PROFILE_SKIPPED` carry dual severity\n// (`info` when another commitment was validated; `error` for the\n// merkle-only / strict-mode case). The verifier emits the resolved severity\n// per-issue; this map records the default `info` reading.\nexport type Severity = 'error' | 'warning' | 'info';\n\nexport const SEVERITY: Readonly<Record<ErrorCode, Severity>> = Object.freeze({\n // --- Part A ---\n MALFORMED_CBOR: 'error',\n SCHEMA_TYPE_MISMATCH: 'error',\n SCHEMA_MISSING_REQUIRED: 'error',\n SCHEMA_UNKNOWN_FIELD: 'error',\n SCHEMA_INVALID_LITERAL: 'error',\n SCHEMA_EMPTY_RECORD: 'error',\n HASH_DIGEST_LENGTH_MISMATCH: 'error',\n UNSUPPORTED_HASH_ALG: 'error',\n UNSUPPORTED_MERKLE_COMMIT_ALG: 'error',\n INVALID_URI: 'error',\n CHUNK_TOO_LARGE: 'error',\n UNAUTHENTICATED_CIPHER_FORBIDDEN: 'error',\n UNSUPPORTED_AEAD_ALG: 'error',\n NONCE_LENGTH_MISMATCH: 'error',\n UNSUPPORTED_ENVELOPE_SCHEME: 'error',\n ENC_SLOTS_EMPTY: 'error',\n ENC_SLOT_INVALID_SHAPE: 'error',\n UNSUPPORTED_KEM_ALG: 'error',\n ENC_KEM_REQUIRED: 'error',\n KEM_EPK_LENGTH_MISMATCH: 'error',\n KEM_CT_LENGTH_MISMATCH: 'error',\n WRAP_LENGTH_MISMATCH: 'error',\n ENC_SLOTS_MAC_INVALID_LENGTH: 'error',\n ENC_SLOTS_MAC_REQUIRED: 'error',\n ENC_SLOTS_REQUIRED: 'error',\n ENC_EXCLUSIVITY_VIOLATION: 'error',\n ENC_NO_KEY_PATH: 'error',\n ENC_REQUIRES_CONTENT_HASH: 'error',\n ENC_PASSPHRASE_ALG_UNSUPPORTED: 'error',\n ENC_PASSPHRASE_SALT_TOO_SHORT: 'error',\n ENC_PASSPHRASE_SALT_TOO_LONG: 'error',\n ENC_PASSPHRASE_ARGON2_PARAMS_TOO_LOW: 'error',\n ENC_PASSPHRASE_PARAMS_EXCEED_POLICY: 'error',\n MALFORMED_SIG_COSE_SIGN1: 'error',\n SIGNATURE_UNSUPPORTED: 'info',\n SIG_ENTRY_INVALID_SHAPE: 'error',\n SIG_ENTRY_KID_COSE_KEY_CONFLICT: 'error',\n SIG_PRIVATE_KEY_LEAKED: 'error',\n SUPERSEDES_TX_INVALID_LENGTH: 'error',\n EXTENSION_UNSUPPORTED_CRITICAL: 'error',\n CRIT_SHAPE_INVALID: 'error',\n // --- Part B ---\n METADATA_NOT_FOUND: 'error',\n INSUFFICIENT_CONFIRMATIONS: 'info',\n SIGNATURE_INVALID: 'error',\n SIGNER_KEY_UNRESOLVED: 'error',\n WALLET_ADDRESS_MISMATCH: 'error',\n URI_TARGET_FORBIDDEN: 'error',\n URI_INTEGRITY_MISMATCH: 'error',\n URI_FETCH_FAILED: 'warning',\n CONTENT_UNAVAILABLE: 'error',\n CIPHERTEXT_UNAVAILABLE: 'error',\n PROVIDER_UNAVAILABLE: 'error',\n SERVICE_INDEPENDENCE_VIOLATION: 'error',\n WRONG_DECRYPTION_INPUT_SHAPE: 'error',\n WRONG_RECIPIENT_KEY: 'error',\n TAMPERED_HEADER: 'error',\n TAMPERED_CIPHERTEXT: 'error',\n KDF_DERIVATION_FAILED: 'error',\n SCHEMA_MERKLE_LEAF_COUNT_MISMATCH: 'error',\n SCHEMA_MERKLE_LEAVES_FORMAT_UNSUPPORTED: 'error',\n SCHEMA_MERKLE_LEAVES_MALFORMED: 'error',\n MERKLE_ROOT_MISMATCH: 'error',\n MERKLE_LEAVES_UNAVAILABLE: 'warning',\n MERKLE_LEAVES_INFORMATIVE_FORM: 'info',\n // Dual-severity — default reading is `info`; the verifier promotes to\n // `error` for merkle-only records (no `items[]` content claim was\n // validated in the same record).\n MERKLE_UNSUPPORTED: 'info',\n // Dual-severity — default reading is `info` (render mode); strict\n // end-to-end verifiers promote to `error`.\n OUT_OF_PROFILE_SKIPPED: 'info',\n});\n\nexport function severityOf(code: ErrorCode): Severity {\n return SEVERITY[code];\n}\n","// CIP-309 v1 structural validator (the Part A structural-validation role).\n//\n// Pure function over CBOR bytes — performs no I/O, opens no socket, decodes\n// no ciphertext. Cryptographic signature verification, chain resolution, URI\n// fetching, decryption, and confirmation-depth checks are the verifier's\n// concern (the Part B verifier role) and live in `@cardanowall/sdk-ts`.\n//\n// Pipeline:\n// Step 1 Resource boundary — n/a here (validator has no fixed cap;\n// transactions are bounded by maxTxSize\n// enforced at submission)\n// Step 2 Canonical CBOR decode — `decodeCanonicalCbor` from crypto-core\n// surfaces malformed / non-canonical /\n// duplicate-key inputs as typed errors.\n// Step 3 Schema parse — Zod schema in `./schema.ts`; the mapper\n// below lifts each Zod issue to a\n// SCREAMING_SNAKE structural code.\n// Step 4 Domain checks — cross-field rules, registry membership,\n// URI reconstruction + per-scheme shape\n// (the IPFS CID profile), `enc`\n// cross-field invariants, `sigs[i]`\n// closed-map check + COSE_Sign1 structural\n// decode (path-1/path-2 mutual exclusion,\n// `SIG_PRIVATE_KEY_LEAKED` guard).\n// Step 5 Result emission — `{ ok: true, record, info?, warnings? }`\n// or `{ ok: false, issues }`.\n//\n// The validator NEVER throws — failure paths route through the discriminated\n// `ValidateResult` union so callers handle errors as data.\n\nimport { z } from 'zod';\n\nimport { decodeCanonicalCbor } from '@cardanowall/crypto-core/cbor';\nimport { CoseVerifyError, decodeCoseSign1 } from '@cardanowall/crypto-core/cose';\n\nimport { bytesChunkArrayConcat, reconstructChunkedUri } from './chunked';\nimport { SEVERITY, type ErrorCode, type Severity } from './error-codes';\nimport {\n EncryptionEnvelopeSchema,\n isExtensionKey,\n PoeRecordSchema,\n TOP_LEVEL_BASE_KEYS,\n type ItemEntry,\n type MerkleCommit,\n type PoeRecord,\n type SigEntry,\n type Slot,\n} from './schema';\n\n// =============================================================================\n// Registries\n// =============================================================================\n\n// Content-hash algorithm registry. Map value = digest length.\nconst HASH_ALG_LENGTHS: Readonly<Record<string, number>> = {\n 'sha2-256': 32,\n 'blake2b-256': 32,\n};\n\n// Merkle list-commitment algorithm registry.\nconst MERKLE_COMMIT_ALG_LENGTHS: Readonly<Record<string, number>> = {\n 'rfc9162-sha256': 32,\n};\n\n// Content AEAD registry. Value = nonce length.\nconst AEAD_NONCE_LENGTHS: Readonly<Record<string, number>> = {\n 'xchacha20-poly1305': 24,\n};\n\n// Unauthenticated-cipher family. An `enc.aead` naming any of these is rejected\n// with `UNAUTHENTICATED_CIPHER_FORBIDDEN` (not the generic `UNSUPPORTED_AEAD_ALG`)\n// so the failure names the integrity hazard. Two arms:\n// - block-cipher modes with no integrity (`cbc`, `ctr`, `ecb`, `cfb`, `ofb`)\n// appearing as a delimited token, which matches every key-size spelling\n// (`aes-cbc`, `aes-256-cbc`, `aes-128-cbc`, `des-ede3-cbc`, …);\n// - legacy stream/block ciphers as a leading token (`rc4`, `des`, `3des`).\n// The token delimiters keep the authenticated AEADs (`aes-256-gcm`,\n// `chacha20-poly1305`, `xchacha20-poly1305`) from matching. The trailing\n// boundary tolerates a single trailing `\\n` (`\\n?$`) so a forbidden cipher\n// cannot evade the denylist by appending one newline (`aes-256-cbc\\n` /\n// `rc4\\n`), matching the Python/Rust validators.\nconst UNAUTHENTICATED_CIPHER_RE =\n /(?:^|[-_])(?:cbc|ctr|ecb|cfb|ofb)(?:[-_]|\\n?$)|^(?:rc4|des|3des)(?:[-_]|\\n?$)/i;\n\n// KEM registry, expressed as a per-KEM slot DESCRIPTOR.\n//\n// Each registered KEM pins the exact recipient-slot shape:\n//\n// - x25519: `{ epk: bstr(32), wrap: bstr(48) }` — classical\n// ephemeral-static X25519. The per-slot `epk` is the 32-byte ephemeral\n// public key.\n// - mlkem768x25519: `{ kem_ct: <1120-byte X-Wing enc>, wrap: bstr(48) }` —\n// the X-Wing hybrid (ML-KEM-768 + X25519). The ciphertext is carried as a\n// chunked byte-string array (`kem_ct`) that MUST reassemble to exactly\n// 1120 bytes; there is NO per-slot `epk` on the hybrid path.\n//\n// A descriptor declares the slot's *ciphertext-bearing* field (`epk` for a\n// classical KEM, `kem_ct` for a hybrid) and its expected reassembled byte\n// length. `wrap` is 48 bytes for every KEM (32-byte CEK + 16-byte AEAD tag).\n// The validator branches on the descriptor's `field` to know which field MUST\n// be present and which MUST be absent, so adding a future KEM is a one-line\n// registry edit, not a new code path.\ntype KemSlotField = 'epk' | 'kem_ct';\ninterface KemSlotDescriptor {\n /** The ciphertext-bearing slot field this KEM uses. */\n readonly field: KemSlotField;\n /** Expected length of that field (reassembled length for a chunked field). */\n readonly fieldLength: number;\n /** `wrap` length — 32-byte CEK + 16-byte AEAD tag. */\n readonly wrapLength: number;\n}\nconst KEM_SLOT_DESCRIPTORS: Readonly<Record<string, KemSlotDescriptor>> = {\n x25519: { field: 'epk', fieldLength: 32, wrapLength: 48 },\n mlkem768x25519: { field: 'kem_ct', fieldLength: 1120, wrapLength: 48 },\n};\n\n// The length-mismatch code emitted when a slot's ciphertext-bearing field has\n// the wrong (reassembled) length, keyed by the descriptor's `field`.\nconst KEM_FIELD_LENGTH_CODE: Readonly<Record<KemSlotField, ErrorCode>> = {\n epk: 'KEM_EPK_LENGTH_MISMATCH',\n kem_ct: 'KEM_CT_LENGTH_MISMATCH',\n};\n\n// Passphrase KDF registry.\nconst PASSPHRASE_KDF_ALGS: ReadonlySet<string> = new Set(['argon2id']);\n\n// Signature-algorithm baseline. `-8` (EdDSA, curve-agnostic — pinned to\n// Ed25519) is the mandatory baseline; `-19` (Ed25519 fully-specified) is\n// optional and verified identically under the Ed25519 primitive when\n// accepted. The reference validator accepts both; anything else surfaces as\n// `SIGNATURE_UNSUPPORTED` (info-severity).\nconst KNOWN_SIG_ALG_IDS: ReadonlySet<number> = new Set([-8, -19]);\n\n// =============================================================================\n// Result types\n// =============================================================================\n\nexport interface ValidationIssue {\n readonly code: ErrorCode;\n readonly path: ReadonlyArray<string | number>;\n readonly message: string;\n readonly severity: Severity;\n}\n\nexport type ValidateResult =\n | {\n readonly ok: true;\n readonly record: PoeRecord;\n readonly warnings?: ReadonlyArray<ValidationIssue>;\n readonly info?: ReadonlyArray<ValidationIssue>;\n }\n | { readonly ok: false; readonly issues: ReadonlyArray<ValidationIssue> };\n\n// =============================================================================\n// Public entry point\n// =============================================================================\n\nexport function validatePoeRecord(bytes: Uint8Array): ValidateResult {\n // Step 2 — canonical CBOR decode. Every decode failure surfaces as the single\n // MALFORMED_CBOR code: malformed/truncated bytes, indefinite-length\n // (streaming) encodings, non-canonical map-key ordering, duplicate map keys,\n // non-minimal integers, and invalid UTF-8. The taxonomy has no finer-grained\n // CBOR-decode codes — the validator catches all of these at decode and\n // reports one error.\n let decoded: unknown;\n try {\n decoded = decodeCanonicalCbor(bytes);\n } catch (cause) {\n return {\n ok: false,\n issues: [\n {\n code: 'MALFORMED_CBOR',\n path: [],\n message: cause instanceof Error ? cause.message : String(cause),\n severity: 'error',\n },\n ],\n };\n }\n\n // Step 3 — schema parse\n const parse = PoeRecordSchema.safeParse(decoded);\n if (!parse.success) {\n const issues = parse.error.issues\n .map((issue) => mapZodIssue(issue, decoded))\n .sort(compareIssuePath);\n return { ok: false, issues };\n }\n\n // Step 4 — domain checks\n const record = parse.data;\n const errors: ValidationIssue[] = [];\n const warnings: ValidationIssue[] = [];\n const info: ValidationIssue[] = [];\n\n // 4a — content-commitment rule (`SCHEMA_EMPTY_RECORD`).\n const itemsLen = Array.isArray(record.items) ? record.items.length : 0;\n const merkleLen = Array.isArray(record.merkle) ? record.merkle.length : 0;\n if (itemsLen === 0 && merkleLen === 0) {\n errors.push(\n issue(\n 'SCHEMA_EMPTY_RECORD',\n [],\n 'record must carry at least one of items[] or merkle[] non-empty',\n ),\n );\n }\n\n // `crit[]` shape rules. Runs BEFORE the per-entry\n // `EXTENSION_UNSUPPORTED_CRITICAL` check.\n const decodedTopKeys = topLevelKeysOf(decoded);\n const critShapeInvalidIndices = checkCritShape(record, decodedTopKeys, errors);\n\n // Unknown top-level fields (typos like `supersedess`, `Sigs` that fall\n // outside both the base set and the extension-key namespaces).\n for (const k of decodedTopKeys) {\n if (TOP_LEVEL_BASE_KEYS.has(k)) continue;\n if (isExtensionKey(k)) continue;\n errors.push(issue('SCHEMA_UNKNOWN_FIELD', [k], `unknown top-level field: ${k}`));\n }\n\n // `EXTENSION_UNSUPPORTED_CRITICAL`: v1 reference validator implements no\n // extension keys, so every shape-valid `crit` entry is unsupported.\n if (Array.isArray(record.crit)) {\n for (let i = 0; i < record.crit.length; i++) {\n if (critShapeInvalidIndices.has(i)) continue;\n const critName = record.crit[i]!;\n errors.push(\n issue(\n 'EXTENSION_UNSUPPORTED_CRITICAL',\n ['crit', i],\n `crit lists extension '${critName}' that this validator does not implement`,\n ),\n );\n }\n }\n\n // 4b – 4e — per-item walk.\n for (let i = 0; i < (record.items ?? []).length; i++) {\n const item = record.items![i]!;\n checkItemHashes(item, i, errors);\n if (item.uris) checkItemUris(item.uris, ['items', i, 'uris'], errors);\n if (item.enc !== undefined) checkItemEnc(item, i, errors);\n }\n\n // 4i — top-level `merkle[]` walk.\n for (let i = 0; i < (record.merkle ?? []).length; i++) {\n const commit = record.merkle![i]!;\n checkMerkleCommit(commit, i, errors);\n }\n\n // 4h — supersedes length is enforced by the schema-layer refinement; this\n // step adds no further check.\n\n // 4f + 4g — `sigs[i]` closed map shape + COSE_Sign1 structural decode.\n if (record.sigs) {\n for (let i = 0; i < record.sigs.length; i++) {\n checkSigEntry(record.sigs[i]!, i, errors, info);\n }\n }\n\n // Step 5 — result emission. `info`-severity entries do NOT fail the record;\n // `warning`-severity entries (none among the structural codes) also remain\n // non-fatal.\n if (errors.length > 0) {\n return { ok: false, issues: errors.sort(compareIssuePath) };\n }\n const result: {\n ok: true;\n record: PoeRecord;\n warnings?: ReadonlyArray<ValidationIssue>;\n info?: ReadonlyArray<ValidationIssue>;\n } = {\n ok: true,\n record,\n };\n if (warnings.length > 0) result.warnings = warnings.sort(compareIssuePath);\n if (info.length > 0) result.info = info.sort(compareIssuePath);\n return result;\n}\n\n// =============================================================================\n// Step 3 helpers — Zod issue → structural-code mapping\n// =============================================================================\n\nfunction mapZodIssue(zissue: z.core.$ZodIssue, decoded?: unknown): ValidationIssue {\n const path = zissue.path as ReadonlyArray<string | number>;\n // Refinements with an explicit `params.code` win unconditionally — they\n // are the canonical taxonomy code attached at schema-definition time.\n const explicit = (zissue as { params?: { code?: string } }).params?.code as ErrorCode | undefined;\n if (explicit !== undefined) {\n return issue(explicit, path, zissue.message);\n }\n\n // Path-based dispatch:\n // `sigs[i].*` → `SIG_ENTRY_INVALID_SHAPE` (the sig-entry closed-map rule)\n // `items[i].enc.slots[j].(epk|wrap)` → `ENC_SLOT_INVALID_SHAPE`\n // (structurally malformed slots)\n // `v` literal mismatch / missing → `SCHEMA_INVALID_LITERAL` vs\n // `SCHEMA_MISSING_REQUIRED`.\n const inSigsEntry = path.length >= 2 && path[0] === 'sigs' && typeof path[1] === 'number';\n\n // Match either the absolute path (`items[i].enc.slots[j]…`) or the\n // relative-to-`enc` path (`slots[j]…`) — the latter is what\n // `EncryptionEnvelopeSchema.safeParse(item.enc)` emits before\n // `checkItemEnc` prefixes the `items[i].enc.` segment.\n //\n // The match includes the whole slot ELEMENT (path ending at `slots[j]`, no\n // trailing field) as well as a field WITHIN a slot (`slots[j].epk`). A\n // wrong-typed slot (`slots: [[1, 2]]` → array instead of `{epk, wrap}`) and\n // a slot carrying an extra key both classify as `ENC_SLOT_INVALID_SHAPE`,\n // matching the spec's \"a slot is not a 2-key map {epk, wrap}\".\n const isInSlotEntry = (() => {\n if (\n path.length >= 5 &&\n path[0] === 'items' &&\n typeof path[1] === 'number' &&\n path[2] === 'enc' &&\n path[3] === 'slots' &&\n typeof path[4] === 'number'\n ) {\n return true;\n }\n if (path.length >= 2 && path[0] === 'slots' && typeof path[1] === 'number') {\n return true;\n }\n return false;\n })();\n\n const valueAtIssue = valueAtPath(decoded, path);\n const isMissing = valueAtIssue === undefined;\n\n switch (zissue.code) {\n case 'invalid_type':\n if (isInSlotEntry) return issue('ENC_SLOT_INVALID_SHAPE', path, zissue.message);\n if (isMissing) {\n if (inSigsEntry) return issue('SIG_ENTRY_INVALID_SHAPE', path, zissue.message);\n return issue('SCHEMA_MISSING_REQUIRED', path, zissue.message);\n }\n if (inSigsEntry) return issue('SIG_ENTRY_INVALID_SHAPE', path, zissue.message);\n return issue('SCHEMA_TYPE_MISMATCH', path, zissue.message);\n case 'invalid_value':\n // Zod 4's `z.literal(1)` emits `invalid_value` for both a missing field\n // AND a present-but-wrong value. Disambiguate via the runtime value:\n // missing → `SCHEMA_MISSING_REQUIRED`; present-but-wrong → `SCHEMA_INVALID_LITERAL`.\n if (path.length === 1 && path[0] === 'v') {\n return issue(\n isMissing ? 'SCHEMA_MISSING_REQUIRED' : 'SCHEMA_INVALID_LITERAL',\n path,\n zissue.message,\n );\n }\n return issue('SCHEMA_INVALID_LITERAL', path, zissue.message);\n case 'unrecognized_keys':\n if (isInSlotEntry) return issue('ENC_SLOT_INVALID_SHAPE', path, zissue.message);\n if (inSigsEntry) return issue('SIG_ENTRY_INVALID_SHAPE', path, zissue.message);\n return issue('SCHEMA_UNKNOWN_FIELD', path, zissue.message);\n case 'invalid_format':\n case 'too_big':\n case 'too_small':\n if (inSigsEntry) return issue('SIG_ENTRY_INVALID_SHAPE', path, zissue.message);\n return issue('SCHEMA_TYPE_MISMATCH', path, zissue.message);\n case 'invalid_union':\n case 'invalid_key':\n case 'invalid_element':\n case 'custom':\n default:\n if (isInSlotEntry) return issue('ENC_SLOT_INVALID_SHAPE', path, zissue.message);\n if (inSigsEntry) return issue('SIG_ENTRY_INVALID_SHAPE', path, zissue.message);\n return issue('SCHEMA_TYPE_MISMATCH', path, zissue.message);\n }\n}\n\n// =============================================================================\n// Step 4 helpers — domain checks\n// =============================================================================\n\n// 4b — hash-map registry membership + digest length per algorithm.\nfunction checkItemHashes(item: ItemEntry, idx: number, errors: ValidationIssue[]): void {\n const entries = Object.entries(item.hashes);\n if (entries.length === 0) {\n errors.push(\n issue(\n 'SCHEMA_TYPE_MISMATCH',\n ['items', idx, 'hashes'],\n 'hashes must be a non-empty CBOR map of <alg-id> -> <digest>',\n ),\n );\n return;\n }\n for (const [alg, digest] of entries) {\n if (!(alg in HASH_ALG_LENGTHS)) {\n errors.push(\n issue('UNSUPPORTED_HASH_ALG', ['items', idx, 'hashes', alg], `unknown hash alg: ${alg}`),\n );\n continue;\n }\n const expected = HASH_ALG_LENGTHS[alg]!;\n if (digest.length !== expected) {\n errors.push(\n issue(\n 'HASH_DIGEST_LENGTH_MISMATCH',\n ['items', idx, 'hashes', alg],\n `hashes['${alg}'] digest length ${digest.length} != ${expected}`,\n ),\n );\n }\n }\n}\n\n// 4c — URI chunk reconstruction + per-scheme shape.\nfunction checkItemUris(\n uris: ReadonlyArray<ReadonlyArray<string>>,\n basePath: ReadonlyArray<string | number>,\n errors: ValidationIssue[],\n): void {\n uris.forEach((chunks, ui) => validateOneUri(chunks, [...basePath, ui], errors));\n}\n\nfunction validateOneUri(\n chunks: ReadonlyArray<string>,\n path: ReadonlyArray<string | number>,\n errors: ValidationIssue[],\n): void {\n const reconstructed = reconstructChunkedUri(chunks);\n if (!reconstructed.ok) {\n errors.push(issue(reconstructed.code, path, reconstructed.reason));\n return;\n }\n const uri = reconstructed.uri;\n\n // Absolute URI, no fragment, scheme in `{ar://, ipfs://}`.\n if (uri.includes('#')) {\n errors.push(\n issue(\n 'INVALID_URI',\n path,\n \"URI contains a fragment identifier ('#'), which is forbidden\",\n ),\n );\n return;\n }\n const sepIdx = uri.indexOf('://');\n if (sepIdx <= 0 || !/^[a-z][a-z0-9+.-]*$/i.test(uri.slice(0, sepIdx))) {\n errors.push(\n issue('INVALID_URI', path, 'URI is not absolute (missing scheme://hierarchical-part)'),\n );\n return;\n }\n // RFC 3986 §3.1: the scheme is case-insensitive, so case-fold the SCHEME ONLY,\n // then ALWAYS validate the body. The host / CID / txid is NOT case-folded — a\n // base64url Arweave txid and a base58btc CID are case-significant. An\n // uppercase scheme (`AR://`, `IPFS://`) is accepted iff its body passes the\n // same per-scheme shape check a lowercase scheme would.\n const scheme = uri.slice(0, sepIdx).toLowerCase();\n const rest = uri.slice(sepIdx + '://'.length);\n if (scheme === 'ar') {\n if (!/^ar:\\/\\/[A-Za-z0-9_-]{43}$/.test('ar://' + rest)) {\n errors.push(\n issue(\n 'INVALID_URI',\n path,\n 'ar:// URI does not match `^ar://[A-Za-z0-9_-]{43}$` (43-char base64url txid, no path/query/fragment)',\n ),\n );\n }\n return;\n }\n if (scheme === 'ipfs') {\n // The structural validator does a full CID parse (not just a prefix check).\n const slashIdx = rest.indexOf('/');\n const cid = slashIdx === -1 ? rest : rest.slice(0, slashIdx);\n if (!validateCidProfile(cid)) {\n errors.push(\n issue(\n 'INVALID_URI',\n path,\n 'ipfs:// URI is not a valid CID under the CIP-309 profile',\n ),\n );\n }\n return;\n }\n // Scheme not in `{ar://, ipfs://}`.\n errors.push(\n issue(\n 'INVALID_URI',\n path,\n 'unsupported URI scheme; v1 PoE URI set is {ar://, ipfs://}',\n ),\n );\n}\n\n// 4d — encryption envelope.\nfunction checkItemEnc(item: ItemEntry, idx: number, errors: ValidationIssue[]): void {\n // Pre-check: an `enc`-bearing item MUST commit to a content hash. The claim\n // is the *plaintext* digest, so the hashes map MUST carry at least one\n // registered content-hash entry (sha2-256 / blake2b-256). This is a PRESENCE\n // check, not merely a non-empty check: a `hashes` map that exists but carries\n // only a non-content algorithm (e.g. `{md5}`) still fails — there is no\n // content digest to bind the ciphertext to. The empty-map case is also caught\n // here (and additionally fails the CDDL `1*` cardinality in checkItemHashes).\n const hasContentHash = Object.keys(item.hashes).some((alg) => alg in HASH_ALG_LENGTHS);\n if (!hasContentHash) {\n errors.push(\n issue(\n 'ENC_REQUIRES_CONTENT_HASH',\n ['items', idx, 'enc'],\n 'item carries `enc` but `hashes` has no content-hash entry (sha2-256 or blake2b-256)',\n ),\n );\n return;\n }\n\n // Schema-parse the envelope independently so we can lift its issues with\n // the correct path prefix.\n const encParse = EncryptionEnvelopeSchema.safeParse(item.enc);\n if (!encParse.success) {\n for (const zissue of encParse.error.issues) {\n const mapped = mapZodIssue(zissue, item.enc);\n errors.push({\n ...mapped,\n path: ['items', idx, 'enc', ...mapped.path],\n });\n }\n return;\n }\n const enc = encParse.data;\n const basePath: ReadonlyArray<string | number> = ['items', idx, 'enc'];\n\n // `enc.scheme` MUST be the unsigned integer 1.\n if (typeof enc.scheme !== 'number' || !Number.isInteger(enc.scheme) || enc.scheme !== 1) {\n errors.push(\n issue(\n 'UNSUPPORTED_ENVELOPE_SCHEME',\n [...basePath, 'scheme'],\n `enc.scheme must be the unsigned integer 1; got ${String(enc.scheme)}`,\n ),\n );\n // Continue — other checks remain informative.\n }\n\n // AEAD checks (forbidden cipher first, then registry). The forbidden set is\n // the unauthenticated-cipher family — block-cipher modes that provide no\n // integrity (CBC, CTR, ECB, CFB, OFB) in any key-size spelling\n // (`aes-256-cbc`, `aes-128-cbc`, OpenSSL/JCA form) plus the legacy stream\n // ciphers (RC4, DES/3DES). Matching this family — rather than a generic\n // \"unknown alg\" fall-through to `UNSUPPORTED_AEAD_ALG` — names the security\n // hazard precisely: the record selected an authenticated-encryption-absent\n // cipher, not merely an unregistered one.\n if (UNAUTHENTICATED_CIPHER_RE.test(enc.aead)) {\n errors.push(\n issue(\n 'UNAUTHENTICATED_CIPHER_FORBIDDEN',\n [...basePath, 'aead'],\n `'${enc.aead}' is an unauthenticated cipher; CIP-309 mandates an authenticated (AEAD) cipher`,\n ),\n );\n return; // unrecoverable — nonce / kem / slot checks become noise\n }\n if (!(enc.aead in AEAD_NONCE_LENGTHS)) {\n errors.push(\n issue('UNSUPPORTED_AEAD_ALG', [...basePath, 'aead'], `unknown aead alg: ${enc.aead}`),\n );\n return;\n }\n const expectedNonceLen = AEAD_NONCE_LENGTHS[enc.aead]!;\n if (enc.nonce.length !== expectedNonceLen) {\n errors.push(\n issue(\n 'NONCE_LENGTH_MISMATCH',\n [...basePath, 'nonce'],\n `nonce length ${enc.nonce.length} != ${expectedNonceLen} for ${enc.aead}`,\n ),\n );\n }\n\n // Envelope-level KEM check (when present).\n if (enc.kem !== undefined && !(enc.kem in KEM_SLOT_DESCRIPTORS)) {\n errors.push(issue('UNSUPPORTED_KEM_ALG', [...basePath, 'kem'], `unknown kem alg: ${enc.kem}`));\n }\n\n // Key-path branching.\n const hasSlots = enc.slots !== undefined;\n const hasSlotsMac = enc.slots_mac !== undefined;\n const hasPassphrase = enc.passphrase !== undefined;\n\n if (hasSlots && hasPassphrase) {\n errors.push(\n issue('ENC_EXCLUSIVITY_VIOLATION', basePath, 'enc combines slots with passphrase; pick one'),\n );\n }\n if (hasSlots && !hasSlotsMac) {\n errors.push(\n issue('ENC_SLOTS_MAC_REQUIRED', basePath, 'enc.slots present but enc.slots_mac absent'),\n );\n }\n if (hasSlotsMac && !hasSlots) {\n errors.push(\n issue('ENC_SLOTS_REQUIRED', basePath, 'enc.slots_mac present but enc.slots absent'),\n );\n }\n if (hasSlots && enc.kem === undefined) {\n errors.push(issue('ENC_KEM_REQUIRED', basePath, 'enc.slots present but enc.kem absent'));\n }\n if (!hasSlots && !hasPassphrase) {\n errors.push(\n issue(\n 'ENC_NO_KEY_PATH',\n basePath,\n 'enc requires either slots or passphrase — no on-chain key path otherwise',\n ),\n );\n }\n\n // Slots shape checks. The slot shape is KEM-driven: the descriptor for the\n // declared `kem` pins which ciphertext-bearing field (`epk` for x25519,\n // `kem_ct` for mlkem768x25519) MUST be present and at what length, and\n // forbids the other KEM's field. Because the schema is permissive (no\n // `.strict()`), this domain pass is the ONLY thing rejecting cross-KEM\n // contamination — an x25519 slot carrying a stray `kem_ct`, or a hybrid slot\n // carrying a stray `epk`, surfaces as `ENC_SLOT_INVALID_SHAPE`.\n if (hasSlots) {\n if (enc.slots!.length < 1) {\n errors.push(\n issue('ENC_SLOTS_EMPTY', [...basePath, 'slots'], `slots length ${enc.slots!.length} < 1`),\n );\n }\n // Only validate slot shape when the KEM is known; an unknown / absent KEM\n // already emits its own code above, and we cannot pick a descriptor.\n const descriptor = enc.kem !== undefined ? KEM_SLOT_DESCRIPTORS[enc.kem] : undefined;\n if (descriptor !== undefined) {\n // The permissive `SlotSchema` strips unknown keys before they reach the\n // parsed slot, so the closed-map invariant (\"a slot is exactly {<ct\n // field>, wrap}\") is enforced against the RAW decoded slot key set here.\n const rawSlotKeys = rawSlotKeySets(item.enc);\n enc.slots!.forEach((slot, si) => {\n checkSlotShape(\n slot,\n rawSlotKeys[si] ?? new Set<string>(),\n descriptor,\n enc.kem!,\n [...basePath, 'slots', si],\n errors,\n );\n });\n }\n }\n\n // Passphrase block checks (registry membership + Argon2id closed-params + floor).\n if (hasPassphrase) {\n const pp = enc.passphrase!;\n const ppPath: ReadonlyArray<string | number> = [...basePath, 'passphrase'];\n if (!PASSPHRASE_KDF_ALGS.has(pp.alg)) {\n errors.push(\n issue(\n 'ENC_PASSPHRASE_ALG_UNSUPPORTED',\n [...ppPath, 'alg'],\n `unknown passphrase kdf alg: ${pp.alg}`,\n ),\n );\n return; // can't apply alg-specific params check\n }\n if (pp.alg === 'argon2id') {\n const allowed = new Set(['m', 't', 'p']);\n for (const k of Object.keys(pp.params)) {\n if (!allowed.has(k)) {\n errors.push(\n issue(\n 'SCHEMA_UNKNOWN_FIELD',\n [...ppPath, 'params', k],\n `unknown argon2id params field: ${k}`,\n ),\n );\n }\n }\n const p = pp.params as { m?: unknown; t?: unknown; p?: unknown };\n const argonInt = (val: unknown, name: 'm' | 't' | 'p'): number | null => {\n if (typeof val !== 'number' || !Number.isInteger(val)) {\n errors.push(\n issue(\n 'SCHEMA_TYPE_MISMATCH',\n [...ppPath, 'params', name],\n `argon2id params.${name} must be a CBOR unsigned integer`,\n ),\n );\n return null;\n }\n return val;\n };\n const mVal = argonInt(p.m, 'm');\n const tVal = argonInt(p.t, 't');\n const pVal = argonInt(p.p, 'p');\n if (mVal !== null && mVal < 65_536) {\n errors.push(\n issue(\n 'ENC_PASSPHRASE_ARGON2_PARAMS_TOO_LOW',\n [...ppPath, 'params', 'm'],\n 'argon2id requires m >= 65536 KiB',\n ),\n );\n }\n if (tVal !== null && tVal < 3) {\n errors.push(\n issue(\n 'ENC_PASSPHRASE_ARGON2_PARAMS_TOO_LOW',\n [...ppPath, 'params', 't'],\n 'argon2id requires t >= 3',\n ),\n );\n }\n if (pVal !== null && pVal < 1) {\n errors.push(\n issue(\n 'ENC_PASSPHRASE_ARGON2_PARAMS_TOO_LOW',\n [...ppPath, 'params', 'p'],\n 'argon2id requires p >= 1',\n ),\n );\n }\n }\n }\n}\n\n// KEM-driven per-slot shape gate (pure). Branches on the descriptor for the\n// declared envelope `kem`:\n//\n// - The descriptor's ciphertext-bearing field (`epk` for x25519, `kem_ct`\n// for mlkem768x25519) MUST be present at the expected (reassembled) length.\n// - The OTHER KEM's ciphertext field MUST be absent — its presence is\n// cross-KEM contamination and surfaces as `ENC_SLOT_INVALID_SHAPE` (the\n// hole that dropping `.strict()` on `SlotSchema` would otherwise open).\n// - `wrap` MUST be present at 48 bytes.\n//\n// This stays a pure function over already-decoded values: `kem_ct` reassembly\n// uses `bytesChunkArrayConcat` (byte concatenation only) — no crypto, no I/O.\n//\n// `rawKeys` is the slot's key set as it appeared on the wire (before the\n// permissive schema stripped unknowns); any key outside {<ct field>, wrap}\n// for this KEM is a closed-map violation.\nconst SLOT_KEY_UNIVERSE: ReadonlySet<string> = new Set(['epk', 'kem_ct', 'wrap']);\n\nfunction checkSlotShape(\n slot: Slot,\n rawKeys: ReadonlySet<string>,\n descriptor: KemSlotDescriptor,\n kem: string,\n slotPath: ReadonlyArray<string | number>,\n errors: ValidationIssue[],\n): void {\n // The ciphertext field that does NOT belong to this KEM. Its presence is a\n // shape violation regardless of length. Drive this off the RAW key set so a\n // future schema change cannot silently drop the foreign field before we see\n // it.\n const foreignField: KemSlotField = descriptor.field === 'epk' ? 'kem_ct' : 'epk';\n if (rawKeys.has(foreignField)) {\n errors.push(\n issue(\n 'ENC_SLOT_INVALID_SHAPE',\n [...slotPath, foreignField],\n `slot carries '${foreignField}' but kem='${kem}' expects '${descriptor.field}'`,\n ),\n );\n }\n\n // Any key outside the slot universe is a closed-map violation (the schema is\n // permissive and would otherwise strip it silently).\n for (const k of rawKeys) {\n if (!SLOT_KEY_UNIVERSE.has(k)) {\n errors.push(\n issue(\n 'ENC_SLOT_INVALID_SHAPE',\n [...slotPath, k],\n `slot carries unexpected key '${k}'; a slot is a 2-key map {${descriptor.field}, wrap}`,\n ),\n );\n }\n }\n\n // The required ciphertext-bearing field MUST be present at the expected\n // (reassembled) length.\n if (descriptor.field === 'epk') {\n if (slot.epk === undefined) {\n errors.push(\n issue(\n 'ENC_SLOT_INVALID_SHAPE',\n [...slotPath, 'epk'],\n `slot for kem='${kem}' is missing required 'epk'`,\n ),\n );\n } else if (slot.epk.length !== descriptor.fieldLength) {\n errors.push(\n issue(\n KEM_FIELD_LENGTH_CODE.epk,\n [...slotPath, 'epk'],\n `slot.epk length ${slot.epk.length} != ${descriptor.fieldLength} for ${kem}`,\n ),\n );\n }\n } else {\n if (slot.kem_ct === undefined) {\n errors.push(\n issue(\n 'ENC_SLOT_INVALID_SHAPE',\n [...slotPath, 'kem_ct'],\n `slot for kem='${kem}' is missing required 'kem_ct'`,\n ),\n );\n } else {\n const reassembled = bytesChunkArrayConcat(slot.kem_ct).length;\n if (reassembled !== descriptor.fieldLength) {\n errors.push(\n issue(\n KEM_FIELD_LENGTH_CODE.kem_ct,\n [...slotPath, 'kem_ct'],\n `slot.kem_ct reassembles to ${reassembled} bytes != ${descriptor.fieldLength} for ${kem}`,\n ),\n );\n }\n }\n }\n\n // `wrap` is 48 bytes for every KEM.\n if (slot.wrap === undefined) {\n errors.push(\n issue(\n 'ENC_SLOT_INVALID_SHAPE',\n [...slotPath, 'wrap'],\n `slot for kem='${kem}' is missing required 'wrap'`,\n ),\n );\n } else if (slot.wrap.length !== descriptor.wrapLength) {\n errors.push(\n issue(\n 'WRAP_LENGTH_MISMATCH',\n [...slotPath, 'wrap'],\n `slot.wrap length ${slot.wrap.length} != ${descriptor.wrapLength}`,\n ),\n );\n }\n}\n\n// Extract the per-slot RAW key sets from a decoded `enc` value, BEFORE the\n// permissive schema strips unknown slot keys. cbor2 surfaces a CBOR map either\n// as a `Map` (int/heterogeneous keys) or a plain object (text keys); slot maps\n// are text-keyed, so this reads string keys from whichever form. A slot that\n// is not a map at all yields an empty set — the slot's own type errors are\n// already emitted by the schema parse, so the shape gate simply finds no keys.\nfunction rawSlotKeySets(rawEnc: unknown): ReadonlyArray<ReadonlySet<string>> {\n const slots = mapLikeGet(rawEnc, 'slots');\n if (!Array.isArray(slots)) return [];\n return slots.map((slot) => {\n const keys = new Set<string>();\n if (slot instanceof Map) {\n for (const k of slot.keys()) if (typeof k === 'string') keys.add(k);\n } else if (typeof slot === 'object' && slot !== null) {\n for (const k of Object.keys(slot as Record<string, unknown>)) keys.add(k);\n }\n return keys;\n });\n}\n\nfunction mapLikeGet(value: unknown, key: string): unknown {\n if (value instanceof Map) return value.get(key);\n if (typeof value === 'object' && value !== null) {\n return (value as Record<string, unknown>)[key];\n }\n return undefined;\n}\n\n// 4i — `merkle[i]` walk.\nfunction checkMerkleCommit(commit: MerkleCommit, idx: number, errors: ValidationIssue[]): void {\n const basePath: ReadonlyArray<string | number> = ['merkle', idx];\n if (!(commit.alg in MERKLE_COMMIT_ALG_LENGTHS)) {\n errors.push(\n issue(\n 'UNSUPPORTED_MERKLE_COMMIT_ALG',\n [...basePath, 'alg'],\n `unknown merkle commitment alg: ${commit.alg}`,\n ),\n );\n return;\n }\n const expected = MERKLE_COMMIT_ALG_LENGTHS[commit.alg]!;\n if (commit.root.length !== expected) {\n errors.push(\n issue(\n 'HASH_DIGEST_LENGTH_MISMATCH',\n [...basePath, 'root'],\n `merkle entry root length ${commit.root.length} != ${expected} for ${commit.alg}`,\n ),\n );\n }\n if (commit.uris) {\n checkItemUris(commit.uris, [...basePath, 'uris'], errors);\n }\n}\n\n// 4f + 4g — record-level signature entries.\nfunction checkSigEntry(\n entry: SigEntry,\n idx: number,\n errors: ValidationIssue[],\n info: ValidationIssue[],\n): void {\n // Path-2 `cose_key` private-material guard runs FIRST.\n if (entry.cose_key !== undefined) {\n const keyIssue = inspectCoseKey(entry.cose_key, idx);\n if (keyIssue !== null) {\n errors.push(keyIssue);\n return;\n }\n }\n\n // 4g — COSE_Sign1 structural decode.\n const merged = bytesChunkArrayConcat(entry.cose_sign1);\n let cose: ReturnType<typeof decodeCoseSign1>;\n try {\n cose = decodeCoseSign1(merged);\n } catch (cause) {\n errors.push(\n issue(\n 'MALFORMED_SIG_COSE_SIGN1',\n ['sigs', idx],\n cause instanceof CoseVerifyError || cause instanceof Error ? cause.message : String(cause),\n ),\n );\n return;\n }\n\n // Detached-only payload — the COSE_Sign1 payload MUST be null.\n if (cose.payload !== null) {\n errors.push(\n issue(\n 'MALFORMED_SIG_COSE_SIGN1',\n ['sigs', idx],\n 'COSE_Sign1 payload must be null (detached); attached form forbidden',\n ),\n );\n return;\n }\n\n // Signature-algorithm registry check (info-severity — an unrecognised alg\n // does not fail the record).\n const alg = cose.protectedHeader.get(1);\n if (typeof alg !== 'number' || !KNOWN_SIG_ALG_IDS.has(alg)) {\n info.push(\n issue(\n 'SIGNATURE_UNSUPPORTED',\n ['sigs', idx],\n `COSE_Sign1 protected alg ${String(alg)} not in {-8, -19}`,\n ),\n );\n }\n\n // Path-1 (32-byte protected-header `kid`) and path-2 (`cose_key` sidecar)\n // are mutually exclusive — a sig entry must not carry both.\n const protectedKid = cose.protectedHeader.get(4);\n if (\n protectedKid instanceof Uint8Array &&\n protectedKid.length === 32 &&\n entry.cose_key !== undefined\n ) {\n errors.push(\n issue(\n 'SIG_ENTRY_KID_COSE_KEY_CONFLICT',\n ['sigs', idx],\n 'sigs[i] carries both a 32-byte protected `kid` (path 1) and an inline `cose_key` (path 2); paths are mutually exclusive',\n ),\n );\n }\n}\n\n// =============================================================================\n// COSE_Key inspector (path-2 `sigs[i].cose_key` blob)\n// =============================================================================\n//\n// Two structural checks:\n// 5a — Private-material guard (FIRST). COSE_Key label `-4` (the private\n// scalar `d` for OKP / EC2 per RFC 9052 §7.1) → `SIG_PRIVATE_KEY_LEAKED`.\n// This check is load-bearing producer-side preflight: publishing a\n// private key on the permanent ledger is catastrophic and irreversible.\n// 5b — Positive-shape guard. The decoded `cbor<COSE_Key>` map MUST carry\n// `kty=1` (OKP), `crv=6` (Ed25519), and a 32-byte `-2` (x). Any\n// failure → `MALFORMED_SIG_COSE_SIGN1`.\n\nfunction inspectCoseKey(keyChunks: ReadonlyArray<Uint8Array>, i: number): ValidationIssue | null {\n let decoded: unknown;\n try {\n decoded = decodeCanonicalCbor(bytesChunkArrayConcat(keyChunks));\n } catch (cause) {\n return issue(\n 'MALFORMED_SIG_COSE_SIGN1',\n ['sigs', i, 'cose_key'],\n `sigs[${i}].cose_key failed to decode as cbor<COSE_Key>: ${cause instanceof Error ? cause.message : String(cause)}`,\n );\n }\n\n // cbor2 surfaces int-keyed COSE_Key maps as `Map`; string-keyed maps as\n // plain JS objects (a malformed COSE_Key would carry string keys).\n const getLabel = (label: number): unknown => {\n if (decoded instanceof Map) return decoded.get(label);\n if (typeof decoded === 'object' && decoded !== null) {\n return (decoded as Record<string, unknown>)[String(label)];\n }\n return undefined;\n };\n const hasLabel = (label: number): boolean => {\n if (decoded instanceof Map) return decoded.has(label);\n if (typeof decoded === 'object' && decoded !== null) {\n return Object.prototype.hasOwnProperty.call(decoded, String(label));\n }\n return false;\n };\n\n // 5a — Private-material guard.\n if (hasLabel(-4)) {\n return issue(\n 'SIG_PRIVATE_KEY_LEAKED',\n ['sigs', i, 'cose_key'],\n 'cose_key carries COSE_Key private-key material (label -4, the OKP/EC2 private scalar d); publishing a private key on the permanent ledger is forbidden',\n );\n }\n\n // 5b — Positive-shape guard.\n const kty = getLabel(1);\n if (kty !== 1) {\n return issue(\n 'MALFORMED_SIG_COSE_SIGN1',\n ['sigs', i, 'cose_key'],\n `sigs[${i}].cose_key COSE_Key kty (label 1) must be 1 (OKP); got ${String(kty)}`,\n );\n }\n const crv = getLabel(-1);\n if (crv !== 6) {\n return issue(\n 'MALFORMED_SIG_COSE_SIGN1',\n ['sigs', i, 'cose_key'],\n `sigs[${i}].cose_key COSE_Key crv (label -1) must be 6 (Ed25519); got ${String(crv)}`,\n );\n }\n if (!hasLabel(-2)) {\n return issue(\n 'MALFORMED_SIG_COSE_SIGN1',\n ['sigs', i, 'cose_key'],\n `sigs[${i}].cose_key COSE_Key missing label -2 (Ed25519 public-key bytes)`,\n );\n }\n const x = getLabel(-2);\n if (!(x instanceof Uint8Array) || x.length !== 32) {\n const got = x instanceof Uint8Array ? `${x.length}-byte bstr` : typeof x;\n return issue(\n 'MALFORMED_SIG_COSE_SIGN1',\n ['sigs', i, 'cose_key'],\n `sigs[${i}].cose_key COSE_Key label -2 must be a 32-byte byte string (Ed25519 public key); got ${got}`,\n );\n }\n return null;\n}\n\n// =============================================================================\n// CIP-309 CID profile\n// =============================================================================\n//\n// Accept CIDv0 (`Qm` prefix, 46-char base58btc, sha2-256 multihash) and\n// CIDv1 (multibase prefix + version 0x01 + codec + multihash) per the\n// closed profile:\n// - Multibase: b, B, f, F, z\n// - Multicodec: 0x55 (raw), 0x70 (dag-pb), 0x71 (dag-cbor)\n// - Multihash: 0x12 (sha2-256, 32 B), 0xb220 (blake2b-256, 32 B)\n//\n// Returns true iff the CID conforms to the CIP-309 profile.\n\nconst ACCEPTED_CIDV1_MULTIBASE: ReadonlySet<string> = new Set(['b', 'B', 'f', 'F', 'z']);\n\nconst ACCEPTED_MULTICODECS: ReadonlySet<number> = new Set([0x55, 0x70, 0x71]);\n\n// Multihash table: code → digest length (bytes).\n// `0x12` = sha2-256; `0xb220` = blake2b-256.\nconst ACCEPTED_MULTIHASHES: ReadonlyMap<number, number> = new Map([\n [0x12, 32],\n [0xb220, 32],\n]);\n\nexport function validateCidProfile(cid: string): boolean {\n if (cid.length === 0) return false;\n // CIDv0: a base58btc-encoded sha2-256 multihash. Decode the WHOLE string and\n // verify the multihash prefix (0x12 = sha2-256, 0x20 = 32-byte digest length)\n // and total length (34 bytes = 2-byte prefix + 32-byte digest). A `Qm`\n // prefix alone is not sufficient — a malformed body must be rejected.\n if (cid.startsWith('Qm')) {\n let decoded: Uint8Array;\n try {\n decoded = decodeBase58btc(cid);\n } catch {\n return false;\n }\n return decoded.length === 34 && decoded[0] === 0x12 && decoded[1] === 0x20;\n }\n // CIDv1: multibase + binary CID body.\n const mbPrefix = cid[0]!;\n if (!ACCEPTED_CIDV1_MULTIBASE.has(mbPrefix)) return false;\n let bytes: Uint8Array;\n try {\n bytes = decodeMultibase(mbPrefix, cid.slice(1));\n } catch {\n return false;\n }\n if (bytes.length < 4) return false;\n // CIDv1 layout: <version varint> <multicodec varint> <multihash>\n const versionParse = readVarint(bytes, 0);\n if (versionParse === null || versionParse.value !== 1) return false;\n const codecParse = readVarint(bytes, versionParse.next);\n if (codecParse === null) return false;\n if (!ACCEPTED_MULTICODECS.has(codecParse.value)) return false;\n const mhParse = readVarint(bytes, codecParse.next);\n if (mhParse === null) return false;\n const lenParse = readVarint(bytes, mhParse.next);\n if (lenParse === null) return false;\n const digestLen = lenParse.value;\n const expectedLen = ACCEPTED_MULTIHASHES.get(mhParse.value);\n if (expectedLen === undefined || digestLen !== expectedLen) return false;\n if (lenParse.next + digestLen !== bytes.length) return false;\n return true;\n}\n\nfunction readVarint(bytes: Uint8Array, start: number): { value: number; next: number } | null {\n let value = 0;\n let shift = 0;\n let i = start;\n while (i < bytes.length) {\n const b = bytes[i]!;\n value |= (b & 0x7f) << shift;\n i++;\n if ((b & 0x80) === 0) return { value, next: i };\n shift += 7;\n if (shift > 28) return null; // overflow guard; CIP-309 profile uses ≤ 16-bit codes\n }\n return null;\n}\n\n// Multibase decoders for the closed set the CID profile admits.\nfunction decodeMultibase(prefix: string, body: string): Uint8Array {\n switch (prefix) {\n case 'b':\n return decodeBase32(body.toLowerCase(), 'rfc4648-lower');\n case 'B':\n return decodeBase32(body.toUpperCase(), 'rfc4648-upper');\n case 'f':\n return decodeBase16(body.toLowerCase());\n case 'F':\n return decodeBase16(body.toUpperCase());\n case 'z':\n return decodeBase58btc(body);\n default:\n throw new Error(`unsupported multibase prefix ${prefix}`);\n }\n}\n\nconst BASE16_LOWER = '0123456789abcdef';\nconst BASE16_UPPER = '0123456789ABCDEF';\n\nfunction decodeBase16(s: string): Uint8Array {\n if (s.length % 2 !== 0) throw new Error('base16: odd-length');\n const out = new Uint8Array(s.length / 2);\n const alphabet = s === s.toLowerCase() ? BASE16_LOWER : BASE16_UPPER;\n for (let i = 0; i < out.length; i++) {\n const hi = alphabet.indexOf(s[i * 2]!);\n const lo = alphabet.indexOf(s[i * 2 + 1]!);\n if (hi < 0 || lo < 0) throw new Error(`base16: non-hex char at ${i * 2}`);\n out[i] = (hi << 4) | lo;\n }\n return out;\n}\n\nconst BASE32_RFC4648_LOWER = 'abcdefghijklmnopqrstuvwxyz234567';\nconst BASE32_RFC4648_UPPER = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';\n\nfunction decodeBase32(s: string, variant: 'rfc4648-lower' | 'rfc4648-upper'): Uint8Array {\n const alphabet = variant === 'rfc4648-lower' ? BASE32_RFC4648_LOWER : BASE32_RFC4648_UPPER;\n // Multibase strips padding per spec; we accept either form for robustness.\n const trimmed = s.replace(/=+$/, '');\n const out: number[] = [];\n let buf = 0;\n let bits = 0;\n for (const ch of trimmed) {\n const idx = alphabet.indexOf(ch);\n if (idx < 0) throw new Error(`base32: invalid char '${ch}'`);\n buf = (buf << 5) | idx;\n bits += 5;\n if (bits >= 8) {\n bits -= 8;\n out.push((buf >> bits) & 0xff);\n }\n }\n return Uint8Array.from(out);\n}\n\nconst BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n\nfunction decodeBase58btc(s: string): Uint8Array {\n if (s.length === 0) return new Uint8Array(0);\n let zeros = 0;\n while (zeros < s.length && s[zeros] === '1') zeros++;\n const size = Math.floor(((s.length - zeros) * 733) / 1000) + 1;\n const b256 = new Uint8Array(size);\n let length = 0;\n for (let i = zeros; i < s.length; i++) {\n const ch = s[i]!;\n const carryIdx = BASE58_ALPHABET.indexOf(ch);\n if (carryIdx < 0) throw new Error(`base58: invalid char '${ch}'`);\n let carry = carryIdx;\n let k = 0;\n for (let j = size - 1; (carry !== 0 || k < length) && j >= 0; j--, k++) {\n carry += 58 * b256[j]!;\n b256[j] = carry % 256;\n carry = Math.floor(carry / 256);\n }\n length = k;\n }\n let it = size - length;\n while (it < size && b256[it] === 0) it++;\n const out = new Uint8Array(zeros + (size - it));\n let j = zeros;\n while (it < size) {\n out[j++] = b256[it++]!;\n }\n return out;\n}\n\n// =============================================================================\n// `crit[]` shape rule helper\n// =============================================================================\n\nfunction checkCritShape(\n record: PoeRecord,\n decodedTopKeys: ReadonlySet<string>,\n errors: ValidationIssue[],\n): Set<number> {\n const invalid = new Set<number>();\n if (!Array.isArray(record.crit)) return invalid;\n // `crit` has `1*` cardinality: when present it MUST carry at least one\n // entry. An empty array is a malformed shape — reject it here in the\n // domain pass (rather than via a schema `.min(1)`) so the emitted message\n // string is identical across the TS/PY/RS validators.\n if (record.crit.length === 0) {\n errors.push(\n issue('SCHEMA_TYPE_MISMATCH', ['crit'], 'crit[] must carry at least one entry when present'),\n );\n return invalid;\n }\n const seen = new Set<string>();\n for (let i = 0; i < record.crit.length; i++) {\n const critName = record.crit[i]!;\n let reason: string | null = null;\n if (TOP_LEVEL_BASE_KEYS.has(critName)) {\n reason = `'${critName}' is a base key and MUST NOT appear in crit[]`;\n } else if (!isExtensionKey(critName)) {\n reason = `'${critName}' does not match the extension-key regex (^x-.+ or ^[a-z]+-.+)`;\n } else if (!decodedTopKeys.has(critName)) {\n reason = `'${critName}' is named in crit but absent from the record map`;\n } else if (seen.has(critName)) {\n reason = `'${critName}' appears more than once in crit[]`;\n }\n seen.add(critName);\n if (reason !== null) {\n invalid.add(i);\n errors.push(issue('CRIT_SHAPE_INVALID', ['crit', i], reason));\n }\n }\n return invalid;\n}\n\nfunction topLevelKeysOf(decoded: unknown): Set<string> {\n if (decoded === null || typeof decoded !== 'object') return new Set();\n if (decoded instanceof Map) {\n const out = new Set<string>();\n for (const k of decoded.keys()) {\n if (typeof k === 'string') out.add(k);\n }\n return out;\n }\n return new Set(Object.keys(decoded as Record<string, unknown>));\n}\n\n// =============================================================================\n// Path / issue helpers\n// =============================================================================\n\nfunction issue(\n code: ErrorCode,\n path: ReadonlyArray<string | number>,\n message: string,\n): ValidationIssue {\n return { code, path, message, severity: SEVERITY[code] };\n}\n\nfunction compareIssuePath(a: ValidationIssue, b: ValidationIssue): number {\n return a.path.join('.').localeCompare(b.path.join('.'));\n}\n\nfunction valueAtPath(root: unknown, path: ReadonlyArray<string | number>): unknown {\n let cur: unknown = root;\n for (const seg of path) {\n if (cur === null || cur === undefined) return undefined;\n if (cur instanceof Map) {\n cur = cur.get(seg);\n continue;\n }\n if (typeof cur !== 'object') return undefined;\n cur = (cur as Record<string | number, unknown>)[seg];\n }\n return cur;\n}\n"]}