1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/openssl/ossl_pkey_ec.c: Ensure compatibility to builds of

OpenSSL with OPENSSL_NO_EC2M defined, but OPENSSL_NO_EC not
  defined.
* test/openssl/test_pkey_ec.rb: Iterate over built-in curves
  (and assert their non-emptiness!) instead of hard-coding them, as
  this may cause problems with respect to the different availability
  of individual curves in individual OpenSSL builds.
  [ruby-core:54881] [Bug #8384]

  Thanks to Vit Ondruch for providing the patch!


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41808 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
emboss 2013-07-05 22:46:42 +00:00
parent 880bc0e02d
commit 0d58bb5598
3 changed files with 30 additions and 13 deletions

View file

@ -1,3 +1,16 @@
Sat Jul 6 07:37:43 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
* ext/openssl/ossl_pkey_ec.c: Ensure compatibility to builds of
OpenSSL with OPENSSL_NO_EC2M defined, but OPENSSL_NO_EC not
defined.
* test/openssl/test_pkey_ec.rb: Iterate over built-in curves
(and assert their non-emptiness!) instead of hard-coding them, as
this may cause problems with respect to the different availability
of individual curves in individual OpenSSL builds.
[ruby-core:54881] [Bug #8384]
Thanks to Vit Ondruch for providing the patch!
Sat Jul 6 07:12:39 2013 Martin Bosslet <Martin.Bosslet@gmail.com> Sat Jul 6 07:12:39 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
* test/openssl/test_x509crl.rb: Remove unused variable. * test/openssl/test_x509crl.rb: Remove unused variable.

View file

@ -762,8 +762,10 @@ static VALUE ossl_ec_group_initialize(int argc, VALUE *argv, VALUE self)
method = EC_GFp_mont_method(); method = EC_GFp_mont_method();
} else if (id == s_GFp_nist) { } else if (id == s_GFp_nist) {
method = EC_GFp_nist_method(); method = EC_GFp_nist_method();
#if !defined(OPENSSL_NO_EC2M)
} else if (id == s_GF2m_simple) { } else if (id == s_GF2m_simple) {
method = EC_GF2m_simple_method(); method = EC_GF2m_simple_method();
#endif
} }
if (method) { if (method) {
@ -817,8 +819,10 @@ static VALUE ossl_ec_group_initialize(int argc, VALUE *argv, VALUE self)
if (id == s_GFp) { if (id == s_GFp) {
new_curve = EC_GROUP_new_curve_GFp; new_curve = EC_GROUP_new_curve_GFp;
#if !defined(OPENSSL_NO_EC2M)
} else if (id == s_GF2m) { } else if (id == s_GF2m) {
new_curve = EC_GROUP_new_curve_GF2m; new_curve = EC_GROUP_new_curve_GF2m;
#endif
} else { } else {
ossl_raise(rb_eArgError, "unknown symbol, must be :GFp or :GF2m"); ossl_raise(rb_eArgError, "unknown symbol, must be :GFp or :GF2m");
} }

View file

@ -7,28 +7,28 @@ class OpenSSL::TestEC < Test::Unit::TestCase
@data1 = 'foo' @data1 = 'foo'
@data2 = 'bar' * 1000 # data too long for DSA sig @data2 = 'bar' * 1000 # data too long for DSA sig
@group1 = OpenSSL::PKey::EC::Group.new('secp112r1') @groups = []
@group2 = OpenSSL::PKey::EC::Group.new('sect163k1') @keys = []
@group3 = OpenSSL::PKey::EC::Group.new('prime256v1')
@key1 = OpenSSL::PKey::EC.new OpenSSL::PKey::EC.builtin_curves.each do |curve, comment|
@key1.group = @group1 group = OpenSSL::PKey::EC::Group.new(curve)
@key1.generate_key
@key2 = OpenSSL::PKey::EC.new(@group2.curve_name) key = OpenSSL::PKey::EC.new(group)
@key2.generate_key key.generate_key
@key3 = OpenSSL::PKey::EC.new(@group3) @groups << group
@key3.generate_key @keys << key
end
@groups = [@group1, @group2, @group3]
@keys = [@key1, @key2, @key3]
end end
def compare_keys(k1, k2) def compare_keys(k1, k2)
assert_equal(k1.to_pem, k2.to_pem) assert_equal(k1.to_pem, k2.to_pem)
end end
def test_builtin_curves
assert(!OpenSSL::PKey::EC.builtin_curves.empty?)
end
def test_curve_names def test_curve_names
@groups.each_with_index do |group, idx| @groups.each_with_index do |group, idx|
key = @keys[idx] key = @keys[idx]