/** * Convert an ASN.1 DER-encoded P-256 ECDSA signature into the raw `r‖s` * (IEEE P1363) fixed-width form the Web Crypto API requires for * `crypto.subtle.verify`: 64 bytes, each component big-endian and left-padded * with zeros. * * The passkey path feeds this **attacker-controlled** input, so the parser is * strict and bounds-checked end to end: it reads no byte without first proving * it is in range, validates every ASN.1 tag and length, rejects long-form * lengths (a conformant P-256 signature is always short-form), forbids trailing * bytes, and refuses any component wider than the 32-byte field. On any * structural problem it throws — callers translate that into a *failed* (not * crashed) verification rather than a 500. * * Leading-zero handling is deliberately lenient: it strips DER sign/padding * bytes to recover each component's magnitude, so a non-minimal encoding still * maps to the correct (r, s). For well-formed *minimal* DER (e.g. the output of * `crypto.subtle.sign`) the result is byte-identical to a naive parser. * * @param der DER bytes: `0x30 len 0x02 rLen r 0x02 sLen s`. * @returns `r‖s`, exactly 64 bytes. * @throws {Error} when `der` is not a structurally valid two-INTEGER DER * sequence, or a component exceeds the 32-byte field width. */ export declare function derToRawEcdsaSignature(der: Uint8Array): Uint8Array;