You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by dr...@apache.org on 2015/03/11 22:48:20 UTC
[07/14] directory-kerberos git commit: DIRKRB-164 Refactor and split
KeyDeriveTest. Contributed by Liqi
DIRKRB-164 Refactor and split KeyDeriveTest. Contributed by Liqi
Project: http://git-wip-us.apache.org/repos/asf/directory-kerberos/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerberos/commit/c04f5532
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerberos/tree/c04f5532
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerberos/diff/c04f5532
Branch: refs/heads/installation
Commit: c04f55323f3874055854f0d6e6ca9ee517885432
Parents: 3c5179a
Author: Drankye <dr...@gmail.com>
Authored: Sun Mar 8 02:04:58 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Sun Mar 8 02:04:58 2015 +0800
----------------------------------------------------------------------
.../kerberos/kerb/crypto/KeyDeriveTest.java | 326 ++++++++++---------
1 file changed, 180 insertions(+), 146 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/c04f5532/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/KeyDeriveTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/KeyDeriveTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/KeyDeriveTest.java
index e2932b5..4fe85c0 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/KeyDeriveTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/KeyDeriveTest.java
@@ -52,125 +52,174 @@ public class KeyDeriveTest {
}
}
- static TestCase[] testCases = new TestCase[] {
- /* Kc, Ke, Kei for a DES3 key */
- new TestCase(
- EncryptionType.DES3_CBC_SHA1,
- "850BB51358548CD05E86768C313E3BFE" +
- "F7511937DCF72C3E",
- "0000000299",
- "F78C496D16E6C2DAE0E0B6C24057A84C" +
- "0426AEEF26FD6DCE"
- ),
- new TestCase(
- EncryptionType.DES3_CBC_SHA1,
- "850BB51358548CD05E86768C313E3BFE" +
- "F7511937DCF72C3E",
- "00000002AA",
- "5B5723D0B634CB684C3EBA5264E9A70D" +
- "52E683231AD3C4CE"
- ),
- new TestCase(
- EncryptionType.DES3_CBC_SHA1,
- "850BB51358548CD05E86768C313E3BFE" +
- "F7511937DCF72C3E",
- "0000000255",
- "A77C94980E9B7345A81525C423A737CE" +
- "67F4CD91B6B3DA45"
- ),
-
- /* Kc, Ke, Ki for an AES-128 key */
- new TestCase(
- EncryptionType.AES128_CTS_HMAC_SHA1_96,
- "42263C6E89F4FC28B8DF68EE09799F15",
- "0000000299",
- "34280A382BC92769B2DA2F9EF066854B"
- ),
- new TestCase(
- EncryptionType.AES128_CTS_HMAC_SHA1_96,
- "42263C6E89F4FC28B8DF68EE09799F15",
- "00000002AA",
- "5B14FC4E250E14DDF9DCCF1AF6674F53"
- ),
- new TestCase(
- EncryptionType.AES128_CTS_HMAC_SHA1_96,
- "42263C6E89F4FC28B8DF68EE09799F15",
- "0000000255",
- "4ED31063621684F09AE8D89991AF3E8F"
- ),
-
- /* Kc, Ke, Ki for an AES-256 key */
- new TestCase(
- EncryptionType.AES256_CTS_HMAC_SHA1_96,
- "FE697B52BC0D3CE14432BA036A92E65B" +
- "BB52280990A2FA27883998D72AF30161",
- "0000000299",
- "BFAB388BDCB238E9F9C98D6A878304F0" +
- "4D30C82556375AC507A7A852790F4674"
- ),
- new TestCase(
- EncryptionType.AES256_CTS_HMAC_SHA1_96,
- "FE697B52BC0D3CE14432BA036A92E65B" +
- "BB52280990A2FA27883998D72AF30161",
- "00000002AA",
- "C7CFD9CD75FE793A586A542D87E0D139" +
- "6F1134A104BB1A9190B8C90ADA3DDF37"
- ),
- new TestCase(
- EncryptionType.AES256_CTS_HMAC_SHA1_96,
- "FE697B52BC0D3CE14432BA036A92E65B" +
- "BB52280990A2FA27883998D72AF30161",
- "0000000255",
- "97151B4C76945063E2EB0529DC067D97" +
- "D7BBA90776D8126D91F34F3101AEA8BA"
- ),
-
- /* Kc, Ke, Ki for a Camellia-128 key */
- new TestCase(
- EncryptionType.CAMELLIA128_CTS_CMAC,
- "57D0297298FFD9D35DE5A47FB4BDE24B",
- "0000000299",
- "D155775A209D05F02B38D42A389E5A56"
- ),
- new TestCase(
- EncryptionType.CAMELLIA128_CTS_CMAC,
- "57D0297298FFD9D35DE5A47FB4BDE24B",
- "00000002AA",
- "64DF83F85A532F17577D8C37035796AB"
- ),
- new TestCase(
- EncryptionType.CAMELLIA128_CTS_CMAC,
- "57D0297298FFD9D35DE5A47FB4BDE24B",
- "0000000255",
- "3E4FBDF30FB8259C425CB6C96F1F4635"
- ),
-
- /* Kc, Ke, Ki for a Camellia-256 key */
- new TestCase(
- EncryptionType.CAMELLIA256_CTS_CMAC,
- "B9D6828B2056B7BE656D88A123B1FAC6" +
- "8214AC2B727ECF5F69AFE0C4DF2A6D2C",
- "0000000299",
- "E467F9A9552BC7D3155A6220AF9C1922" +
- "0EEED4FF78B0D1E6A1544991461A9E50"
- ),
- new TestCase(
- EncryptionType.CAMELLIA256_CTS_CMAC,
- "B9D6828B2056B7BE656D88A123B1FAC6" +
- "8214AC2B727ECF5F69AFE0C4DF2A6D2C",
- "00000002AA",
- "412AEFC362A7285FC3966C6A5181E760" +
- "5AE675235B6D549FBFC9AB6630A4C604"
- ),
- new TestCase(
- EncryptionType.CAMELLIA256_CTS_CMAC,
- "B9D6828B2056B7BE656D88A123B1FAC6" +
- "8214AC2B727ECF5F69AFE0C4DF2A6D2C",
- "0000000255",
- "FA624FA0E523993FA388AEFDC67E67EB" +
- "CD8C08E8A0246B1D73B0D1DD9FC582B0"
- )
- };
+ @Test
+ public void testKeyDerive_DES3_CBC_SHA1_299() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.DES3_CBC_SHA1,
+ "850BB51358548CD05E86768C313E3BFE" +
+ "F7511937DCF72C3E",
+ "0000000299",
+ "F78C496D16E6C2DAE0E0B6C24057A84C" +
+ "0426AEEF26FD6DCE"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_DES3_CBC_SHA1_2AA() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.DES3_CBC_SHA1,
+ "850BB51358548CD05E86768C313E3BFE" +
+ "F7511937DCF72C3E",
+ "00000002AA",
+ "5B5723D0B634CB684C3EBA5264E9A70D" +
+ "52E683231AD3C4CE"
+ ));
+
+ }
+
+ @Test
+ public void testKeyDerive_DES3_CBC_SHA1_255() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.DES3_CBC_SHA1,
+ "850BB51358548CD05E86768C313E3BFE" +
+ "F7511937DCF72C3E",
+ "0000000255",
+ "A77C94980E9B7345A81525C423A737CE" +
+ "67F4CD91B6B3DA45"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_AES128_CTS_HMAC_SHA1_96_299() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.AES128_CTS_HMAC_SHA1_96,
+ "42263C6E89F4FC28B8DF68EE09799F15",
+ "0000000299",
+ "34280A382BC92769B2DA2F9EF066854B"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_AES128_CTS_HMAC_SHA1_96_2AA() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.AES128_CTS_HMAC_SHA1_96,
+ "42263C6E89F4FC28B8DF68EE09799F15",
+ "00000002AA",
+ "5B14FC4E250E14DDF9DCCF1AF6674F53"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_AES128_CTS_HMAC_SHA1_96_255() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.AES128_CTS_HMAC_SHA1_96,
+ "42263C6E89F4FC28B8DF68EE09799F15",
+ "0000000255",
+ "4ED31063621684F09AE8D89991AF3E8F"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_AES256_CTS_HMAC_SHA1_96_299() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.AES256_CTS_HMAC_SHA1_96,
+ "FE697B52BC0D3CE14432BA036A92E65B" +
+ "BB52280990A2FA27883998D72AF30161",
+ "0000000299",
+ "BFAB388BDCB238E9F9C98D6A878304F0" +
+ "4D30C82556375AC507A7A852790F4674"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_AES256_CTS_HMAC_SHA1_96_2AA() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.AES256_CTS_HMAC_SHA1_96,
+ "FE697B52BC0D3CE14432BA036A92E65B" +
+ "BB52280990A2FA27883998D72AF30161",
+ "00000002AA",
+ "C7CFD9CD75FE793A586A542D87E0D139" +
+ "6F1134A104BB1A9190B8C90ADA3DDF37"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_AES256_CTS_HMAC_SHA1_96_255() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.AES256_CTS_HMAC_SHA1_96,
+ "FE697B52BC0D3CE14432BA036A92E65B" +
+ "BB52280990A2FA27883998D72AF30161",
+ "0000000255",
+ "97151B4C76945063E2EB0529DC067D97" +
+ "D7BBA90776D8126D91F34F3101AEA8BA"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_CAMELLIA128_CTS_CMAC_299() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.CAMELLIA128_CTS_CMAC,
+ "57D0297298FFD9D35DE5A47FB4BDE24B",
+ "0000000299",
+ "D155775A209D05F02B38D42A389E5A56"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_CAMELLIA128_CTS_CMAC_2AA() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.CAMELLIA128_CTS_CMAC,
+ "57D0297298FFD9D35DE5A47FB4BDE24B",
+ "00000002AA",
+ "64DF83F85A532F17577D8C37035796AB"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_CAMELLIA128_CTS_CMAC_255() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.CAMELLIA128_CTS_CMAC,
+ "57D0297298FFD9D35DE5A47FB4BDE24B",
+ "0000000255",
+ "3E4FBDF30FB8259C425CB6C96F1F4635"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_CAMELLIA256_CTS_CMAC_299() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.CAMELLIA256_CTS_CMAC,
+ "B9D6828B2056B7BE656D88A123B1FAC6" +
+ "8214AC2B727ECF5F69AFE0C4DF2A6D2C",
+ "0000000299",
+ "E467F9A9552BC7D3155A6220AF9C1922" +
+ "0EEED4FF78B0D1E6A1544991461A9E50"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_CAMELLIA256_CTS_CMAC_2AA() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.CAMELLIA256_CTS_CMAC,
+ "B9D6828B2056B7BE656D88A123B1FAC6" +
+ "8214AC2B727ECF5F69AFE0C4DF2A6D2C",
+ "00000002AA",
+ "412AEFC362A7285FC3966C6A5181E760" +
+ "5AE675235B6D549FBFC9AB6630A4C604"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_CAMELLIA256_CTS_CMAC_255() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.CAMELLIA256_CTS_CMAC,
+ "B9D6828B2056B7BE656D88A123B1FAC6" +
+ "8214AC2B727ECF5F69AFE0C4DF2A6D2C",
+ "0000000255",
+ "FA624FA0E523993FA388AEFDC67E67EB" +
+ "CD8C08E8A0246B1D73B0D1DD9FC582B0"
+ ));
+ }
static DkKeyMaker getKeyMaker(EncryptionType encType) {
switch (encType) {
@@ -189,41 +238,26 @@ public class KeyDeriveTest {
}
}
- @Test
- public void testDeriveKeys() {
- boolean overallResult = true;
-
- for (TestCase tc : testCases) {
- System.err.println("Key deriving test for " + tc.encType.getName());
- try {
- if (! testWith(tc)) {
- overallResult = false;
- }
- } catch (Exception e) {
- e.printStackTrace();
- overallResult = false;
- }
- }
-
- if (!overallResult) {
- fail(null);
- }
- }
-
- private boolean testWith(TestCase testCase) throws Exception {
- byte[] answer = HexUtil.hex2bytes(testCase.answer);
+ /**
+ * Perform key derive tests using the testCase data object
+ * @param testCase
+ * @throws Exception
+ */
+ private static void performTest(TestCase testCase) throws Exception {
+ byte[] answer = HexUtil.hex2bytes(testCase.answer);
byte[] inkey = HexUtil.hex2bytes(testCase.inkey);
byte[] constant = HexUtil.hex2bytes(testCase.constant);
byte[] outkey;
-
+
DkKeyMaker km = getKeyMaker(testCase.encType);
outkey = km.dk(inkey, constant);
if (! Arrays.equals(answer, outkey)) {
System.err.println("failed with:");
System.err.println("outKey:" + HexUtil.bytesToHex(outkey));
System.err.println("answer:" + testCase.answer);
- return false;
- }
- return true;
+ fail("KeyDerive test failed for " + testCase.encType.getName());
+ } else {
+ System.out.println("KeyDerive test OK for " + testCase.encType.getName());
+ }
}
}