renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
41 lines (40 loc) • 1.41 kB
JavaScript
import { openpgp } from "../../expose.js";
import { regEx } from "../../util/regex.js";
import { logger } from "../../logger/index.js";
//#region lib/config/decrypt/openpgp.ts
let pgp = void 0;
async function tryDecryptOpenPgp(privateKey, encryptedStr) {
if (pgp === void 0) try {
pgp = await openpgp();
} catch (err) {
logger.warn({ err }, "Could load openpgp");
pgp = null;
}
if (pgp === null) {
logger.once.warn("Cannot load openpgp, skipping decryption");
return null;
}
try {
const pk = await pgp.readPrivateKey({ armoredKey: privateKey.replace(regEx(/\n[ \t]+/g), "\n") });
const startBlock = "-----BEGIN PGP MESSAGE-----\n\n";
const endBlock = "\n-----END PGP MESSAGE-----";
let armoredMessage = encryptedStr.trim();
// v8 ignore else -- TODO: add test #40625
if (!armoredMessage.startsWith(startBlock)) armoredMessage = `${startBlock}${armoredMessage}`;
// v8 ignore else -- TODO: add test #40625
if (!armoredMessage.endsWith(endBlock)) armoredMessage = `${armoredMessage}${endBlock}`;
const message = await pgp.readMessage({ armoredMessage });
const { data } = await pgp.decrypt({
message,
decryptionKeys: pk
});
logger.debug("Decrypted config using openpgp");
return data;
} catch (err) {
logger.debug({ err }, "Could not decrypt using openpgp");
return null;
}
}
//#endregion
export { tryDecryptOpenPgp };
//# sourceMappingURL=openpgp.js.map