Code Review Request 8049321 Support SHA256WithDSA in JSSE
Sean Mullan
sean.mullan at oracle.com
Fri Dec 18 21:04:16 UTC 2015
This explanation makes sense to me and the fix looks fine.
--Sean
On 12/17/2015 01:51 AM, Xuelei Fan wrote:
> On 12/17/2015 7:52 AM, Bradford Wetmore wrote:
>>
>>
>> On 12/16/2015 3:22 PM, Xuelei Fan wrote:
>>> On 12/17/2015 3:14 AM, Bradford Wetmore wrote:
>>>> The change itself looks ok, but a question on the previous code.
>>>>
>>>> 420: Why is SHA224 disabled when SunMSCAPI is present? Or
>>>> alternatively, why is SHA224 enabled when SunMSCAPI not present?
>>> SunMSCAPI does not support SHA-224 yet.
>>
>> That was my guess, however...
>>
>>>> Shouldn't this be based on whether there is a SHA224 implementation
>>>> available?
>>> The SHA-224 is always available with JDK providers. But SHA224withRSA
>>> and SHA224withDSA does not work for SunMSCAPI. So we need to filter out
>>> SHA-224 for SunMSCAPI.
>>
>> if (Security.getProvider("SunMSCAPI") == null) {
>> supports(HashAlgorithm.SHA224, SignatureAlgorithm.DSA,
>> "SHA224withDSA", --p);
>>
>> Those two algs are always being filtered out regardless of whether other
>> providers might support it. For all platforms, the Sun provider is
>> available for SHA224withDSA/SHA256withDSA, right?
>>
>> map.put("Signature.SHA224withDSA",
>> "sun.security.provider.DSA$SHA224withDSA");
>> map.put("Signature.SHA256withDSA",
>> "sun.security.provider.DSA$SHA256withDSA");
>>
>> So if SunMSCAPI is registered as an active provider (on a Windows
>> platform), SHA224/SHA256 will be disabled. This doesn't seem right.
>>
> Right. It is a compromise solution to remove SHA224 completely, even
> other providers support it. If SHA224withRSA is enabled, and SunMSCAPI
> is preferred at the same time, there is a problem per current
> implementation. During TLS handshaking process, RSA private will be
> used in SunMSCAPI provider at first (for example, for server
> authentication cert), and then SHA224withRSA in other providers (Say
> SunJCE) will be used for signature. However, as the RSA private key is
> in MSCAPI, no way to use SHA224withRSA in providers other than SunMSCAP.
> Problem happens, see JDK-8064330.
>
> We might want to take SHA224withRSA back later if required.
>
>>>> And if so, why are we not verifying that an implementation
>>>> exists (getInstance("SHA256") doesn't throw exception) for the other
>>>> algorithms also (SHA1/RSA/etc)?
>>>>
>>> Need to check the full signature name. But no checking at present as
>>> these algorithms are supported by JDK providers except the SHA-224 based
>>> ones. May make improvement later.
>>
>> This does require that at least the Sun provider always be available then.
>>
> May be, if SunJCE is used.
>
> Thanks,
> Xuelei
>
>> Brad
>>
>>
>>
>>>
>>> Thanks,
>>> Xuelei
>>>
>>>> The synopsis should probably be:
>>>>
>>>> Support SHA224withDSA/SHA256withDSA in TLSv1.2 \
>>>> signature_algorithms extension
>>>>
>>>> Also, note the case of the "W" in "SHA256WithDSA".
>>>>
>>>> Brad
>>>>
>>>>
>>>> On 12/14/2015 9:47 PM, Xuelei Fan wrote:
>>>>> On 12/15/2015 1:40 PM, Xuelei Fan wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Please this enhancement to the JSSE implementation:
>>>>>>
>>>>> Please review this enhancement to the JSSE implementation:
>>>>>
>>>>>> http://cr.openjdk.java.net/~xuelei/8049321/webrev.00/
>>>>>>
>>>>>> This change will add support for the SHA224withDSA and SHA256withDSA
>>>>>> algorithms in the TLS "signature_algorithms" extension in the SunJSSE
>>>>>> provider. Note that this extension does not apply to TLS 1.1 and
>>>>>> previous versions.
>>>>>>
>>>>>> Thanks,
>>>>>> Xuelei
>>>>>>
>>>>>
>>>
>
More information about the security-dev
mailing list