{"version":3,"file":"iso97971.cjs","sources":["../src/iso97971.ts"],"sourcesContent":["import {\n  assertBlockSize as assertCoreBlockSize,\n  assertPaddedInput as assertCorePaddedInput,\n  type PaddingComponent,\n  type PresetComponent,\n} from '@jscrypto/core';\n\nexport const iso97971: PaddingComponent<'Iso97971'> = {\n  kind: 'padding',\n  name: 'Iso97971',\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[input.length] = 0x80;\n    return output;\n  },\n\n  unpad(input, blockSize) {\n    assertPaddedInput(input, blockSize);\n\n    let index = input.length - 1;\n    while (index >= 0 && input[index] === 0) {\n      index--;\n    }\n\n    if (index < 0 || input[index] !== 0x80) {\n      throw new Error('Invalid ISO/IEC 9797-1 padding.');\n    }\n\n    return input.slice(0, index);\n  },\n};\n\nexport const iso97971Preset: PresetComponent<'iso97971'> = {\n  kind: 'preset',\n  name: 'iso97971',\n  components() {\n    return [iso97971];\n  },\n};\n\nfunction assertBlockSize(blockSize: number): void {\n  assertCoreBlockSize(blockSize);\n}\n\nfunction assertPaddedInput(input: Uint8Array, blockSize: number): void {\n  assertCorePaddedInput(input, blockSize, 'ISO/IEC 9797-1');\n}\n\nfunction getPaddingLength(inputLength: number, blockSize: number): number {\n  const remainder = (inputLength + 1) % blockSize;\n  return 1 + (remainder === 0 ? 0 : blockSize - remainder);\n}\n"],"names":["assertCoreBlockSize","assertCorePaddedInput"],"mappings":";;;;;;;;;AAOO,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;AACjB,QAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;AAC3B,QAAA,OAAO,MAAM;IACf,CAAC;IAED,KAAK,CAAC,KAAK,EAAE,SAAS,EAAA;AACpB,QAAA,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC;AAEnC,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QAC5B,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACvC,YAAA,KAAK,EAAE;QACT;QAEA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;AACtC,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;QACpD;QAEA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;IAC9B,CAAC;;AAGI,MAAM,cAAc,GAAgC;AACzD,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,UAAU;IAChB,UAAU,GAAA;QACR,OAAO,CAAC,QAAQ,CAAC;IACnB,CAAC;;AAGH,SAAS,eAAe,CAAC,SAAiB,EAAA;IACxCA,oBAAmB,CAAC,SAAS,CAAC;AAChC;AAEA,SAAS,iBAAiB,CAAC,KAAiB,EAAE,SAAiB,EAAA;AAC7D,IAAAC,sBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,gBAAgB,CAAC;AAC3D;AAEA,SAAS,gBAAgB,CAAC,WAAmB,EAAE,SAAiB,EAAA;IAC9D,MAAM,SAAS,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,SAAS;AAC/C,IAAA,OAAO,CAAC,IAAI,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC;AAC1D;;;;;"}