diff --git a/src/main/java/org/jruby/ext/openssl/SecurityHelper.java b/src/main/java/org/jruby/ext/openssl/SecurityHelper.java index 1bf14bfc..05c33b32 100644 --- a/src/main/java/org/jruby/ext/openssl/SecurityHelper.java +++ b/src/main/java/org/jruby/ext/openssl/SecurityHelper.java @@ -355,11 +355,14 @@ static KeyStore getKeyStore(final String type, final Provider provider) */ public static MessageDigest getMessageDigest(final String algorithm) throws NoSuchAlgorithmException { try { + return MessageDigest.getInstance(algorithm); + } catch (NoSuchAlgorithmException nsae) { + // try reflective logic final Provider provider = getSecurityProviderIfAccessible(); if ( provider != null ) return getMessageDigest(algorithm, provider); + + throw nsae; // give up } - catch (NoSuchAlgorithmException e) { } - return MessageDigest.getInstance(algorithm); } @SuppressWarnings("unchecked")