mirror of
https://github.com/gchq/CyberChef.git
synced 2025-05-06 22:47:11 -04:00
Add operation "Detach PGP Cleartext"
This operation is like "Remove PGP ASCII Armor" but for detached signatures. It outputs files as HTML similar to "Sign PGP Detached".
This commit is contained in:
parent
f60b06f4be
commit
8db94be8ac
2 changed files with 64 additions and 0 deletions
|
@ -3335,6 +3335,14 @@ var OperationConfig = {
|
|||
},
|
||||
]
|
||||
},
|
||||
"Detach PGP Cleartext": {
|
||||
description: "",
|
||||
run: PGP.runDetachClearsig,
|
||||
inputType: "string",
|
||||
outputType: "HTML",
|
||||
args: [
|
||||
],
|
||||
},
|
||||
"Add PGP ASCII Armor": {
|
||||
description: "",
|
||||
run: PGP.runAddArmor,
|
||||
|
|
|
@ -511,6 +511,62 @@ var PGP = {
|
|||
},
|
||||
|
||||
|
||||
/**
|
||||
* Turns a PGP clearsigned message into a detached signature.
|
||||
*
|
||||
* @param {string} input
|
||||
* @param {Object[]} args
|
||||
* @returns {HTML}
|
||||
*/
|
||||
runDetachClearsig: function (input, args) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
try {
|
||||
var message = openpgp.cleartext.readArmored(input);
|
||||
} catch (err) {
|
||||
return reject("Could not read input message: " + err);
|
||||
}
|
||||
|
||||
var cleartext = message.getText();
|
||||
var clearbytes = openpgp.util.str2Uint8Array(cleartext);
|
||||
|
||||
var signature = message.packets.filterByTag(openpgp.enums.packet.signature);
|
||||
var rawSignatureBytes = signature.write();
|
||||
|
||||
var armoredMessage = openpgp.armor.encode(
|
||||
openpgp.enums.armor.message,
|
||||
rawSignatureBytes
|
||||
);
|
||||
armoredMessage = armoredMessage.replace(
|
||||
"-----BEGIN PGP MESSAGE-----\r\n",
|
||||
"-----BEGIN PGP SIGNATURE-----\r\n"
|
||||
);
|
||||
armoredMessage = armoredMessage.replace(
|
||||
"-----END PGP MESSAGE-----\r\n",
|
||||
"-----END PGP SIGNATURE-----\r\n"
|
||||
);
|
||||
|
||||
var files = [{
|
||||
fileName: "msg",
|
||||
size: cleartext.length,
|
||||
contents: cleartext,
|
||||
bytes: clearbytes,
|
||||
}, {
|
||||
fileName: "msg.asc",
|
||||
size: armoredMessage.length,
|
||||
contents: armoredMessage,
|
||||
bytes: openpgp.util.str2Uint8Array(armoredMessage),
|
||||
}, {
|
||||
fileName: "msg.sig",
|
||||
size: rawSignatureBytes.length,
|
||||
contents: openpgp.util.Uint8Array2str(rawSignatureBytes),
|
||||
bytes: rawSignatureBytes,
|
||||
}];
|
||||
|
||||
resolve(Utils.displayFilesAsHTML(files));
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Turns raw PGP bytes into an ASCII armored string.
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue