summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--ext/openssl/lib/openssl/bn.rb2
-rw-r--r--test/openssl/test_bn.rb5
3 files changed, 12 insertions, 1 deletions
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 <naruse@ruby-lang.org>
+
+ * 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 <naruse@ruby-lang.org>
* 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)