From bf8535642227db6f4d782f5eb2a0f23805192505 Mon Sep 17 00:00:00 2001 From: gotoyuzo Date: Sat, 10 Sep 2005 00:57:20 +0000 Subject: * ext/openssl/lib/digest.rb: added SHA224, SHA256, SHA384 and SHA512. these features are enabled if this library is compiled with OpenSSL 0.9.8 or later. * test/openssl/test_digest.rb: add test for new digests. git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@9111 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/openssl/lib/openssl/digest.rb | 9 +++++++-- test/openssl/test_digest.rb | 9 +++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ext/openssl/lib/openssl/digest.rb b/ext/openssl/lib/openssl/digest.rb index 58622f543..5745661c3 100644 --- a/ext/openssl/lib/openssl/digest.rb +++ b/ext/openssl/lib/openssl/digest.rb @@ -21,8 +21,13 @@ module OpenSSL module Digest - %w(DSS DSS1 MD2 MD4 MD5 MDC2 RIPEMD160 SHA SHA1).each{|digest| - eval(<<-EOD) + alg = %w(DSS DSS1 MD2 MD4 MD5 MDC2 RIPEMD160 SHA SHA1) + if OPENSSL_VERSION_NUMBER > 0x00908000 + alg += %w(SHA224 SHA256 SHA384 SHA512) + end + + alg.each{|digest| + self.module_eval(<<-EOD) class #{digest} < Digest def initialize(data=nil) super(\"#{digest}\", data) diff --git a/test/openssl/test_digest.rb b/test/openssl/test_digest.rb index b169b802a..da5b6e49c 100644 --- a/test/openssl/test_digest.rb +++ b/test/openssl/test_digest.rb @@ -60,6 +60,15 @@ class OpenSSL::TestDigest < Test::Unit::TestCase dig2 = @d1.digest assert_equal(dig1, dig2, "reset") end + + if OpenSSL::OPENSSL_VERSION_NUMBER > 0x00908000 + def test_098_features + assert_equal("abd37534c7d9a2efb9465de931cd7055ffdb8879563ae98078d6d6d5", OpenSSL::Digest::SHA224.hexdigest("a")) + assert_equal("ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb", OpenSSL::Digest::SHA256.hexdigest("a")) + assert_equal("54a59b9f22b0b80880d8427e548b7c23abd873486e1f035dce9cd697e85175033caa88e6d57bc35efae0b5afd3145f31", OpenSSL::Digest::SHA384.hexdigest("a")) + assert_equal("1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75", OpenSSL::Digest::SHA512.hexdigest("a")) + end + end end end -- cgit