aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/core/src/test/java/org/spongycastle/crypto/test/GOST28147MacTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/core/src/test/java/org/spongycastle/crypto/test/GOST28147MacTest.java')
-rw-r--r--libraries/spongycastle/core/src/test/java/org/spongycastle/crypto/test/GOST28147MacTest.java89
1 files changed, 89 insertions, 0 deletions
diff --git a/libraries/spongycastle/core/src/test/java/org/spongycastle/crypto/test/GOST28147MacTest.java b/libraries/spongycastle/core/src/test/java/org/spongycastle/crypto/test/GOST28147MacTest.java
new file mode 100644
index 000000000..4ed507837
--- /dev/null
+++ b/libraries/spongycastle/core/src/test/java/org/spongycastle/crypto/test/GOST28147MacTest.java
@@ -0,0 +1,89 @@
+package org.spongycastle.crypto.test;
+
+import org.spongycastle.crypto.Mac;
+import org.spongycastle.crypto.engines.GOST28147Engine;
+import org.spongycastle.crypto.macs.GOST28147Mac;
+import org.spongycastle.crypto.params.KeyParameter;
+import org.spongycastle.crypto.params.ParametersWithSBox;
+import org.spongycastle.util.Arrays;
+import org.spongycastle.util.encoders.Hex;
+import org.spongycastle.util.test.SimpleTestResult;
+import org.spongycastle.util.test.Test;
+import org.spongycastle.util.test.TestResult;
+
+/**
+ * GOST 28147 MAC tester
+ */
+public class GOST28147MacTest
+ implements Test
+{
+ //
+ // these GOSTMac for testing.
+ //
+ static byte[] gkeyBytes1 = Hex.decode("6d145dc993f4019e104280df6fcd8cd8e01e101e4c113d7ec4f469ce6dcd9e49");
+ static byte[] gkeyBytes2 = Hex.decode("6d145dc993f4019e104280df6fcd8cd8e01e101e4c113d7ec4f469ce6dcd9e49");
+
+ static byte[] input3 = Hex.decode("7768617420646f2079612077616e7420666f72206e6f7468696e673f");
+ static byte[] input4 = Hex.decode("7768617420646f2079612077616e7420666f72206e6f7468696e673f");
+
+ static byte[] output7 = Hex.decode("93468a46");
+ static byte[] output8 = Hex.decode("93468a46");
+
+ public GOST28147MacTest()
+ {
+ }
+
+ public TestResult perform()
+ {
+ // test1
+ Mac mac = new GOST28147Mac();
+ KeyParameter key = new KeyParameter(gkeyBytes1);
+
+ mac.init(key);
+
+ mac.update(input3, 0, input3.length);
+
+ byte[] out = new byte[4];
+
+ mac.doFinal(out, 0);
+
+ if (!Arrays.areEqual(out, output7))
+ {
+ return new SimpleTestResult(false, getName() + ": Failed test 1 - expected " + new String(Hex.encode(output7)) + " got " + new String(Hex.encode(out)));
+ }
+
+ // test2
+ key = new KeyParameter(gkeyBytes2);
+
+ ParametersWithSBox gparam = new ParametersWithSBox(key, GOST28147Engine.getSBox("E-A"));
+
+ mac.init(gparam);
+
+ mac.update(input4, 0, input4.length);
+
+ out = new byte[4];
+
+ mac.doFinal(out, 0);
+
+ if (!Arrays.areEqual(out, output8))
+ {
+ return new SimpleTestResult(false, getName() + ": Failed test 2 - expected " + new String(Hex.encode(output8)) + " got " + new String(Hex.encode(out)));
+ }
+
+ return new SimpleTestResult(true, getName() + ": Okay");
+ }
+
+ public String getName()
+ {
+ return "GOST28147Mac";
+ }
+
+ public static void main(
+ String[] args)
+ {
+ GOST28147MacTest test = new GOST28147MacTest();
+ TestResult result = test.perform();
+
+ System.out.println(result);
+ }
+}