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