{
  "version": 3,
  "sources": ["../src/index.ts"],
  "sourcesContent": ["import { hex } from 'iso-base/rfc4648'\nimport { equals } from 'iso-base/utils'\nimport { varint } from 'iso-base/varint'\nimport type {\n    VarsigOptions,\n    VarsigEncoding,\n    VarsigAlgorithm,\n    DecodeOutput\n} from './types.js'\nimport { IOBuffer } from './iobuffer.js'\n\nexport const VARSIG = 0x34\nexport const VERSION = 0x01\nexport const EIP191_ENCODING = 0xe191\n\nexport const CODE_ENCODING: Record<number, VarsigEncoding> = {\n    0x5f: 'RAW',\n    0x71: 'DAG-CBOR',\n} as const\n\nexport const SIG_PREFIX: Record<number, string> = {\n    0x12_05: 'RSA',\n    0xed: 'EdDSA',\n    0xec: 'ECDSA',\n} as const\n\n/**\n * Varint encoding for signature algorithms and encodings.\n */\nconst VARINT: Record<'VARSIG' | 'VERSION' | VarsigEncoding | VarsigAlgorithm, number[]> = {\n    VARSIG: [52],\n    VERSION: [1],\n\n    RAW: [95],\n    'DAG-CBOR': [113],\n\n    /** Presets */\n    // rsa(2b)+SHA2-256(1b)+256(1b)\n    RS256: [133, 36, 18, 128, 2],\n    // eddsa(2b)+edwards25519(2b)+SHA2-512(1b)\n    Ed25519: [237, 1, 237, 1, 19],\n    // ECDSA(2b) + p256(2b)   + SHA2-256(1b)\n    ES256: [236, 1, 128, 36, 18],\n    // ECDSA(2b) + p384(2b)   + SHA2-384(1b)\n    ES384: [236, 1, 129, 36, 32],\n    // ECDSA(2b) + p512(2b)   + SHA2-512(1b)\n    ES512: [236, 1, 130, 36, 19],\n    // ECDSA(2b) + secp256k1(2b)  + SHA2-256(1b)\n    ES256K: [236, 1, 231, 1, 18],\n    // ECDSA(2b) + secp256k1(2b) + keccak-256(1b) + eip191-encoding(3b)\n    EIP191: [236, 1, 231, 1, 27, 145, 195, 3],\n}\n\nexport function encode (options:VarsigOptions):Uint8Array {\n    const enc = VARINT[options.enc]\n    if (!enc) {\n        throw new TypeError(`Unsupported encoding ${options.enc}`)\n    }\n\n    const alg = VARINT[options.alg]\n    if (!alg) {\n        throw new TypeError(`Unsupported algorithm ${options.alg}`)\n    }\n\n    return Uint8Array.from([...VARINT.VARSIG, ...VARINT.VERSION, ...alg, ...enc])\n}\n\nfunction getEncoding (bytes:Uint8Array):VarsigEncoding {\n    const [code] = varint.decode(bytes)\n    const enc = CODE_ENCODING[code]\n    if (!enc) {\n        throw new TypeError(`Unsupported encoding 0x${code.toString(16)}`)\n    }\n    return enc\n}\n\nfunction getPreset (bytes:Uint8Array, presets:VarsigAlgorithm[]):VarsigAlgorithm {\n    for (const preset of presets) {\n        if (equals(bytes, Uint8Array.from(VARINT[preset]))) {\n            return preset\n        }\n    }\n    throw new TypeError(`Unsupported preset ${bytes}`)\n}\n\n/**\n * Decode varsig header\n */\nexport function decode (buf:Uint8Array):DecodeOutput {\n    const bytes = new IOBuffer(buf)\n    const varsig = bytes.readBytes(1)\n    if (varsig[0] !== VARINT.VARSIG[0]) {\n        throw new TypeError(\n      `Invalid varsig sigil expected 0x${VARSIG.toString(16)} got 0x${hex.encode(varsig)}`\n        )\n    }\n\n    const version = bytes.readBytes(1)\n    if (version[0] !== VARINT.VERSION[0]) {\n        throw new TypeError(\n      `Invalid version sigil expected 0x${VERSION.toString(16)} got 0x${hex.encode(version)}`\n        )\n    }\n    const [code] = varint.decode(buf, 2)\n\n    switch (SIG_PREFIX[code]) {\n        case 'RSA': {\n            return {\n                alg: getPreset(bytes.readBytes(5), ['RS256']),\n                enc: getEncoding(bytes.readBytes(1)),\n            }\n        }\n        case 'EdDSA': {\n            return {\n                alg: getPreset(bytes.readBytes(5), ['Ed25519']),\n                enc: getEncoding(bytes.readBytes(1)),\n            }\n        }\n        case 'ECDSA': {\n            const isEIP191 = varint.decode(buf, 2 + 5)[0] === EIP191_ENCODING\n            if (isEIP191) {\n                return {\n                    alg: getPreset(bytes.readBytes(8), ['EIP191']),\n                    enc: getEncoding(bytes.readBytes(1)),\n                }\n            }\n\n            return {\n                alg: getPreset(bytes.readBytes(5), [\n                    'ES256',\n                    'ES256K',\n                    'ES384',\n                    'ES512',\n                ]),\n                enc: getEncoding(bytes.readBytes(1)),\n            }\n        }\n        default:\n            throw new TypeError(`Unsupported algorithm ${code}`)\n    }\n}\n"],
  "mappings": "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",
  "names": ["index_exports", "__export", "CODE_ENCODING", "EIP191_ENCODING", "SIG_PREFIX", "VARSIG", "VERSION", "decode", "encode", "__toCommonJS", "import_rfc4648", "import_utils", "import_varint", "import_iobuffer", "VARSIG", "VERSION", "EIP191_ENCODING", "CODE_ENCODING", "SIG_PREFIX", "VARINT", "encode", "options", "enc", "alg", "__name", "getEncoding", "bytes", "code", "getPreset", "presets", "preset", "decode", "buf", "varsig", "version"]
}
