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/04/23 10:39:09 UTC

[1/2] directory-kerby git commit: DIRKRB-218 Implement prf function in Rc4HmacEnc. Contributed by Yaning

Repository: directory-kerby
Updated Branches:
  refs/heads/master a5d42a1c1 -> 39ce32731


DIRKRB-218 Implement prf function in Rc4HmacEnc. Contributed by Yaning


Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/994f4f0f
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/994f4f0f
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/994f4f0f

Branch: refs/heads/master
Commit: 994f4f0f48b66f1e880357a343af22eab89dc8bf
Parents: a5d42a1
Author: Drankye <dr...@gmail.com>
Authored: Fri Apr 24 00:24:13 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Fri Apr 24 00:24:13 2015 +0800

----------------------------------------------------------------------
 .../kerberos/kerb/crypto/enc/Rc4HmacEnc.java    | 14 +++++++-------
 .../kerby/kerberos/kerb/crypto/PrfTest.java     | 20 ++++++++++++++++++++
 2 files changed, 27 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/994f4f0f/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacEnc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacEnc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacEnc.java
index 2080b7f..0b58f4f 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacEnc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacEnc.java
@@ -6,20 +6,21 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- *  
+ *
  *    http://www.apache.org/licenses/LICENSE-2.0
- *  
+ *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  *  KIND, either express or implied.  See the License for the
  *  specific language governing permissions and limitations
  *  under the License. 
- *  
+ *
  */
 package org.apache.kerby.kerberos.kerb.crypto.enc;
 
 import org.apache.kerby.kerberos.kerb.KrbErrorCode;
+import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Sha1Provider;
 import org.apache.kerby.kerberos.kerb.crypto.util.BytesUtil;
 import org.apache.kerby.kerberos.kerb.crypto.util.Confounder;
 import org.apache.kerby.kerberos.kerb.crypto.util.Rc4;
@@ -49,9 +50,8 @@ public class Rc4HmacEnc extends AbstractEncTypeHandler {
     }
 
     @Override
-    public byte[] prf(byte[] key, byte[] seed) {
-        // TODO: krb5int_arcfour_prf
-        return null;
+    public byte[] prf(byte[] key, byte[] seed) throws KrbException {
+        return Hmac.hmac(new Sha1Provider(), key, seed, 20);
     }
 
     @Override
@@ -69,7 +69,7 @@ public class Rc4HmacEnc extends AbstractEncTypeHandler {
     }
 
     protected void encryptWith(byte[] workBuffer, int[] workLens,
-         byte[] key, byte[] iv, int usage) throws KrbException {
+                               byte[] key, byte[] iv, int usage) throws KrbException {
         int confounderLen = workLens[0];
         int checksumLen = workLens[1];
         int dataLen = workLens[2];

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/994f4f0f/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/PrfTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/PrfTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/PrfTest.java
index 32b7771..6a53576 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/PrfTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/PrfTest.java
@@ -126,6 +126,26 @@ public class PrfTest {
         ));
     }
 
+    @Test
+    public void testPrf_RC4_HMAC() throws Exception {
+        performTest(new TestCase(
+                EncryptionType.RC4_HMAC,
+                "key1",
+                "0161",
+                "c882f5310c3b65e4b99c19709d986dedc154f234"
+        ));
+    }
+
+    @Test
+    public void testPrf_RC4_HMAC_EXP() throws Exception {
+        performTest(new TestCase(
+                EncryptionType.RC4_HMAC_EXP,
+                "key1",
+                "0161",
+                "c882f5310c3b65e4b99c19709d986dedc154f234"
+        ));
+    }
+
     private static void performTest(TestCase testCase) throws Exception {
         byte[] keyData = EncryptionHandler.getEncHandler(testCase.encType).str2key(testCase.keyData, testCase.keyData, null);
         byte[] seed = HexUtil.hex2bytes(testCase.seed);


[2/2] directory-kerby git commit: DIRKRB-219 Implement random2Key function in Rc4KeyMaker. Contributed by Yaning

Posted by dr...@apache.org.
DIRKRB-219 Implement random2Key function in Rc4KeyMaker. Contributed by Yaning


Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/39ce3273
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/39ce3273
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/39ce3273

Branch: refs/heads/master
Commit: 39ce327318dfe1d52726f4778bb3d23c6ecbfbf2
Parents: 994f4f0
Author: Drankye <dr...@gmail.com>
Authored: Fri Apr 24 00:28:12 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Fri Apr 24 00:28:12 2015 +0800

----------------------------------------------------------------------
 .../apache/kerby/kerberos/kerb/crypto/key/Rc4KeyMaker.java  | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/39ce3273/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Rc4KeyMaker.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Rc4KeyMaker.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Rc4KeyMaker.java
index 85e8ba2..c362aad 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Rc4KeyMaker.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Rc4KeyMaker.java
@@ -49,4 +49,11 @@ public class Rc4KeyMaker extends AbstractKeyMaker {
         }
     }
 
-}
+    @Override
+    public byte[] random2Key(byte[] randomBits) throws KrbException {
+        if (randomBits.length != encProvider().keyInputSize()) {
+            throw new KrbException("Invalid random bits, not of correct bytes size");
+        }
+        return randomBits;
+    }
+}
\ No newline at end of file