RFR : 8054019 Keytool Error publicKey's is not X.509, but X509

Seán Coffey sean.coffey at oracle.com
Tue Sep 2 16:41:51 UTC 2014


On 02/09/2014 17:17, Sean Mullan wrote:
> That seems fine to me. While you are in there, it would also be nice 
> to fix the grammar of the exception message, ex:
>
> "public key format is " + publicKey.getFormat() + ", must be 
> X.509/X509");
Will do.

Thought about adding X.509 to message that but the correct format is 
"X.509" only.
I think it's best for an exception message to promote the correct format :

"Public key format is " + publicKey.getFormat() + ", must be X.509");

I'll go ahead with that unless I hear otherwise. Will log a bug 8u/9 also.

regards,
Sean.
>
> and open another bug to correct that in JDK 9.
>
> Thanks,
> Sean
>
> On 09/02/2014 11:52 AM, Seán Coffey wrote:
>> I'd like to bring this change into 7u only. The 7u40 7109096 fix 
>> introduced
>> tighter conditions around Key.getFormat(). Some interoperability issues
>> have been seen for key generators that mightn't strictly honour the
>> ASN.1 data format of X509 keys.
>>
>> As a result, I don't think the restriction was suitable for an update
>> release
>> and we should relax it :
>>
>> https://bugs.openjdk.java.net/browse/JDK-8054019
>>> diff --git a/src/share/classes/sun/security/x509/CertAndKeyGen.java
>>> b/src/share/classes/sun/security/x509/CertAndKeyGen.java
>>> --- a/src/share/classes/sun/security/x509/CertAndKeyGen.java
>>> +++ b/src/share/classes/sun/security/x509/CertAndKeyGen.java
>>> @@ -1,5 +1,5 @@
>>>  /*
>>> - * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights
>>> reserved.
>>> + * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights
>>> reserved.
>>>   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
>>>   *
>>>   * This code is free software; you can redistribute it and/or 
>>> modify it
>>> @@ -156,7 +156,9 @@
>>>
>>>          // publicKey's format must be X.509 otherwise
>>>          // the whole CertGen part of this class is broken.
>>> -        if (!"X.509".equalsIgnoreCase(publicKey.getFormat())) {
>>> +        // Allow "X509" in 7u for backwards compatibility.
>>> +        if (!"X.509".equalsIgnoreCase(publicKey.getFormat()) &&
>>> +            !"X509".equalsIgnoreCase(publicKey.getFormat())) {
>>>              throw new IllegalArgumentException("publicKey's is not
>>> X.509, but "
>>>                      + publicKey.getFormat());
>>>          }
>>
>> Regards,
>> Sean.
>>




More information about the security-dev mailing list