summaryrefslogtreecommitdiff
path: root/ext/openssl/ossl_digest.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/openssl/ossl_digest.c')
-rw-r--r--ext/openssl/ossl_digest.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/ext/openssl/ossl_digest.c b/ext/openssl/ossl_digest.c
index 30478911ba..9b8ced5233 100644
--- a/ext/openssl/ossl_digest.c
+++ b/ext/openssl/ossl_digest.c
@@ -37,25 +37,18 @@ GetDigestPtr(VALUE obj)
{
const EVP_MD *md;
- if (TYPE(obj) == T_CLASS) {
- EVP_MD_CTX *ctx;
- VALUE digest = rb_funcall(obj, rb_intern("new"), 0, 0);
-
- SafeGetDigest(digest, ctx);
+ if (TYPE(obj) == T_STRING) {
+ const char *name = StringValueCStr(obj);
- md = EVP_MD_CTX_md(ctx);
- } else if (rb_obj_is_kind_of(obj, cDigest)) {
+ md = EVP_get_digestbyname(name);
+ if (!md)
+ ossl_raise(rb_eRuntimeError, "Unsupported digest algorithm (%s).", name);
+ } else {
EVP_MD_CTX *ctx;
SafeGetDigest(obj, ctx);
md = EVP_MD_CTX_md(ctx);
- } else {
- const char *name = StringValueCStr(obj);
-
- md = EVP_get_digestbyname(name);
- if (!md)
- ossl_raise(rb_eRuntimeError, "Unsupported digest algorithm (%s).", name);
}
return md;