|
@@ -0,0 +1,183 @@
|
|
|
+/**
|
|
|
+ * GOST tests.
|
|
|
+ *
|
|
|
+ * The GOST library already includes a range of tests for the correctness of
|
|
|
+ * the algorithms. These tests are intended only to confirm that the library
|
|
|
+ * has been correctly integrated into CyberChef.
|
|
|
+ *
|
|
|
+ * @author n1474335 [n1474335@gmail.com]
|
|
|
+ *
|
|
|
+ * @copyright Crown Copyright 2023
|
|
|
+ * @license Apache-2.0
|
|
|
+ */
|
|
|
+import TestRegister from "../../lib/TestRegister.mjs";
|
|
|
+
|
|
|
+TestRegister.addTests([
|
|
|
+ {
|
|
|
+ name: "GOST Encrypt: Magma",
|
|
|
+ input: "Hello, World!",
|
|
|
+ expectedOutput: "f124ac5c0853870906dbaf9b56",
|
|
|
+ recipeConfig: [
|
|
|
+ {
|
|
|
+ op: "GOST Encrypt",
|
|
|
+ args: [
|
|
|
+ { "option": "Hex", "string": "00112233" },
|
|
|
+ { "option": "Hex", "string": "0011223344556677" },
|
|
|
+ "Raw",
|
|
|
+ "Hex",
|
|
|
+ "GOST 28147 (Magma, 1989)",
|
|
|
+ "64",
|
|
|
+ "E-SC",
|
|
|
+ "OFB",
|
|
|
+ "CP",
|
|
|
+ "ZERO"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "GOST Encrypt: Kuznyechik",
|
|
|
+ input: "Hello, World!",
|
|
|
+ expectedOutput: "8673d490dfa4a66d5e3ff00ba316724f",
|
|
|
+ recipeConfig: [
|
|
|
+ {
|
|
|
+ op: "GOST Encrypt",
|
|
|
+ args: [
|
|
|
+ { "option": "Hex", "string": "00112233" },
|
|
|
+ { "option": "Hex", "string": "00112233445566778899aabbccddeeff" },
|
|
|
+ "Raw",
|
|
|
+ "Hex",
|
|
|
+ "GOST R 34.12 (Kuznyechik, 2015)",
|
|
|
+ "128",
|
|
|
+ "E-SC",
|
|
|
+ "CBC",
|
|
|
+ "CP",
|
|
|
+ "PKCS5"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "GOST Decrypt: Magma",
|
|
|
+ input: "f124ac5c0853870906dbaf9b56",
|
|
|
+ expectedOutput: "Hello, World!",
|
|
|
+ recipeConfig: [
|
|
|
+ {
|
|
|
+ op: "GOST Decrypt",
|
|
|
+ args: [
|
|
|
+ { "option": "Hex", "string": "00112233" },
|
|
|
+ { "option": "Hex", "string": "0011223344556677" },
|
|
|
+ "Hex",
|
|
|
+ "Raw",
|
|
|
+ "GOST 28147 (Magma, 1989)",
|
|
|
+ "128",
|
|
|
+ "E-SC",
|
|
|
+ "OFB",
|
|
|
+ "CP",
|
|
|
+ "ZERO"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "GOST Decrypt: Kuznyechik",
|
|
|
+ input: "8673d490dfa4a66d5e3ff00ba316724f",
|
|
|
+ expectedOutput: "Hello, World!\0\0\0",
|
|
|
+ recipeConfig: [
|
|
|
+ {
|
|
|
+ op: "GOST Decrypt",
|
|
|
+ args: [
|
|
|
+ { "option": "Hex", "string": "00112233" },
|
|
|
+ { "option": "Hex", "string": "00112233445566778899aabbccddeeff" },
|
|
|
+ "Hex",
|
|
|
+ "Raw",
|
|
|
+ "GOST R 34.12 (Kuznyechik, 2015)",
|
|
|
+ "128",
|
|
|
+ "E-TEST",
|
|
|
+ "CBC",
|
|
|
+ "CP",
|
|
|
+ "PKCS5"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "GOST Sign",
|
|
|
+ input: "Hello, World!",
|
|
|
+ expectedOutput: "810d0c40e965",
|
|
|
+ recipeConfig: [
|
|
|
+ {
|
|
|
+ op: "GOST Sign",
|
|
|
+ args: [
|
|
|
+ { "option": "Hex", "string": "00112233" },
|
|
|
+ { "option": "Hex", "string": "0011223344556677" },
|
|
|
+ "Raw",
|
|
|
+ "Hex",
|
|
|
+ "GOST 28147 (Magma, 1989)",
|
|
|
+ "64",
|
|
|
+ "E-C",
|
|
|
+ 48
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "GOST Verify",
|
|
|
+ input: "Hello, World!",
|
|
|
+ expectedOutput: "The signature matches",
|
|
|
+ recipeConfig: [
|
|
|
+ {
|
|
|
+ op: "GOST Verify",
|
|
|
+ args: [
|
|
|
+ { "option": "Hex", "string": "00112233" },
|
|
|
+ { "option": "Hex", "string": "00112233445566778899aabbccddeeff" },
|
|
|
+ { "option": "Hex", "string": "42b77fb3d6f6bf04" },
|
|
|
+ "Raw",
|
|
|
+ "GOST R 34.12 (Kuznyechik, 2015)",
|
|
|
+ "128",
|
|
|
+ "E-TEST"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "GOST Key Wrap",
|
|
|
+ input: "Hello, World!123",
|
|
|
+ expectedOutput: "0bb706e92487fceef97589911faeb28200000000000000000000000000000000\r\n6b7bfd16",
|
|
|
+ recipeConfig: [
|
|
|
+ {
|
|
|
+ op: "GOST Key Wrap",
|
|
|
+ args: [
|
|
|
+ { "option": "Hex", "string": "00112233" },
|
|
|
+ { "option": "Hex", "string": "0011223344556677" },
|
|
|
+ "Raw",
|
|
|
+ "Hex",
|
|
|
+ "GOST R 34.12 (Kuznyechik, 2015)",
|
|
|
+ "64",
|
|
|
+ "E-TEST",
|
|
|
+ "CP"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "GOST Key Unwrap",
|
|
|
+ input: "c8e58458a42d21974d50103d59b469f2c8e58458a42d21974d50103d59b469f2\r\na32a1575",
|
|
|
+ expectedOutput: "0123456789abcdef0123456789abcdef",
|
|
|
+ recipeConfig: [
|
|
|
+ {
|
|
|
+ op: "GOST Key Unwrap",
|
|
|
+ args: [
|
|
|
+ { "option": "Hex", "string": "" },
|
|
|
+ { "option": "Latin1", "string": "00112233" },
|
|
|
+ "Hex",
|
|
|
+ "Raw",
|
|
|
+ "GOST 28147 (Magma, 1989)",
|
|
|
+ "64",
|
|
|
+ "E-Z",
|
|
|
+ "CP"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ },
|
|
|
+]);
|