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 11:13:23 UTC
[1/3] directory-kerby git commit: DIRKRB-220 Fix random2Key function
in Des3KeyMaker. Contributed by Yaning
Repository: directory-kerby
Updated Branches:
refs/heads/master 39ce32731 -> 7a1670bfd
DIRKRB-220 Fix random2Key function in Des3KeyMaker. 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/984653a2
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/984653a2
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/984653a2
Branch: refs/heads/master
Commit: 984653a23c2b2ba66cb388d089764d04f2dda20e
Parents: 39ce327
Author: Drankye <dr...@gmail.com>
Authored: Fri Apr 24 01:04:05 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Fri Apr 24 01:04:05 2015 +0800
----------------------------------------------------------------------
.../kerberos/kerb/crypto/key/Des3KeyMaker.java | 21 +++++++++++++++++++-
.../kerberos/kerb/crypto/key/Rc4KeyMaker.java | 2 +-
2 files changed, 21 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/984653a2/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Des3KeyMaker.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Des3KeyMaker.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Des3KeyMaker.java
index 28c29ac..9c1ef68 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Des3KeyMaker.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Des3KeyMaker.java
@@ -38,6 +38,21 @@ public class Des3KeyMaker extends DkKeyMaker {
return dk(tmpKey, KERBEROS_CONSTANT);
}
+ /**
+ * To turn a 54-bit block into a 64-bit block, see
+ * Ref. eighth_byte in random_to_key.c in MIT krb5
+ * @param bits56
+ * @return
+ */
+ private static byte[] getEightBits(byte[] bits56){
+ byte[] bits64 = new byte[8];
+ System.arraycopy(bits56, 0, bits64, 0, 7);
+ bits64[7] = (byte) (((bits56[0] & 1) << 1) | ((bits56[1] & 1) << 2) | ((bits56[2] & 1) << 3) |
+ ((bits56[3] & 1) << 4) | ((bits56[4] & 1) << 5) | ((bits56[5] & 1) << 6) |
+ ((bits56[6] & 1) << 7));
+ return bits64;
+ }
+
@Override
public byte[] random2Key(byte[] randomBits) throws KrbException {
if (randomBits.length != encProvider().keyInputSize()) {
@@ -49,10 +64,14 @@ public class Des3KeyMaker extends DkKeyMaker {
* 8 key bytes, then compute the parity bits. Do this three times.
*/
byte[] key = new byte[encProvider().keySize()];
+ byte[] tmp1 = new byte[7];
+ byte[] tmp2;
for (int i = 0; i < 3; i++) {
System.arraycopy(randomBits, i * 7, key, i * 8, 7);
+ System.arraycopy(randomBits, i * 7, tmp1, 0, 7);
+ tmp2 = getEightBits(tmp1);
+ key[8 * (i + 1) - 1] = tmp2[7];
int nthByte = i * 8;
-
key[nthByte + 7] = (byte) (((key[nthByte + 0] & 1) << 1) |
((key[nthByte + 1] & 1) << 2) |
((key[nthByte + 2] & 1) << 3) |
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/984653a2/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 c362aad..237b510 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
@@ -56,4 +56,4 @@ public class Rc4KeyMaker extends AbstractKeyMaker {
}
return randomBits;
}
-}
\ No newline at end of file
+}
[3/3] directory-kerby git commit: DIRKRB-222 Implement a new
random2Key function in EncryptionHandler. Contributed by Yaning
Posted by dr...@apache.org.
DIRKRB-222 Implement a new random2Key function in EncryptionHandler. 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/7a1670bf
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/7a1670bf
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/7a1670bf
Branch: refs/heads/master
Commit: 7a1670bfdc0b7b4e6e21063e7ea806d96699e496
Parents: d633b46
Author: Drankye <dr...@gmail.com>
Authored: Fri Apr 24 01:10:04 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Fri Apr 24 01:10:04 2015 +0800
----------------------------------------------------------------------
.../kerby/kerberos/kerb/crypto/EncryptionHandler.java | 9 +++++++++
1 file changed, 9 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7a1670bf/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncryptionHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncryptionHandler.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncryptionHandler.java
index 4c95ea5..408ae0f 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncryptionHandler.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncryptionHandler.java
@@ -200,6 +200,15 @@ public class EncryptionHandler {
return encKey;
}
+ public static EncryptionKey random2Key(EncryptionType eType, byte[] randomBytes) throws KrbException {
+ EncTypeHandler handler = getEncHandler(eType);
+
+ byte[] randomBytes1 = randomBytes;
+ byte[] keyBytes = handler.random2Key(randomBytes1);
+ EncryptionKey encKey = new EncryptionKey(eType, keyBytes);
+ return encKey;
+ }
+
/**
* Generate a secure and random key seeded with an existing encryption key.
* @param encKey
[2/3] directory-kerby git commit: DIRKRB-221 Fix rand2Key function in
DesKeyMaker. Contributed by Yaning
Posted by dr...@apache.org.
DIRKRB-221 Fix rand2Key function in DesKeyMaker. 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/d633b46a
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/d633b46a
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/d633b46a
Branch: refs/heads/master
Commit: d633b46a10a72a4cfbb4094f4e5fffe12ba17937
Parents: 984653a
Author: Drankye <dr...@gmail.com>
Authored: Fri Apr 24 01:07:32 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Fri Apr 24 01:07:32 2015 +0800
----------------------------------------------------------------------
.../kerberos/kerb/crypto/key/DesKeyMaker.java | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/d633b46a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DesKeyMaker.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DesKeyMaker.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DesKeyMaker.java
index d8e01d9..edc5b9c 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DesKeyMaker.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DesKeyMaker.java
@@ -139,6 +139,21 @@ public class DesKeyMaker extends AbstractKeyMaker {
}
/**
+ * To turn a 54-bit block into a 64-bit block, see
+ * Ref. eighth_byte in random_to_key.c in MIT krb5
+ * @param bits56
+ * @return
+ */
+ private static byte[] getEightBits(byte[] bits56){
+ byte[] bits64 = new byte[8];
+ System.arraycopy(bits56, 0, bits64, 0, 7);
+ bits64[7] = (byte) (((bits56[0] & 1) << 1) | ((bits56[1] & 1) << 2) | ((bits56[2] & 1) << 3) |
+ ((bits56[3] & 1) << 4) | ((bits56[4] & 1) << 5) | ((bits56[5] & 1) << 6) |
+ ((bits56[6] & 1) << 7));
+ return bits64;
+ }
+
+ /**
* Note this isn't hit any test yet, and very probably problematic
*/
@Override
@@ -146,13 +161,14 @@ public class DesKeyMaker extends AbstractKeyMaker {
if (randomBits.length != encProvider().keyInputSize()) {
throw new KrbException("Invalid random bits, not of correct bytes size");
}
-
- byte[] keyBytes = addParityBits(randomBits);
+ byte[] keyBytes = getEightBits(randomBits);
+ addParity(keyBytes);
keyCorrection(keyBytes);
return keyBytes;
}
+
// Processing an 8bytesblock
private static byte[] removeMSBits(byte[] bits56) {
/**