提交 8c93a6d1 编写于 作者: W weijun

8025124: InitialToken.useNullKey incorrectly applies NULL_KEY in some cases

Reviewed-by: xuelei
上级 30c1a397
...@@ -277,26 +277,19 @@ abstract class InitialToken extends Krb5Token { ...@@ -277,26 +277,19 @@ abstract class InitialToken extends Krb5Token {
byte[] credBytes = new byte[credLen]; byte[] credBytes = new byte[credLen];
System.arraycopy(checksumBytes, 28, credBytes, 0, credLen); System.arraycopy(checksumBytes, 28, credBytes, 0, credLen);
CipherHelper cipherHelper = context.getCipherHelper(key);
if (useNullKey(cipherHelper)) {
delegCreds =
new KrbCred(credBytes, EncryptionKey.NULL_KEY).
getDelegatedCreds()[0];
} else {
KrbCred cred; KrbCred cred;
try { try {
cred = new KrbCred(credBytes, key); cred = new KrbCred(credBytes, key);
} catch (KrbException e) { } catch (KrbException ke) {
if (subKey != null) { if (subKey != null) {
cred = new KrbCred(credBytes, subKey); cred = new KrbCred(credBytes, subKey);
} else { } else {
throw e; throw ke;
} }
} }
delegCreds = cred.getDelegatedCreds()[0]; delegCreds = cred.getDelegatedCreds()[0];
} }
} }
}
// check if KRB-CRED message should use NULL_KEY for encryption // check if KRB-CRED message should use NULL_KEY for encryption
private boolean useNullKey(CipherHelper ch) { private boolean useNullKey(CipherHelper ch) {
......
...@@ -119,7 +119,7 @@ public class KrbCred { ...@@ -119,7 +119,7 @@ public class KrbCred {
return credMessg; return credMessg;
} }
// Used in InitialToken, key always NULL_KEY // Used in InitialToken, NULL_KEY might be used
public KrbCred(byte[] asn1Message, EncryptionKey key) public KrbCred(byte[] asn1Message, EncryptionKey key)
throws KrbException, IOException { throws KrbException, IOException {
...@@ -127,6 +127,9 @@ public class KrbCred { ...@@ -127,6 +127,9 @@ public class KrbCred {
ticket = credMessg.tickets[0]; ticket = credMessg.tickets[0];
if (credMessg.encPart.getEType() == 0) {
key = EncryptionKey.NULL_KEY;
}
byte[] temp = credMessg.encPart.decrypt(key, byte[] temp = credMessg.encPart.decrypt(key,
KeyUsage.KU_ENC_KRB_CRED_PART); KeyUsage.KU_ENC_KRB_CRED_PART);
byte[] plainText = credMessg.encPart.reset(temp); byte[] plainText = credMessg.encPart.reset(temp);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册