Oh, I take back the "mutates the internal" words, it didn't. algName is only a 
local variable.

So the major problem of the current code is that while getName() is modified to 
return the "full" signature algorithm name, getEncodedParams() still returns it.

I realized my fix does have the problem that AlgorithmId.parse(input).encode() 
will be different from input, but making change at the root is still better 
than recognizing specifiedWithECDSA_oid and ignoring parameters everywhere.

Thanks,
Max


> On Dec 21, 2019, at 7:23 PM, Weijun Wang <weijun.w...@oracle.com> wrote:
> 
> Please take a review at
> 
>   http://cr.openjdk.java.net/~weijun/8236470/webrev.00/
> 
> The current implementation is not good at dealing with ECDSA specified by 
> ecdsa-with-SHA2 plus a hash algorithm. While the AlgorithmId::getName is able 
> to return the "full" signature algorithm name, it mutates the internal, 
> cannot be guaranteed to be called, and leaves the parameters unchanged. This 
> fix move the logic to AlgorithmId::parse and the class becomes practically 
> immutable.
> 
> For Oracle internal reviewers: An update is made to the test also. The closed 
> path has been wrong since the repo consolidation. We do have such certs in 
> the closed area.
> 
> Thanks,
> Max
> 

Reply via email to