diff options
author | weijun <unknown> | 2019-07-04 07:25:11 +0800 |
---|---|---|
committer | bell-sw <liberica@bell-sw.com> | 2020-01-19 09:13:18 +0300 |
commit | 1e3abe6e865b9ee6673223fbd22207a0a8ad9dfa (patch) | |
tree | 4ea0125a7b2700e7ee52dedf24369fd6f75d5898 | |
parent | 1be5f4ecbee488823fdcc6f64709cd41bc3decc4 (diff) | |
download | jdk8u_jdk-1e3abe6e865b9ee6673223fbd22207a0a8ad9dfa.tar.gz |
8227061: KDC.java test behaves incorrectly when AS-REQ contains a PAData not PA-ENC-TS-ENC
Reviewed-by: mullan
-rw-r--r-- | test/sun/security/krb5/auto/KDC.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/test/sun/security/krb5/auto/KDC.java b/test/sun/security/krb5/auto/KDC.java index af8fca976a..247d418453 100644 --- a/test/sun/security/krb5/auto/KDC.java +++ b/test/sun/security/krb5/auto/KDC.java @@ -1279,7 +1279,17 @@ public class KDC { PAData[] inPAs = KDCReqDotPAData(asReq); List<PAData> enc_outPAs = new ArrayList<>(); - if (inPAs == null || inPAs.length == 0) { + + byte[] paEncTimestamp = null; + if (inPAs != null) { + for (PAData inPA : inPAs) { + if (inPA.getType() == Krb5.PA_ENC_TIMESTAMP) { + paEncTimestamp = inPA.getValue(); + } + } + } + + if (paEncTimestamp == null) { Object preauth = options.get(Option.PREAUTH_REQUIRED); if (preauth == null || preauth.equals(Boolean.TRUE)) { throw new KrbException(Krb5.KDC_ERR_PREAUTH_REQUIRED); @@ -1288,7 +1298,7 @@ public class KDC { EncryptionKey pakey = null; try { EncryptedData data = newEncryptedData( - new DerValue(inPAs[0].getValue())); + new DerValue(paEncTimestamp)); pakey = keyForUser(body.cname, data.getEType(), false); data.decrypt(pakey, KeyUsage.KU_PA_ENC_TS); } catch (Exception e) { |