mirror of https://github.com/gchq/CyberChef.git
Compare commits
4 Commits
0c70866b36
...
ffa03b0e0c
Author | SHA1 | Date |
---|---|---|
CPlusSharp | ffa03b0e0c | |
n1474335 | bbebba6481 | |
n1474335 | f0a49fefa4 | |
CPlusSharp | 9f7a75536e |
|
@ -7,6 +7,8 @@
|
|||
|
||||
import Operation from "../Operation.mjs";
|
||||
import forge from "node-forge";
|
||||
import { toBase64 } from "../lib/Base64.mjs";
|
||||
import { fromHex } from "../lib/Hex.mjs";
|
||||
import { cryptNotice } from "../lib/Crypt.mjs";
|
||||
|
||||
/**
|
||||
|
@ -41,6 +43,7 @@ class GenerateRSAKeyPair extends Operation {
|
|||
type: "option",
|
||||
value: [
|
||||
"PEM",
|
||||
"JWK",
|
||||
"JSON",
|
||||
"DER"
|
||||
]
|
||||
|
@ -70,6 +73,38 @@ class GenerateRSAKeyPair extends Operation {
|
|||
case "PEM":
|
||||
result = forge.pki.publicKeyToPem(keypair.publicKey) + "\n" + forge.pki.privateKeyToPem(keypair.privateKey);
|
||||
break;
|
||||
case "JWK": {
|
||||
const base64urlUInt = function (bigInt) {
|
||||
let hex = bigInt.toString(16);
|
||||
// prepend 0 if not even
|
||||
if (hex.length % 2 === 1) {
|
||||
hex = "0" + hex;
|
||||
}
|
||||
return toBase64(fromHex(hex), "A-Za-z0-9-_");
|
||||
};
|
||||
const pubKey = {
|
||||
kty: "RSA",
|
||||
kid: "PublicKey",
|
||||
key_ops: ["verify", "encrypt"], // eslint-disable-line camelcase
|
||||
n: base64urlUInt(keypair.publicKey.n),
|
||||
e: base64urlUInt(keypair.publicKey.e)
|
||||
};
|
||||
const privKey = {
|
||||
kty: "RSA",
|
||||
kid: "PrivateKey",
|
||||
key_ops: ["sign", "decrypt"], // eslint-disable-line camelcase
|
||||
n: base64urlUInt(keypair.privateKey.n),
|
||||
e: base64urlUInt(keypair.privateKey.e),
|
||||
d: base64urlUInt(keypair.privateKey.d),
|
||||
p: base64urlUInt(keypair.privateKey.p),
|
||||
q: base64urlUInt(keypair.privateKey.q),
|
||||
dp: base64urlUInt(keypair.privateKey.dP),
|
||||
dq: base64urlUInt(keypair.privateKey.dQ),
|
||||
qi: base64urlUInt(keypair.privateKey.qInv)
|
||||
};
|
||||
result = JSON.stringify({keys: [privKey, pubKey]}, null, 4);
|
||||
break;
|
||||
}
|
||||
case "JSON":
|
||||
result = JSON.stringify(keypair);
|
||||
break;
|
||||
|
|
|
@ -173,25 +173,20 @@ module.exports = {
|
|||
|
||||
browser.waitForElementVisible("#stale-indicator");
|
||||
|
||||
browser.expect.element("#auto-bake").to.not.be.selected;
|
||||
|
||||
// Enable previously disabled autobake
|
||||
browser.expect.element("#auto-bake").to.not.be.selected;
|
||||
browser.click("#auto-bake-label");
|
||||
browser.expect.element("#auto-bake").to.be.selected.before(1000);
|
||||
|
||||
browser.waitUntil(() => {
|
||||
return browser.expect.element("#auto-bake").to.be.selected;
|
||||
}, 1000);
|
||||
|
||||
// Add content to the input
|
||||
browser.pause(100);
|
||||
browser.sendKeys("#input-text .cm-content", "1");
|
||||
|
||||
browser.waitForElementVisible("#output-loader");
|
||||
|
||||
browser.pause(500);
|
||||
|
||||
// Make another change while the previous input is being baked
|
||||
browser.sendKeys("#input-text .cm-content", "2");
|
||||
|
||||
browser
|
||||
.sendKeys("#input-text .cm-content", "2")
|
||||
.waitForElementNotVisible("#stale-indicator")
|
||||
.waitForElementNotVisible("#output-loader");
|
||||
|
||||
|
@ -200,6 +195,7 @@ module.exports = {
|
|||
|
||||
// Turn autobake off again
|
||||
browser.click("#auto-bake-label");
|
||||
browser.expect.element("#auto-bake").to.not.be.selected.before(1000);
|
||||
},
|
||||
|
||||
"Special content": browser => {
|
||||
|
|
|
@ -39,6 +39,7 @@ function setInput(browser, input, type=true) {
|
|||
browser.execute(text => {
|
||||
window.app.setInput(text);
|
||||
}, [input]);
|
||||
browser.pause(100);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue