Thanks for the review~

Your point is valid for default configuration. But in the rare case where the new jdk.security.provider.preferred property is set, the most preferred provider may not be the one which supplied the digest object for the generic getInstance() call.

So, instead of removing the first provider, I added a check to skip calling getInstance() if the provider name comparison matched.
Webrev updated at: http://cr.openjdk.java.net/~valeriep/8157579/webrev.01/

Thanks,
Valerie

On 8/5/2016 4:02 AM, Vincent Ryan wrote:
Your fix looks good. One comment is that you could trim the Provider[] to 
exclude the most-preferred provider (at index=0).
Thanks.


On 5 Aug 2016, at 03:01, Valerie Peng <valerie.p...@oracle.com> wrote:


Anyone has time to review this fix? The code change is in only one file and 
straightforward if you agree with the approach.
Starting S11.3 and S12, OracleUcrypto provider switched to new Ucrypto APIs for 
message digest operations and there is no clone support.
This affects the MAC impls of SunJCE provider which delegates the digest 
operation to the most preferred provider.
To ensure the clone support, I will switch to getting the digest impl from SUN 
provider if the most preferred one does not.
In the case of SUN provider is not available, it will then goes through 
provider list.

Bug: https://bugs.openjdk.java.net/browse/JDK-8157579
Webrev: http://cr.openjdk.java.net/~valeriep/8157579/webrev.00/

No new test as it's covered by existing regression test.

Thanks,
Valerie



Reply via email to