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 >