{"version":3,"sources":["../../../src/crypto/envelope/openpgp.ts"],"sourcesContent":["/**\n * Password-based file encryption using OpenPGP, the locked DPv1 envelope.\n *\n * @remarks\n * Ported from `personal-server-ts`\n * (`packages/core/src/storage/encryption/{encrypt,decrypt}.ts`).\n * The binary format must remain byte-compatible with PS — a vana-sdk encrypt +\n * a personal-server-ts decrypt (and vice versa) must round-trip cleanly.\n *\n * @category Cryptography\n */\n\nimport * as openpgp from \"openpgp\";\n\n/**\n * Encrypt plaintext using OpenPGP password-based encryption.\n *\n * @param plaintext - Bytes to encrypt (e.g. `JSON.stringify` of an envelope).\n * @param password - Hex-encoded scope key (typically from `deriveScopeKey`).\n * @returns OpenPGP-encrypted binary data.\n */\nexport async function encryptWithPassword(\n  plaintext: Uint8Array,\n  password: string,\n): Promise<Uint8Array> {\n  const message = await openpgp.createMessage({ binary: plaintext });\n  const encrypted = await openpgp.encrypt({\n    message,\n    passwords: [password],\n    format: \"binary\",\n  });\n  return encrypted as Uint8Array;\n}\n\n/**\n * Decrypt an OpenPGP password-encrypted binary.\n *\n * @param encrypted - OpenPGP-encrypted binary data.\n * @param password - Hex-encoded scope key.\n * @returns Decrypted plaintext bytes.\n * @throws If the password is wrong or the data is corrupted.\n */\nexport async function decryptWithPassword(\n  encrypted: Uint8Array,\n  password: string,\n): Promise<Uint8Array> {\n  const message = await openpgp.readMessage({ binaryMessage: encrypted });\n  const { data } = await openpgp.decrypt({\n    message,\n    passwords: [password],\n    format: \"binary\",\n  });\n  return data as Uint8Array;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,cAAyB;AASzB,eAAsB,oBACpB,WACA,UACqB;AACrB,QAAM,UAAU,MAAM,QAAQ,cAAc,EAAE,QAAQ,UAAU,CAAC;AACjE,QAAM,YAAY,MAAM,QAAQ,QAAQ;AAAA,IACtC;AAAA,IACA,WAAW,CAAC,QAAQ;AAAA,IACpB,QAAQ;AAAA,EACV,CAAC;AACD,SAAO;AACT;AAUA,eAAsB,oBACpB,WACA,UACqB;AACrB,QAAM,UAAU,MAAM,QAAQ,YAAY,EAAE,eAAe,UAAU,CAAC;AACtE,QAAM,EAAE,KAAK,IAAI,MAAM,QAAQ,QAAQ;AAAA,IACrC;AAAA,IACA,WAAW,CAAC,QAAQ;AAAA,IACpB,QAAQ;AAAA,EACV,CAAC;AACD,SAAO;AACT;","names":[]}