{"version":3,"file":"index.mjs","sources":["../src/openssl.ts","../src/preset.ts"],"sourcesContent":["import type { FormatComponent, PresetComponent } from '@jscrypto/core';\nimport { concatBytes, equalBytes } from '@jscrypto/core';\n\nexport const OPENSSL_SALTED_MAGIC = new Uint8Array([\n  0x53, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x5f, 0x5f,\n]);\n\nexport const opensslFormat: FormatComponent<'OpenSSL'> = {\n  kind: 'format',\n  name: 'OpenSSL',\n  mediaType: 'application/octet-stream',\n  stringify({ ciphertext, salt }) {\n    if (!salt) {\n      return ciphertext.slice();\n    }\n    assertSalt(salt);\n    return concatBytes(OPENSSL_SALTED_MAGIC, salt, ciphertext);\n  },\n  parse(input) {\n    if (!hasSaltHeader(input)) {\n      return { ciphertext: input.slice() };\n    }\n\n    return {\n      salt: input.slice(OPENSSL_SALTED_MAGIC.length, OPENSSL_SALTED_MAGIC.length + 8),\n      ciphertext: input.slice(OPENSSL_SALTED_MAGIC.length + 8),\n    };\n  },\n};\n\nexport const opensslPreset: PresetComponent<'openssl'> = {\n  kind: 'preset',\n  name: 'openssl',\n  components() {\n    return [opensslFormat];\n  },\n};\n\nfunction hasSaltHeader(input: Uint8Array): boolean {\n  return input.length >= 16 && equalBytes(input.subarray(0, OPENSSL_SALTED_MAGIC.length), OPENSSL_SALTED_MAGIC);\n}\n\nfunction assertSalt(salt: Uint8Array): void {\n  if (salt.length !== 8) {\n    throw new Error('OpenSSL salt must be 64 bits.');\n  }\n}\n","import type { PresetComponent } from '@jscrypto/core';\nimport { opensslPreset } from './openssl.js';\n\nexport function formatsPreset(): PresetComponent<'formats'> {\n  return {\n    kind: 'preset',\n    name: 'formats',\n    components() {\n      return [opensslPreset];\n    },\n  };\n}\n"],"names":[],"mappings":";;;;;;;AAGO,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC;AACjD,IAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AAC/C,CAAA;AAEM,MAAM,aAAa,GAA+B;AACvD,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,SAAS,EAAE,0BAA0B;AACrC,IAAA,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAA;QAC5B,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,UAAU,CAAC,KAAK,EAAE;QAC3B;QACA,UAAU,CAAC,IAAI,CAAC;QAChB,OAAO,WAAW,CAAC,oBAAoB,EAAE,IAAI,EAAE,UAAU,CAAC;IAC5D,CAAC;AACD,IAAA,KAAK,CAAC,KAAK,EAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE;QACtC;QAEA,OAAO;AACL,YAAA,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;YAC/E,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;SACzD;IACH,CAAC;;AAGI,MAAM,aAAa,GAA+B;AACvD,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,SAAS;IACf,UAAU,GAAA;QACR,OAAO,CAAC,aAAa,CAAC;IACxB,CAAC;;AAGH,SAAS,aAAa,CAAC,KAAiB,EAAA;IACtC,OAAO,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,oBAAoB,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC;AAC/G;AAEA,SAAS,UAAU,CAAC,IAAgB,EAAA;AAClC,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,QAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;IAClD;AACF;;SC3CgB,aAAa,GAAA;IAC3B,OAAO;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,SAAS;QACf,UAAU,GAAA;YACR,OAAO,CAAC,aAAa,CAAC;QACxB,CAAC;KACF;AACH;;;;"}