aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoremboss <emboss@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-08-02 01:58:49 +0000
committeremboss <emboss@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-08-02 01:58:49 +0000
commitdf05bd2c82386e5897c4125576199e18a13712a1 (patch)
tree1c6ab845fefc796b3f77ef7cb0d8da1e698d3fe5
parentcc59a581f1db0ffc6e8cac93cae50202e1ab81a8 (diff)
downloadruby-df05bd2c82386e5897c4125576199e18a13712a1.tar.gz
* ext/openssl/lib/openssl/digest.rb
test/openssl/test_digest.rb: Add Digest module function to OpenSSL module and test it. Patch provided by Eric Hodel. [ruby-core:46908][Feature #6819] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36592 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog7
-rw-r--r--ext/openssl/lib/openssl/digest.rb17
-rw-r--r--test/openssl/test_digest.rb8
3 files changed, 32 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index ce7ca9ecbf..b2d7c77431 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Thu Aug 2 10:51:12 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/lib/openssl/digest.rb
+ test/openssl/test_digest.rb: Add Digest module function to OpenSSL
+ module and test it. Patch provided by Eric Hodel.
+ [ruby-core:46908][Feature #6819]
+
Wed Aug 1 22:29:12 2012 Benoit Daloze <eregontp@gmail.com>
ext/digest/digest.c (hexencode_str_new): return an ASCII string
diff --git a/ext/openssl/lib/openssl/digest.rb b/ext/openssl/lib/openssl/digest.rb
index b47007165c..43c9974920 100644
--- a/ext/openssl/lib/openssl/digest.rb
+++ b/ext/openssl/lib/openssl/digest.rb
@@ -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
diff --git a/test/openssl/test_digest.rb b/test/openssl/test_digest.rb
index 81085d2c9c..86c30d973c 100644
--- a/test/openssl/test_digest.rb
+++ b/test/openssl/test_digest.rb
@@ -103,6 +103,14 @@ class OpenSSL::TestDigest < Test::Unit::TestCase
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)