CyberChef/test/tests/operations/PGP.js
2017-03-13 17:31:00 -04:00

491 lines
21 KiB
JavaScript

/**
* PGP tests.
*
* @author tlwr [toby@toby.codes]
*
* @copyright Crown Copyright 2017
* @license Apache-2.0
*/
var CYBERCHEF_GENERATED_KEY_PAIRS = [
{
name: "CyberChef 1",
size: 1024,
pub: [
"-----BEGIN PGP PUBLIC KEY BLOCK-----",
"Version: OpenPGP.js v2.3.6",
"Comment: http://openpgpjs.org",
"",
"xo0EWMQszAEEAMY6F0o6jL6TrVVXDkqJwNVJRR6tQKr+LIt7plEJoaTRVDfL",
"1jetdhPg+YiE7xZI8ygf6fhsrot4ccUN1QdtwedAz6GH0xjFzpL1i4/7/f3U",
"ItJ0p1MO4Amy8Tei/AtXXMTy/YwE77V1AMcv7OYFw9va5S0PD87XoKK6rx7z",
"GFMTABEBAAHNAjw+wrUEEAEIACkFAljELMwGCwkHCAMCCRAar/puuym6vQQV",
"CAIKAxYCAQIZAQIbAwIeAQAA8/QEAKDVde34L3rvFECzUOFPA5w4w4gbwkg+",
"YwPa084WvMTdo/wBEiEhj+7P+/5eN/U96yuHD48+Cmm5AHBaaf+K1b2LbNe7",
"3PP5rV1rMcooUGeIhq7SFw0BdPZTLoCNbkBKFCpvrS/F4SuUQF7g+fVyOyve",
"zVWew+E41ZC3vsDd63Y3zo0EWMQszAEEANYNy0yka1+c3Oe2U1GqoAHXv05p",
"VnlHAZ+28JGs8Thq5ns0K8bxI+Fn9CFpPO7Vofrr40V3vweoJVK2Eiq2gN/X",
"QdxPHckcpYbFKTAZIXt2MAZfb027JxWZid5lyYSCwvY+BK7x5X4jdY5KfbKu",
"7WDivOkq8MhomSiX+QYDV8qrABEBAAHCnwQYAQgAEwUCWMQszAkQGq/6brsp",
"ur0CGwwAAIjWA/9WhpbfM+oA08m5XwXgCkuRfTymIkexzn17dZOngTzaGcbK",
"vpS3QN164XNu229JNKTrsdgn5zeeq3AqhQ63hTMbePajvUYSssHPqKB8qQlp",
"OUY/rcFEUXMirIkKBGByYBmlz56Ai855wJoSOrZJA6yfnGepyV5ChcG/cEmB",
"dH/6bA==",
"=4nW6",
"-----END PGP PUBLIC KEY BLOCK-----",
].join("\n"),
sec: [
"-----BEGIN PGP PRIVATE KEY BLOCK-----",
"Version: OpenPGP.js v2.3.6",
"Comment: http://openpgpjs.org",
"",
"xcEYBFjELMwBBADGOhdKOoy+k61VVw5KicDVSUUerUCq/iyLe6ZRCaGk0VQ3",
"y9Y3rXYT4PmIhO8WSPMoH+n4bK6LeHHFDdUHbcHnQM+hh9MYxc6S9YuP+/39",
"1CLSdKdTDuAJsvE3ovwLV1zE8v2MBO+1dQDHL+zmBcPb2uUtDw/O16Ciuq8e",
"8xhTEwARAQABAAP6A0jnJeW+e1H7J1Tf+cA6n84tBQsd7Td1CYKtCN69/Psz",
"CBGqpRWMxVuPBwIc7COdU+bje6hhZBJE4F0QUKUy91iQRssy4MzOYmZbdZaa",
"eTT81MdYb6QPYdTvPBVxjeLJBL7mKB+hM2Z8SvtJMDBdLlprf/XIdZKxD/NB",
"R+q66OECAPPsaMb+Yv1F30pEJZkATWvUSQS57HzWoBaNGxGkDqcik7+2q3DU",
"fWe0586HfMFQ3ba1ziNy2SWYJDAqMAe0QekCANAKgQJwww75GGK1RwNFZRoJ",
"Sb/Jzx3RVbwy1xqfVbadTuvf2+oSBLy/+eGXglwrok08e2BvYWMmhB+uJSJb",
"M5sCAItUBCJqTszPQPZdIOi7rGomnL2fijBDAUz+kWAWBPcIf8zzexKl7Ebq",
"dxc621BD5xjDjE7x1Z5XX/Rd2Lt+PvOdyM0CPD7CtQQQAQgAKQUCWMQszAYL",
"CQcIAwIJEBqv+m67Kbq9BBUIAgoDFgIBAhkBAhsDAh4BAADz9AQAoNV17fgv",
"eu8UQLNQ4U8DnDjDiBvCSD5jA9rTzha8xN2j/AESISGP7s/7/l439T3rK4cP",
"jz4KabkAcFpp/4rVvYts17vc8/mtXWsxyihQZ4iGrtIXDQF09lMugI1uQEoU",
"Km+tL8XhK5RAXuD59XI7K97NVZ7D4TjVkLe+wN3rdjfHwRgEWMQszAEEANYN",
"y0yka1+c3Oe2U1GqoAHXv05pVnlHAZ+28JGs8Thq5ns0K8bxI+Fn9CFpPO7V",
"ofrr40V3vweoJVK2Eiq2gN/XQdxPHckcpYbFKTAZIXt2MAZfb027JxWZid5l",
"yYSCwvY+BK7x5X4jdY5KfbKu7WDivOkq8MhomSiX+QYDV8qrABEBAAEAA/0e",
"rqd/eunxMJjxlc7nm9+HpBdF9A9zHtx6ukxNdU62WYxkCJxlzdbozm/OAjm7",
"ul+XigxvvrRhMpb2/iYofTSHnj+6yGGghCic6BtstJOU7qepMrX+IKh3TNEp",
"YNU8z0E1fSd9fMOx1hnTZwaTroii9CzM0i4YH3pSjze7Ir7cIQIA8Cg8sBmG",
"IDhe7SBq5xcG2V4iNqiK5gHXbQrcit9/XJFqIeda5Ec7lRjpa6vG5f1xeT1w",
"KdBil2L4prnD6XDAEwIA5Cy51YIjizFyKormqQNGR1fdAl+6T/qReUcw5Cmw",
"cDU7tUujZwZz/utmjOcadq8JR2LG6rNwLzeMgDNCCKAOCQH/RX0h3eLXcpWq",
"jGBH3mJbukSLH/98ybP5LV+4jg0q5iXOOjUIXxFsPElyZZHUBvpoRrKbRG/f",
"PzOpx7akqEOuDJ/Dwp8EGAEIABMFAljELMwJEBqv+m67Kbq9AhsMAACI1gP/",
"VoaW3zPqANPJuV8F4ApLkX08piJHsc59e3WTp4E82hnGyr6Ut0DdeuFzbttv",
"STSk67HYJ+c3nqtwKoUOt4UzG3j2o71GErLBz6igfKkJaTlGP63BRFFzIqyJ",
"CgRgcmAZpc+egIvOecCaEjq2SQOsn5xnqcleQoXBv3BJgXR/+mw=",
"=8R+g",
"-----END PGP PRIVATE KEY BLOCK-----",
].join("\n"),
messages: [
[
"-----BEGIN PGP MESSAGE-----",
"Version: OpenPGP.js v2.3.6",
"Comment: http://openpgpjs.org",
"",
"wYwDmsTgRYVqFPcBA/kBfc7BnEcbKGwac/JOSK6YWzpDERR8NjJT/3R7JDsG",
"ywJB/ouaHy3e5KGDulALV6pUzcPbCC0CCl5tlFVaFYAj6+BdwR/WCb7dhlRE",
"x+vw5VKLlY6adSgtvU9aLF0nL0YlU9Pxf9wrPdo3bvxJij7S4mbGS2iybhQO",
"41ZUtWhOotI9AR/e7f2WHSt8dpl7T9Uq8trAptFWVIZkj+78Gp/8u5o8/mqV",
"9gxmOGsViKhVZ1b554nwd243IrqlzW2szg==",
"=prpZ",
"-----END PGP MESSAGE-----",
].join("\n"),
],
},
];
var PGP_TEST_KEY_PAIRS = [
{
keyID: "a9510d8fd7e352f5",
name: "CyberChef nopw 1024 <toby@toby.codes>",
size: 1024,
pub: [
"-----BEGIN PGP PUBLIC KEY BLOCK-----",
"",
"mI0EWL7mbwEEANVcA5s+pXliwZBZXvfjy69JlPkX8dWRTZLuqZPz5XKGb9E1RKxQ",
"jELZ9bBIv/t0HDoiwh1XJok3SRMPzLPHK9lLXaa/l7716CkRddTvkd3cjFA3yAEL",
"X97+4nPVIajYUPDy6ovCrRru2bXyW2cjHKErlI0GJ37Hbbpj/GXSQL6HABEBAAG0",
"JUN5YmVyQ2hlZiBub3B3IDEwMjQgPHRvYnlAdG9ieS5jb2Rlcz6ItwQTAQgAIQUC",
"WL7mbwIbAwULCQgHAgYVCAkKCwIEFgIDAQIeAQIXgAAKCRCpUQ2P1+NS9ZhxA/49",
"sXqWYoi34HMtHfVejPpPSXrFxY+ZjgM1cMVe5m4cumBeZVVYaEH9/3xDlrhfrlMi",
"xCRGNqfIRwavIbNWyBshrjVnZ1PR/hvp2P3tV0ciV51lJi6ApO46fsmsWZw84cOA",
"ejQ1giBjuLuu4du52+MVbcko2yEJ2tOS2WMPnYO7RbiNBFi+5m8BBAClMs6KZuXd",
"2mhmz3vGcczlA0vv2k7lZjdT7LmbYLt/ir7Hdqg7z7l84wO1qPNQc6pRkLVd1rMX",
"8fh+RtLUVAuvATpRJCAdaeslcxaH7o0p5DbjrRmiDmnaLDl/S0xMhI137XaKdUS7",
"ZRuGFZVfqXeFerpbjrlUlhzAcHua8aAmHQARAQABiJ8EGAEIAAkFAli+5m8CGwwA",
"CgkQqVENj9fjUvUA6AP/b9jZvaQ7w6mdlCvCrFpfp3vBZN1E0vLIMdRKRMmNR8D7",
"pmZ4RcmMJxjVTLkB6Uc90+9Tbb2ysykQaTTw3YdpmyoGmy3qgH3opd/IdZzEAJyL",
"oBC+u8G7nATB58m4xmBYL1G5hn8nCBbNAiz1rrbXmWmVExQCVAXp7T50vPBdyFY=",
"=xCxV",
"-----END PGP PUBLIC KEY BLOCK-----",
].join("\n"),
sec: [
"-----BEGIN PGP PRIVATE KEY BLOCK-----",
"",
"lQHYBFi+5m8BBADVXAObPqV5YsGQWV7348uvSZT5F/HVkU2S7qmT8+Vyhm/RNUSs",
"UIxC2fWwSL/7dBw6IsIdVyaJN0kTD8yzxyvZS12mv5e+9egpEXXU75Hd3IxQN8gB",
"C1/e/uJz1SGo2FDw8uqLwq0a7tm18ltnIxyhK5SNBid+x226Y/xl0kC+hwARAQAB",
"AAP7BLFYuDDhPrQDIgsdyzzsuIDPbj6G9z9+hsN/sLrZlEFbBt67c95+Sbzm6h1O",
"SdgcoZiPgJig0L3OyR1kO5ypBG4jhSgbaTKRHjP4KsOWoPuXmL1p8XLzZHOGp3hS",
"/recAxhqdbbO7uim+nbaPdmby9v0XrMAkFkBTU+D+ZlmC3ECAODTUZ7i+vRD6R3x",
"NzN2uhomWy94I7SkugTjcTw6BrzvdffFKtW7Yp6MbPdCpRIhuKy/QhG1LCUGwJKQ",
"vvNe5z8CAPLxrsx6jiFHpzAtUBYNBY5M3t805OYRFbs3mJ3LgsUP0wVOnODqo5TA",
"anevkFoakvcKJ8d0OlbO0/ewm4wd3rkB+wRQrllfYFfLqGzUlZDP15NKoHFk8T/w",
"LWg6nDm8pxXlhptaA8V4rVK1HrrPU56GBbzXftqL6iDpbYh9ZPR/U/qoXLQlQ3li",
"ZXJDaGVmIG5vcHcgMTAyNCA8dG9ieUB0b2J5LmNvZGVzPoi3BBMBCAAhBQJYvuZv",
"AhsDBQsJCAcCBhUICQoLAgQWAgMBAh4BAheAAAoJEKlRDY/X41L1mHED/j2xepZi",
"iLfgcy0d9V6M+k9JesXFj5mOAzVwxV7mbhy6YF5lVVhoQf3/fEOWuF+uUyLEJEY2",
"p8hHBq8hs1bIGyGuNWdnU9H+G+nY/e1XRyJXnWUmLoCk7jp+yaxZnDzhw4B6NDWC",
"IGO4u67h27nb4xVtySjbIQna05LZYw+dg7tFnQHYBFi+5m8BBAClMs6KZuXd2mhm",
"z3vGcczlA0vv2k7lZjdT7LmbYLt/ir7Hdqg7z7l84wO1qPNQc6pRkLVd1rMX8fh+",
"RtLUVAuvATpRJCAdaeslcxaH7o0p5DbjrRmiDmnaLDl/S0xMhI137XaKdUS7ZRuG",
"FZVfqXeFerpbjrlUlhzAcHua8aAmHQARAQABAAP8C0IAnaGbME4WMkzDyHIbPqTF",
"s9qX6NMumbthVLY4C4jhgnH9egH9x9sn9rpvm7/Iz2vXUvCdiNgLu/3zQoFYawsn",
"zpTQREm6CyITOLxyc5TrckodSlx6eoCezvnTzI/PvXrUSSqEP9c9hvcLuKm+aeZz",
"fclhPfDOL/EQx337aeECAMU0UXXb95hQqSdRMcsGkpoAlAIEM664/S9eBvXrJYWw",
"1Pfgms7Axi/tZ4ebkc3urRW/YKAt423Ixmdd5rOwIDECANZzoOU8LxreLcLQOoA9",
"SWswRWUeyQTvH4yskT2iIXen22CO1pp7ruy07vSxHE+yyR3t2ZHKPJU864J39d4k",
"da0CAJS838KMD8h+Zv1C/jhKkYjpnDRuE+Lj7qVNHCJqsFSzpJAbJ09VpwSGbUso",
"Ptc/oyXgzb91+sLKfsIwGa7ZysarEIifBBgBCAAJBQJYvuZvAhsMAAoJEKlRDY/X",
"41L1AOgD/2/Y2b2kO8OpnZQrwqxaX6d7wWTdRNLyyDHUSkTJjUfA+6ZmeEXJjCcY",
"1Uy5AelHPdPvU229srMpEGk08N2HaZsqBpst6oB96KXfyHWcxACci6AQvrvBu5wE",
"wefJuMZgWC9RuYZ/JwgWzQIs9a6215lplRMUAlQF6e0+dLzwXchW",
"=S56e",
"-----END PGP PRIVATE KEY BLOCK-----",
].join("\n"),
},
{
keyID: "02da58ca894c4cc7",
name: "CyberChef pw 1024 <toby@toby.codes>",
size: 1024,
password: "2NSRJYTzgsTVJfih",
pub: [
"-----BEGIN PGP PUBLIC KEY BLOCK-----",
"",
"mI0EWL7mswEEAMcw0PSzmNfh4MkGwejsyreXb34FqEjYMc1GmswvC5uuLp0KzbC6",
"HecV1GyyPQ7kKshWVLloShN3KtgSZF7DJ8/Hioiv4Q5HJYPY4AYwqECi+/C4W1FA",
"tJEbItdEIxw0IgHOX64X5kMptVV9J5bGc7DqkqUHgapXJI+yLZel0s83ABEBAAG0",
"I0N5YmVyQ2hlZiBwdyAxMDI0IDx0b2J5QHRvYnkuY29kZXM+iLcEEwEIACEFAli+",
"5rMCGwMFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQAtpYyolMTMeOGwP+NvLU",
"GHhHaIFwI+VMB655CiD6QuRWnurcrXq7qZYl3flyBehhZdtgGBx9vynffElEFEFz",
"cbqzv8unkDTRdPqTA0gM2wOaC/L6Kuy4ErjQD7A4i5rC/IG0ja+3DQeKLShGGtaD",
"bG0H0mJl7gzlqR3/fxgLxi/JaCtqapjtZDF/GTC4jQRYvuazAQQA5oNC4NeWKBKU",
"m9H/QZyxKRWGaaQRKLrmSGVkQgJlzo3pnNjJMFUaMcQaJve+PZGay7y9sCOFpumf",
"6v1ERY+qw4ZOyCRnRqHJOxdLrbTPSmOwIUYkYFkNzARGpdy/FqWCByXDXea5qsb1",
"DJRT9WUte3Bbx1YvzsqrZMqsExgwgdcAEQEAAYifBBgBCAAJBQJYvuazAhsMAAoJ",
"EALaWMqJTEzH7woEAKIKQS8bEf8iHaVf7aGEWWOShN10gb+xpWD4V5r8H6hlNpIk",
"xwQEbj8glTJBEJoD5xO1tdrHmOJ7BVO1d7otdgXpjBAOxn0ngW4MAB8BO+Qa5U/t",
"M+6yuL8REwE5YUnvIyhgvhiHsBhlLeMNXtwCrF94WyDzyb+hwVwwi/PFtI0y",
"=djdC",
"-----END PGP PUBLIC KEY BLOCK-----",
].join("\n"),
sec: [
"-----BEGIN PGP PRIVATE KEY BLOCK-----",
"",
"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",
"=j2j0",
"-----END PGP PRIVATE KEY BLOCK-----",
].join("\n"),
},
];
["", "hello world"].forEach(function(input) {
TestRegister.addTests(
PGP_TEST_KEY_PAIRS.map(function(keyPair) {
var testName = "PGP encrypt, PGP decrypt ($pw, $ks) '$input'";
testName = testName.replace("$ks", keyPair.size);
testName = testName.replace("$pw", keyPair.password ? "pw" : "no pw");
testName = testName.replace("$input", input);
return {
name: testName,
input: input,
expectedOutput: input,
recipeConfig: [
{
op: "PGP Encrypt",
args: [keyPair.pub],
},
{
op: "PGP Decrypt",
args: [keyPair.sec, keyPair.password],
},
],
};
})
);
});
TestRegister.addTests([{
name: "PGP encrypt, PGP Decrypt: fails when incorrect password, empty string (1024)",
input: "",
expectedError: true,
recipeConfig: [
{
op: "PGP Encrypt",
args: [PGP_TEST_KEY_PAIRS[1].pub],
},
{
op: "PGP Decrypt",
args: [PGP_TEST_KEY_PAIRS[1].sec, "gibberish"],
},
],
}]);
TestRegister.addTests([{
name: "PGP encrypt, PGP Decrypt: fails when incorrect password, hello world (1024)",
input: "hello world",
expectedError: true,
recipeConfig: [
{
op: "PGP Encrypt",
args: [PGP_TEST_KEY_PAIRS[1].pub],
},
{
op: "PGP Decrypt",
args: [PGP_TEST_KEY_PAIRS[1].sec, "gibberish"],
},
],
}]);
["hello world"].forEach(function(input) {
[
[PGP_TEST_KEY_PAIRS[0], PGP_TEST_KEY_PAIRS[1]],
[PGP_TEST_KEY_PAIRS[1], PGP_TEST_KEY_PAIRS[0]],
].forEach(function(pairOfKeyPairs) {
var alice = pairOfKeyPairs[0];
var bob = pairOfKeyPairs[1];
var testName = "PGP Sign ($alice), PGP Verify ($bob) '$input'";
testName = testName.replace("$alice", alice.name);
testName = testName.replace("$bob", bob.name);
testName = testName.replace("$input", input);
TestRegister.addTests([{
name: testName,
input: input,
expectedOutput: [
"Verified: true",
"Key ID: " + alice.keyID,
"Encrypted for: " + bob.name,
"Signed on: ",
"Signed by: " + alice.name,
"Signed with: ",
"\n",
input,
].join("\n"),
recipeConfig: [
{
op: "PGP Sign",
args: [bob.pub, alice.sec, alice.password],
},
{
op: "PGP Verify",
args: [alice.pub, bob.sec, bob.password, true],
},
],
}]);
});
});
["hello world"].forEach(function(input) {
[
[PGP_TEST_KEY_PAIRS[0], PGP_TEST_KEY_PAIRS[1]],
[PGP_TEST_KEY_PAIRS[1], PGP_TEST_KEY_PAIRS[0]],
].forEach(function(pairOfKeyPairs) {
var alice = pairOfKeyPairs[0];
var bob = pairOfKeyPairs[1];
var testName = "PGP Sign ($alice), PGP Verify ($bob) '$input' (message hidden)";
testName = testName.replace("$alice", alice.name);
testName = testName.replace("$bob", bob.name);
testName = testName.replace("$input", input);
TestRegister.addTests([{
name: testName,
input: input,
expectedOutput: [
"Verified: true",
"Key ID: " + alice.keyID,
"Encrypted for: " + bob.name,
"Signed on: ",
"Signed by: " + alice.name,
"Signed with: ",
"\n",
"",
].join("\n"),
recipeConfig: [
{
op: "PGP Sign",
args: [bob.pub, alice.sec, alice.password],
},
{
op: "PGP Verify",
args: [alice.pub, bob.sec, bob.password, false],
},
],
}]);
});
});
["", "hello world"].forEach(function(input) {
TestRegister.addTests(
PGP_TEST_KEY_PAIRS.map(function(keyPair) {
var testName = "Sign PGP Cleartext, Verify PGP Cleartext ($pw, $ks) '$input'";
testName = testName.replace("$ks", keyPair.size);
testName = testName.replace("$pw", keyPair.password ? "pw" : "no pw");
testName = testName.replace("$input", input);
return {
name: testName,
input: input,
expectedOutput: [
"Verified: true",
"Key ID: " + keyPair.keyID,
"Signed on: ",
"Signed by: " + keyPair.name,
"Signed with: ",
"\n",
input,
].join("\n"),
recipeConfig: [
{
op: "Sign PGP Cleartext",
args: [keyPair.sec, keyPair.password],
},
{
op: "Verify PGP Cleartext",
args: [keyPair.pub, true],
},
],
};
})
);
});
["", "hello world"].forEach(function(input) {
TestRegister.addTests(
PGP_TEST_KEY_PAIRS.map(function(keyPair) {
var testName = "Sign Sign Cleartext, Verify PGP Cleartext ($pw, $ks) '$input' (message hidden)";
testName = testName.replace("$ks", keyPair.size);
testName = testName.replace("$pw", keyPair.password ? "pw" : "no pw");
testName = testName.replace("$input", input);
return {
name: testName,
input: input,
expectedOutput: [
"Verified: true",
"Key ID: " + keyPair.keyID,
"Signed on: ",
"Signed by: " + keyPair.name,
"Signed with: ",
"\n",
"",
].join("\n"),
recipeConfig: [
{
op: "Sign PGP Cleartext",
args: [keyPair.sec, keyPair.password],
},
{
op: "Verify PGP Cleartext",
args: [keyPair.pub, false],
},
],
};
})
);
});
TestRegister.addTests(CYBERCHEF_GENERATED_KEY_PAIRS.map(function(keyPair) {
var testName = "Remove PGP ASCII Armor, Add PGP ASCII Armor: Public Key '$name'";
testName = testName.replace("$name", keyPair.name);
return {
name: testName,
input: keyPair.pub,
expectedOutput: keyPair.pub,
ignoreWhitespace: true,
recipeConfig: [
{
op: "Remove PGP ASCII Armor",
args: [],
},
{
op: "Add PGP ASCII Armor",
args: ["Public key"],
},
],
};
}));
TestRegister.addTests(CYBERCHEF_GENERATED_KEY_PAIRS.map(function(keyPair) {
var testName = "Remove PGP ASCII Armor, Add PGP ASCII Armor: Private Key '$name'";
testName = testName.replace("$name", keyPair.name);
return {
name: testName,
input: keyPair.sec,
expectedOutput: keyPair.sec,
ignoreWhitespace: true,
recipeConfig: [
{
op: "Remove PGP ASCII Armor",
args: [],
},
{
op: "Add PGP ASCII Armor",
args: ["Private key"],
},
],
};
}));
CYBERCHEF_GENERATED_KEY_PAIRS.forEach(function(keyPair) {
TestRegister.addTests(keyPair.messages.map(function(encryptedMessage, messageIndex) {
var testName = "Remove PGP ASCII Armor, Add PGP ASCII Armor: Message $message '$name'";
testName = testName.replace("$message", messageIndex);
testName = testName.replace("$name", keyPair.name);
return {
name: testName,
input: encryptedMessage,
expectedOutput: encryptedMessage,
ignoreWhitespace: true,
recipeConfig: [
{
op: "Remove PGP ASCII Armor",
args: [],
},
{
op: "Add PGP ASCII Armor",
args: ["Message"],
},
],
};
}));
});