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/01/12 14:06:48 UTC
[40/50] [abbrv] directory-kerberos git commit: Cleanup a bit
Cleanup a bit
Project: http://git-wip-us.apache.org/repos/asf/directory-kerberos/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerberos/commit/e11e7f1b
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerberos/tree/e11e7f1b
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerberos/diff/e11e7f1b
Branch: refs/heads/master
Commit: e11e7f1b8167358617a495e1755a5a34216dac7c
Parents: 5224d81
Author: Drankye <dr...@gmail.com>
Authored: Fri Dec 26 10:21:59 2014 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Fri Dec 26 10:21:59 2014 +0800
----------------------------------------------------------------------
.../org/apache/kerberos/kerb/crypto/Cmac.java | 3 ++
.../org/apache/kerberos/kerb/crypto/Hmac.java | 30 +++++++++++++-------
2 files changed, 23 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/e11e7f1b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/Cmac.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/Cmac.java b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/Cmac.java
index d59909d..7f7d333 100644
--- a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/Cmac.java
+++ b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/Cmac.java
@@ -5,6 +5,9 @@ import org.apache.kerberos.kerb.KrbException;
import java.util.Arrays;
+/**
+ * Based on MIT krb5 cmac.c
+ */
public class Cmac {
private static byte[] constRb = {
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/e11e7f1b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/Hmac.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/Hmac.java b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/Hmac.java
index 486f6e1..02e8567 100644
--- a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/Hmac.java
+++ b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/Hmac.java
@@ -3,6 +3,11 @@ package org.apache.kerberos.kerb.crypto;
import org.apache.kerberos.kerb.crypto.cksum.HashProvider;
import org.apache.kerberos.kerb.KrbException;
+import java.util.Arrays;
+
+/**
+ * Based on MIT krb5 hmac.c
+ */
public class Hmac {
public static byte[] hmac(HashProvider hashProvider, byte[] key,
@@ -28,23 +33,28 @@ public class Hmac {
byte[] key, byte[] data, int start, int len) throws KrbException {
int blockLen = hashProvider.blockSize();
- byte[] ipad = new byte[blockLen];
- byte[] opad = new byte[blockLen];
-
- int ki;
- for (int i = 0; i < blockLen; i++) {
- ki = (i < key.length) ? key[i] : 0;
- ipad[i] = (byte)(ki ^ 0x36);
- opad[i] = (byte)(ki ^ 0x5c);
+ byte[] innerPaddedKey = new byte[blockLen];
+ byte[] outerPaddedKey = new byte[blockLen];
+
+ // Create the inner padded key
+ Arrays.fill(innerPaddedKey, (byte)0x36);
+ for (int i = 0; i < key.length; i++) {
+ innerPaddedKey[i] ^= key[i];
+ }
+
+ // Create the outer padded key
+ Arrays.fill(outerPaddedKey, (byte)0x5c);
+ for (int i = 0; i < key.length; i++) {
+ outerPaddedKey[i] ^= key[i];
}
- hashProvider.hash(ipad);
+ hashProvider.hash(innerPaddedKey);
hashProvider.hash(data, start, len);
byte[] tmp = hashProvider.output();
- hashProvider.hash(opad);
+ hashProvider.hash(outerPaddedKey);
hashProvider.hash(tmp);
tmp = hashProvider.output();