aboutsummaryrefslogtreecommitdiff
path: root/gnu/testlet/gnu/javax/crypto/mac/TestOfTMMH16.java
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/testlet/gnu/javax/crypto/mac/TestOfTMMH16.java')
-rw-r--r--gnu/testlet/gnu/javax/crypto/mac/TestOfTMMH16.java179
1 files changed, 179 insertions, 0 deletions
diff --git a/gnu/testlet/gnu/javax/crypto/mac/TestOfTMMH16.java b/gnu/testlet/gnu/javax/crypto/mac/TestOfTMMH16.java
new file mode 100644
index 00000000..5a565afc
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mac/TestOfTMMH16.java
@@ -0,0 +1,179 @@
+/* TestOfTMMH16.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ This file is part of Mauve.
+
+ Mauve is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ Mauve is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Mauve; see the file COPYING. If not, write to the
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mac;
+
+import gnu.java.security.prng.BasePRNG;
+import gnu.java.security.prng.IRandom;
+import gnu.java.security.prng.LimitReachedException;
+import gnu.javax.crypto.mac.IMac;
+import gnu.javax.crypto.mac.TMMH16;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Conformance test for the {@link TMMH16} implementation.
+ */
+public class TestOfTMMH16 implements Testlet
+{
+ private IRandom keystream;
+
+ private byte[] output, message, result;
+
+ private IMac mac;
+
+ private HashMap attributes = new HashMap();
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfTMMH16");
+
+ /*
+ KEY_LENGTH: 10
+ TAG_LENGTH: 2
+ key: { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc }
+ message: { 0xca, 0xfe, 0xba, 0xbe, 0xba, 0xde }
+ output: { 0x9d, 0x6a }
+ */
+ try
+ {
+ attributes.clear();
+ keystream = new DummyKeystream();
+ keystream.init(null);
+
+ output = new byte[] { (byte) 0x9d, (byte) 0x6a };
+ mac = new TMMH16();
+ attributes.put(TMMH16.KEYSTREAM, keystream);
+ attributes.put(TMMH16.TAG_LENGTH, new Integer(2));
+ mac.init(attributes);
+ message = new byte[] { (byte) 0xca, (byte) 0xfe, (byte) 0xba,
+ (byte) 0xbe, (byte) 0xba, (byte) 0xde };
+ for (int i = 0; i < message.length; i++)
+ {
+ mac.update(message[i]);
+ }
+ result = mac.digest();
+ harness.check(Arrays.equals(result, output), "testVector1");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTMMH16.testVector1");
+ }
+
+ /*
+ KEY_LENGTH: 10
+ TAG_LENGTH: 2
+ key: { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc }
+ message: { 0xca, 0xfe, 0xba }
+ output: { 0xc8, 0x8e }
+ */
+ try
+ {
+ attributes.clear();
+ keystream = new DummyKeystream();
+ keystream.init(null);
+
+ output = new byte[] { (byte) 0xc8, (byte) 0x8e };
+ mac = new TMMH16();
+ attributes.put(TMMH16.KEYSTREAM, keystream);
+ attributes.put(TMMH16.TAG_LENGTH, new Integer(2));
+ mac.init(attributes);
+ message = new byte[] { (byte) 0xca, (byte) 0xfe, (byte) 0xba };
+ for (int i = 0; i < message.length; i++)
+ {
+ mac.update(message[i]);
+ }
+ result = mac.digest();
+ harness.check(Arrays.equals(result, output), "testVector2");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTMMH16.testVector2");
+ }
+
+ /*
+ KEY_LENGTH: 10
+ TAG_LENGTH: 4
+ key: { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc }
+ message: { 0xca, 0xfe, 0xba, 0xbe, 0xba, 0xde }
+ output: { 0x9d, 0x6a, 0xc0, 0xd3 }
+ */
+ try
+ {
+ attributes.clear();
+ keystream = new DummyKeystream();
+ keystream.init(null);
+
+ output = new byte[] { (byte) 0x9d, (byte) 0x6a, (byte) 0xc0,
+ (byte) 0xd3 };
+ mac = new TMMH16();
+ attributes.put(TMMH16.KEYSTREAM, keystream);
+ attributes.put(TMMH16.TAG_LENGTH, new Integer(4));
+ mac.init(attributes);
+ message = new byte[] { (byte) 0xca, (byte) 0xfe, (byte) 0xba,
+ (byte) 0xbe, (byte) 0xba, (byte) 0xde };
+ for (int i = 0; i < message.length; i++)
+ {
+ mac.update(message[i]);
+ }
+ result = mac.digest();
+ harness.check(Arrays.equals(result, output), "testVector3");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTMMH16.testVector3");
+ }
+ }
+
+ class DummyKeystream extends BasePRNG
+ {
+ DummyKeystream()
+ {
+ super("???");
+ }
+
+ public Object clone()
+ {
+ return null;
+ }
+
+ public void setup(Map attributes)
+ {
+ }
+
+ public void fillBlock() throws LimitReachedException
+ {
+ buffer = new byte[] {
+ (byte) 0x01, (byte) 0x23, (byte) 0x45, (byte) 0x67,
+ (byte) 0x89, (byte) 0xab, (byte) 0xcd, (byte) 0xef,
+ (byte) 0xfe, (byte) 0xdc };
+ }
+ }
+} \ No newline at end of file