[前][次][番号順一覧][スレッド一覧]

ruby-changes:20011

From: emboss <ko1@a...>
Date: Mon, 13 Jun 2011 20:56:19 +0900 (JST)
Subject: [ruby-changes:20011] emboss:r32058 (trunk): * test/openssl/test_ec.rb

emboss	2011-06-13 20:56:04 +0900 (Mon, 13 Jun 2011)

  New Revision: 32058

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=32058

  Log:
    * test/openssl/test_ec.rb
      test/openssl/test_pkey_ec.rb: merge both files into test_pkey_ec.rb.
      Removed redundant group instantiation from PKey tests.
    * test/openssl/utils.rb: only create TEST_PKEY_EC_P256V1 if EC is
      defined.

  Removed files:
    trunk/test/openssl/test_ec.rb
  Modified files:
    trunk/ChangeLog
    trunk/test/openssl/test_pkey_ec.rb
    trunk/test/openssl/utils.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 32057)
+++ ChangeLog	(revision 32058)
@@ -1,3 +1,11 @@
+Mon Jun 13 20:50:49 2011  Martin Bosslet  <Martin.Bosslet@g...>
+
+	* test/openssl/test_ec.rb
+	  test/openssl/test_pkey_ec.rb: merge both files into test_pkey_ec.rb.
+	  Removed redundant group instantiation from PKey tests.
+	* test/openssl/utils.rb: only create TEST_PKEY_EC_P256V1 if EC is
+	  defined. 
+
 Mon Jun 13 20:28:24 2011  Martin Bosslet  <Martin.Bosslet@g...>
 
 	* test/openssl/digest.rb: remove MDC2 from test, it is not available
Index: test/openssl/test_ec.rb
===================================================================
--- test/openssl/test_ec.rb	(revision 32057)
+++ test/openssl/test_ec.rb	(revision 32058)
@@ -1,123 +0,0 @@
-require_relative 'utils'
-
-if defined?(OpenSSL::PKey::EC)
-
-class OpenSSL::TestEC < Test::Unit::TestCase
-  def setup
-    @data1 = 'foo'
-    @data2 = 'bar' * 1000 # data too long for DSA sig
-
-    @group1 = OpenSSL::PKey::EC::Group.new('secp112r1')
-    @group2 = OpenSSL::PKey::EC::Group.new('sect163k1')
-
-    @key1 = OpenSSL::PKey::EC.new
-    @key1.group = @group1
-    @key1.generate_key
-
-    @key2 = OpenSSL::PKey::EC.new(@group2.curve_name)
-    @key2.generate_key
-
-    @groups = [@group1, @group2]
-    @keys = [@key1, @key2]
-  end
-
-  def compare_keys(k1, k2)
-    assert_equal(k1.to_pem, k2.to_pem)
-  end
-
-  def test_curve_names
-    @groups.each_with_index do |group, idx|
-      key = @keys[idx]
-      assert_equal(group.curve_name, key.group.curve_name)
-    end
-  end
-
-  def test_check_key
-    for key in @keys
-      assert_equal(key.check_key, true)
-      assert_equal(key.private_key?, true)
-      assert_equal(key.public_key?, true)
-    end
-  end
-
-  def test_encoding
-    for group in @groups
-      for meth in [:to_der, :to_pem]
-        txt = group.send(meth)
-        gr = OpenSSL::PKey::EC::Group.new(txt)
-        assert_equal(txt, gr.send(meth))
-
-        assert_equal(group.generator.to_bn, gr.generator.to_bn)
-        assert_equal(group.cofactor, gr.cofactor)
-        assert_equal(group.order, gr.order)
-        assert_equal(group.seed, gr.seed)
-        assert_equal(group.degree, gr.degree)
-      end
-    end
-
-    for key in @keys
-      group = key.group
-
-      for meth in [:to_der, :to_pem]
-        txt = key.send(meth)
-        assert_equal(txt, OpenSSL::PKey::EC.new(txt).send(meth))
-      end
-
-      bn = key.public_key.to_bn
-      assert_equal(bn, OpenSSL::PKey::EC::Point.new(group, bn).to_bn)
-    end
-  end
-
-  def test_set_keys
-    for key in @keys
-      k = OpenSSL::PKey::EC.new
-      k.group = key.group
-      k.private_key = key.private_key
-      k.public_key = key.public_key
-
-      compare_keys(key, k)
-    end
-  end
-
-  def test_dsa_sign_verify
-    for key in @keys
-      sig = key.dsa_sign_asn1(@data1)
-      assert(key.dsa_verify_asn1(@data1, sig))
-    end
-  end
-
-  def test_dsa_sign_asn1_FIPS186_3
-    for key in @keys
-      size = key.group.order.num_bits / 8 + 1
-      dgst = (1..size).to_a.pack('C*')
-      begin
-        sig = key.dsa_sign_asn1(dgst)
-        # dgst is auto-truncated according to FIPS186-3 after openssl-0.9.8m
-        assert(key.dsa_verify_asn1(dgst + "garbage", sig))
-      rescue OpenSSL::PKey::ECError => e
-        # just an exception for longer dgst before openssl-0.9.8m
-        assert_equal('ECDSA_sign: data too large for key size', e.message)
-        # no need to do following tests
-        return
-      end
-    end
-  end
-
-  def test_dh_compute_key
-    for key in @keys
-      k = OpenSSL::PKey::EC.new(key.group)
-      k.generate_key
-
-      puba = key.public_key
-      pubb = k.public_key
-      a = key.dh_compute_key(pubb)
-      b = k.dh_compute_key(puba)
-      assert_equal(a, b)
-    end
-  end
-
-# test Group: asn1_flag, point_conversion
-
-end
-
-end
Index: test/openssl/test_pkey_ec.rb
===================================================================
--- test/openssl/test_pkey_ec.rb	(revision 32057)
+++ test/openssl/test_pkey_ec.rb	(revision 32058)
@@ -1,16 +1,125 @@
 require_relative 'utils'
 
-if defined?(OpenSSL)
+if defined?(OpenSSL::PKey::EC)
 
-class OpenSSL::TestPKeyEC < Test::Unit::TestCase
-  def test_new
-    group = OpenSSL::PKey::EC::Group.new('prime256v1')
-    ec = OpenSSL::PKey::EC.new(group)
-    ec.generate_key
-    assert(ec.private_key?)
-    assert(ec.public_key?)
+class OpenSSL::TestEC < Test::Unit::TestCase
+  def setup
+    @data1 = 'foo'
+    @data2 = 'bar' * 1000 # data too long for DSA sig
+
+    @group1 = OpenSSL::PKey::EC::Group.new('secp112r1')
+    @group2 = OpenSSL::PKey::EC::Group.new('sect163k1')
+    @group3 = OpenSSL::PKey::EC::Group.new('prime256v1')
+
+    @key1 = OpenSSL::PKey::EC.new
+    @key1.group = @group1
+    @key1.generate_key
+
+    @key2 = OpenSSL::PKey::EC.new(@group2.curve_name)
+    @key2.generate_key
+
+    @key3 = OpenSSL::PKey::EC.new(@group3)
+    @key3.generate_key
+
+    @groups = [@group1, @group2, @group3]
+    @keys = [@key1, @key2, @key3]
   end
 
+  def compare_keys(k1, k2)
+    assert_equal(k1.to_pem, k2.to_pem)
+  end
+
+  def test_curve_names
+    @groups.each_with_index do |group, idx|
+      key = @keys[idx]
+      assert_equal(group.curve_name, key.group.curve_name)
+    end
+  end
+
+  def test_check_key
+    for key in @keys
+      assert_equal(key.check_key, true)
+      assert_equal(key.private_key?, true)
+      assert_equal(key.public_key?, true)
+    end
+  end
+
+  def test_encoding
+    for group in @groups
+      for meth in [:to_der, :to_pem]
+        txt = group.send(meth)
+        gr = OpenSSL::PKey::EC::Group.new(txt)
+        assert_equal(txt, gr.send(meth))
+
+        assert_equal(group.generator.to_bn, gr.generator.to_bn)
+        assert_equal(group.cofactor, gr.cofactor)
+        assert_equal(group.order, gr.order)
+        assert_equal(group.seed, gr.seed)
+        assert_equal(group.degree, gr.degree)
+      end
+    end
+
+    for key in @keys
+      group = key.group
+
+      for meth in [:to_der, :to_pem]
+        txt = key.send(meth)
+        assert_equal(txt, OpenSSL::PKey::EC.new(txt).send(meth))
+      end
+
+      bn = key.public_key.to_bn
+      assert_equal(bn, OpenSSL::PKey::EC::Point.new(group, bn).to_bn)
+    end
+  end
+
+  def test_set_keys
+    for key in @keys
+      k = OpenSSL::PKey::EC.new
+      k.group = key.group
+      k.private_key = key.private_key
+      k.public_key = key.public_key
+
+      compare_keys(key, k)
+    end
+  end
+
+  def test_dsa_sign_verify
+    for key in @keys
+      sig = key.dsa_sign_asn1(@data1)
+      assert(key.dsa_verify_asn1(@data1, sig))
+    end
+  end
+
+  def test_dsa_sign_asn1_FIPS186_3
+    for key in @keys
+      size = key.group.order.num_bits / 8 + 1
+      dgst = (1..size).to_a.pack('C*')
+      begin
+        sig = key.dsa_sign_asn1(dgst)
+        # dgst is auto-truncated according to FIPS186-3 after openssl-0.9.8m
+        assert(key.dsa_verify_asn1(dgst + "garbage", sig))
+      rescue OpenSSL::PKey::ECError => e
+        # just an exception for longer dgst before openssl-0.9.8m
+        assert_equal('ECDSA_sign: data too large for key size', e.message)
+        # no need to do following tests
+        return
+      end
+    end
+  end
+
+  def test_dh_compute_key
+    for key in @keys
+      k = OpenSSL::PKey::EC.new(key.group)
+      k.generate_key
+
+      puba = key.public_key
+      pubb = k.public_key
+      a = key.dh_compute_key(pubb)
+      b = k.dh_compute_key(puba)
+      assert_equal(a, b)
+    end
+  end
+  
   def test_read_private_key_der
     ec = OpenSSL::TestUtils::TEST_KEY_EC_P256V1
     der = ec.to_der
@@ -29,8 +138,7 @@
 
   def test_read_public_key_der
     ec = OpenSSL::TestUtils::TEST_KEY_EC_P256V1
-    group = OpenSSL::PKey::EC::Group.new('prime256v1')
-    ec2 = OpenSSL::PKey::EC.new(group)
+    ec2 = OpenSSL::PKey::EC.new(ec.group)
     ec2.public_key = ec.public_key
     der = ec2.to_der
     ec3 = OpenSSL::PKey.read(der)
@@ -40,8 +148,7 @@
 
   def test_read_public_key_pem
     ec = OpenSSL::TestUtils::TEST_KEY_EC_P256V1
-    group = OpenSSL::PKey::EC::Group.new('prime256v1')
-    ec2 = OpenSSL::PKey::EC.new(group)
+    ec2 = OpenSSL::PKey::EC.new(ec.group)
     ec2.public_key = ec.public_key
     pem = ec2.to_pem
     ec3 = OpenSSL::PKey.read(pem)
@@ -63,6 +170,8 @@
     #omit pem equality check, will be different due to cipher iv
   end
 
+# test Group: asn1_flag, point_conversion
+
 end
 
 end
Index: test/openssl/utils.rb
===================================================================
--- test/openssl/utils.rb	(revision 32057)
+++ test/openssl/utils.rb	(revision 32058)
@@ -80,6 +80,8 @@
 -----END DSA PRIVATE KEY-----
   _end_of_pem_
 
+if defined?(OpenSSL::PKey::EC)
+
   TEST_KEY_EC_P256V1 = OpenSSL::PKey::EC.new <<-_end_of_pem_
 -----BEGIN EC PRIVATE KEY-----
 MHcCAQEEIID49FDqcf1O1eO8saTgG70UbXQw9Fqwseliit2aWhH1oAoGCCqGSM49
@@ -88,6 +90,8 @@
 -----END EC PRIVATE KEY-----
   _end_of_pem_
 
+end
+
   TEST_KEY_DH512 = OpenSSL::PKey::DH.new <<-_end_of_pem_
 -----BEGIN DH PARAMETERS-----
 MEYCQQDmWXGPqk76sKw/edIOdhAQD4XzjJ+AR/PTk2qzaGs+u4oND2yU5D2NN4wr

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]