diff --git a/ChangeLog b/ChangeLog index d1e7d0f0e2..b037b27a64 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Mon Oct 4 09:30:42 2010 NARUSE, Yui + + * ext/openssl/lib/openssl/bn.rb (Integer#to_bn): OpenSSL::BN.new + accepts only Strings, so call Integer#to_s(16). + 16 is for an optimization. [ruby-dev:42336] + Mon Oct 4 07:57:51 2010 NARUSE, Yui * cont.c (fiber_memsize): Return size. diff --git a/ext/openssl/lib/openssl/bn.rb b/ext/openssl/lib/openssl/bn.rb index e7cbf2cfaf..624c13715c 100644 --- a/ext/openssl/lib/openssl/bn.rb +++ b/ext/openssl/lib/openssl/bn.rb @@ -29,7 +29,7 @@ end # OpenSSL # class Integer def to_bn - OpenSSL::BN::new(self) + OpenSSL::BN::new(self.to_s(16), 16) end end # Integer diff --git a/test/openssl/test_bn.rb b/test/openssl/test_bn.rb index da77a556b0..d913d0c953 100644 --- a/test/openssl/test_bn.rb +++ b/test/openssl/test_bn.rb @@ -8,6 +8,11 @@ require "test/unit" if defined?(OpenSSL) class OpenSSL::TestBN < Test::Unit::TestCase + def test_integer_to_bn + assert_equal(999.to_bn, OpenSSL::BN.new(999.to_s(16), 16)) + assert_equal((2 ** 107 - 1).to_bn, OpenSSL::BN.new((2 ** 107 - 1).to_s(16), 16)) + end + def test_prime_p OpenSSL::BN.new((2 ** 107 - 1).to_s(16), 16).prime? OpenSSL::BN.new((2 ** 127 - 1).to_s(16), 16).prime?(1)