{"version":3,"file":"ansi-x923.cjs","sources":["../src/ansi-x923.ts"],"sourcesContent":["import {\n  assertBlockSize as assertCoreBlockSize,\n  assertPaddedInput as assertCorePaddedInput,\n  getBlockPaddingLength,\n  type PaddingComponent,\n  type PresetComponent,\n} from '@jscrypto/core';\n\nexport const ansiX923: PaddingComponent<'AnsiX923'> = {\n  kind: 'padding',\n  name: 'AnsiX923',\n\n  pad(input, blockSize) {\n    assertBlockSize(blockSize);\n    const paddingLength = getPaddingLength(input.length, blockSize);\n    const output = new Uint8Array(input.length + paddingLength);\n    output.set(input);\n    output[output.length - 1] = paddingLength;\n    return output;\n  },\n\n  unpad(input, blockSize) {\n    assertPaddedInput(input, blockSize);\n    const paddingLength = input[input.length - 1];\n    if (paddingLength === 0 || paddingLength > blockSize || paddingLength > input.length) {\n      throw new Error('Invalid ANSI X9.23 padding.');\n    }\n\n    for (let i = input.length - paddingLength; i < input.length - 1; i++) {\n      if (input[i] !== 0) {\n        throw new Error('Invalid ANSI X9.23 padding.');\n      }\n    }\n\n    return input.slice(0, input.length - paddingLength);\n  },\n};\n\nexport const ansiX923Preset: PresetComponent<'ansi-x923'> = {\n  kind: 'preset',\n  name: 'ansi-x923',\n  components() {\n    return [ansiX923];\n  },\n};\n\nfunction assertBlockSize(blockSize: number): void {\n  assertCoreBlockSize(blockSize, { max: 255 });\n}\n\nfunction assertPaddedInput(input: Uint8Array, blockSize: number): void {\n  assertCorePaddedInput(input, blockSize, 'ANSI X9.23', { max: 255 });\n}\n\nfunction getPaddingLength(inputLength: number, blockSize: number): number {\n  return getBlockPaddingLength(inputLength, blockSize);\n}\n"],"names":["assertCoreBlockSize","assertCorePaddedInput","getBlockPaddingLength"],"mappings":";;;;;;;;;AAQO,MAAM,QAAQ,GAAiC;AACpD,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,UAAU;IAEhB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAA;QAClB,eAAe,CAAC,SAAS,CAAC;QAC1B,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;AAC3D,QAAA,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACjB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,aAAa;AACzC,QAAA,OAAO,MAAM;IACf,CAAC;IAED,KAAK,CAAC,KAAK,EAAE,SAAS,EAAA;AACpB,QAAA,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC;QACnC,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,QAAA,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,GAAG,SAAS,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE;AACpF,YAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;QAChD;QAEA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpE,YAAA,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAClB,gBAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;YAChD;QACF;AAEA,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;IACrD,CAAC;;AAGI,MAAM,cAAc,GAAiC;AAC1D,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,WAAW;IACjB,UAAU,GAAA;QACR,OAAO,CAAC,QAAQ,CAAC;IACnB,CAAC;;AAGH,SAAS,eAAe,CAAC,SAAiB,EAAA;IACxCA,oBAAmB,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC9C;AAEA,SAAS,iBAAiB,CAAC,KAAiB,EAAE,SAAiB,EAAA;AAC7D,IAAAC,sBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrE;AAEA,SAAS,gBAAgB,CAAC,WAAmB,EAAE,SAAiB,EAAA;AAC9D,IAAA,OAAOC,0BAAqB,CAAC,WAAW,EAAE,SAAS,CAAC;AACtD;;;;;"}