diff options
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.java | 89 |
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); + } +} |