Index: ext/openssl/lib/openssl/digest.rb =================================================================== --- ext/openssl/lib/openssl/digest.rb (revision 36588) +++ ext/openssl/lib/openssl/digest.rb (working copy) @@ -68,5 +68,22 @@ module OpenSSL end end # Digest + + # Returns a Digest subclass by +name+. + # + # require 'openssl' + # + # OpenSSL::Digest("MD5") + # # => OpenSSL::Digest::MD5 + # + # Digest("Foo") + # # => NameError: wrong constant name Foo + + def Digest(name) + OpenSSL::Digest.const_get(name) + end + + module_function :Digest + end # OpenSSL Index: test/openssl/test_digest.rb =================================================================== --- test/openssl/test_digest.rb (revision 36588) +++ test/openssl/test_digest.rb (working copy) @@ -103,6 +103,14 @@ class OpenSSL::TestDigest < Test::Unit:: end end + def test_openssl_digest + assert_equal OpenSSL::Digest::MD5, OpenSSL::Digest("MD5") + + assert_raises NameError do + OpenSSL::Digest("no such digest") + end + end + private def check_digest(oid)