jruby-openssl 0.8.0.pre3 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. data/Manifest.txt +5 -124
  2. data/Rakefile +3 -3
  3. data/lib/shared/jopenssl.jar +0 -0
  4. data/lib/shared/jopenssl/version.rb +1 -1
  5. metadata +10 -116
  6. data/test/1.8/ssl_server.rb +0 -99
  7. data/test/1.8/test_asn1.rb +0 -212
  8. data/test/1.8/test_cipher.rb +0 -193
  9. data/test/1.8/test_config.rb +0 -290
  10. data/test/1.8/test_digest.rb +0 -88
  11. data/test/1.8/test_ec.rb +0 -128
  12. data/test/1.8/test_hmac.rb +0 -46
  13. data/test/1.8/test_ns_spki.rb +0 -59
  14. data/test/1.8/test_pair.rb +0 -149
  15. data/test/1.8/test_pkcs7.rb +0 -489
  16. data/test/1.8/test_pkey_rsa.rb +0 -49
  17. data/test/1.8/test_ssl.rb +0 -1032
  18. data/test/1.8/test_x509cert.rb +0 -277
  19. data/test/1.8/test_x509crl.rb +0 -253
  20. data/test/1.8/test_x509ext.rb +0 -99
  21. data/test/1.8/test_x509name.rb +0 -290
  22. data/test/1.8/test_x509req.rb +0 -195
  23. data/test/1.8/test_x509store.rb +0 -246
  24. data/test/1.8/utils.rb +0 -144
  25. data/test/1.9/ssl_server.rb +0 -81
  26. data/test/1.9/test_asn1.rb +0 -589
  27. data/test/1.9/test_bn.rb +0 -23
  28. data/test/1.9/test_buffering.rb +0 -88
  29. data/test/1.9/test_cipher.rb +0 -107
  30. data/test/1.9/test_config.rb +0 -288
  31. data/test/1.9/test_digest.rb +0 -118
  32. data/test/1.9/test_engine.rb +0 -15
  33. data/test/1.9/test_hmac.rb +0 -32
  34. data/test/1.9/test_ns_spki.rb +0 -50
  35. data/test/1.9/test_ocsp.rb +0 -47
  36. data/test/1.9/test_pair.rb +0 -257
  37. data/test/1.9/test_pkcs12.rb +0 -209
  38. data/test/1.9/test_pkcs7.rb +0 -156
  39. data/test/1.9/test_pkey_dh.rb +0 -72
  40. data/test/1.9/test_pkey_dsa.rb +0 -224
  41. data/test/1.9/test_pkey_ec.rb +0 -182
  42. data/test/1.9/test_pkey_rsa.rb +0 -244
  43. data/test/1.9/test_ssl.rb +0 -499
  44. data/test/1.9/test_ssl_session.rb +0 -327
  45. data/test/1.9/test_x509cert.rb +0 -217
  46. data/test/1.9/test_x509crl.rb +0 -221
  47. data/test/1.9/test_x509ext.rb +0 -69
  48. data/test/1.9/test_x509name.rb +0 -366
  49. data/test/1.9/test_x509req.rb +0 -150
  50. data/test/1.9/test_x509store.rb +0 -229
  51. data/test/1.9/utils.rb +0 -304
  52. data/test/cert_with_ec_pk.cer +0 -27
  53. data/test/fixture/ca-bundle.crt +0 -2794
  54. data/test/fixture/ca_path/72fa7371.0 +0 -19
  55. data/test/fixture/ca_path/verisign.pem +0 -19
  56. data/test/fixture/cacert.pem +0 -23
  57. data/test/fixture/cert_localhost.pem +0 -19
  58. data/test/fixture/common.pem +0 -48
  59. data/test/fixture/ids_in_subject_rdn_set.pem +0 -31
  60. data/test/fixture/imaps/cacert.pem +0 -60
  61. data/test/fixture/imaps/server.crt +0 -61
  62. data/test/fixture/imaps/server.key +0 -15
  63. data/test/fixture/key_then_cert.pem +0 -34
  64. data/test/fixture/keypair.pem +0 -27
  65. data/test/fixture/localhost_keypair.pem +0 -18
  66. data/test/fixture/max.pem +0 -29
  67. data/test/fixture/purpose/b70a5bc1.0 +0 -24
  68. data/test/fixture/purpose/ca/PASSWD_OF_CA_KEY_IS_1234 +0 -0
  69. data/test/fixture/purpose/ca/ca_config.rb +0 -37
  70. data/test/fixture/purpose/ca/cacert.pem +0 -24
  71. data/test/fixture/purpose/ca/newcerts/2_cert.pem +0 -19
  72. data/test/fixture/purpose/ca/newcerts/3_cert.pem +0 -19
  73. data/test/fixture/purpose/ca/newcerts/4_cert.pem +0 -19
  74. data/test/fixture/purpose/ca/private/cakeypair.pem +0 -30
  75. data/test/fixture/purpose/ca/serial +0 -1
  76. data/test/fixture/purpose/cacert.pem +0 -24
  77. data/test/fixture/purpose/scripts/gen_cert.rb +0 -127
  78. data/test/fixture/purpose/scripts/gen_csr.rb +0 -50
  79. data/test/fixture/purpose/scripts/init_ca.rb +0 -66
  80. data/test/fixture/purpose/sslclient.pem +0 -19
  81. data/test/fixture/purpose/sslclient/csr.pem +0 -10
  82. data/test/fixture/purpose/sslclient/keypair.pem +0 -15
  83. data/test/fixture/purpose/sslclient/sslclient.pem +0 -19
  84. data/test/fixture/purpose/sslserver.pem +0 -19
  85. data/test/fixture/purpose/sslserver/csr.pem +0 -10
  86. data/test/fixture/purpose/sslserver/keypair.pem +0 -15
  87. data/test/fixture/purpose/sslserver/sslserver.pem +0 -19
  88. data/test/fixture/purpose/sslserver_no_dsig_in_keyUsage.pem +0 -19
  89. data/test/fixture/selfcert.pem +0 -23
  90. data/test/fixture/verisign.pem +0 -19
  91. data/test/fixture/verisign_c3.pem +0 -14
  92. data/test/ref/a.out +0 -0
  93. data/test/ref/compile.rb +0 -8
  94. data/test/ref/pkcs1 +0 -0
  95. data/test/ref/pkcs1.c +0 -21
  96. data/test/ruby/envutil.rb +0 -208
  97. data/test/ruby/ut_eof.rb +0 -128
  98. data/test/test_all.rb +0 -1
  99. data/test/test_certificate.rb +0 -132
  100. data/test/test_cipher.rb +0 -197
  101. data/test/test_imaps.rb +0 -107
  102. data/test/test_integration.rb +0 -144
  103. data/test/test_openssl.rb +0 -4
  104. data/test/test_parse_certificate.rb +0 -27
  105. data/test/test_pkcs7.rb +0 -56
  106. data/test/test_pkey_dsa.rb +0 -180
  107. data/test/test_pkey_rsa.rb +0 -329
  108. data/test/test_ssl.rb +0 -97
  109. data/test/test_x509store.rb +0 -168
@@ -1,209 +0,0 @@
1
- require_relative "utils"
2
-
3
- if defined?(OpenSSL)
4
-
5
- module OpenSSL
6
- class TestPKCS12 < Test::Unit::TestCase
7
- include OpenSSL::TestUtils
8
-
9
- def setup
10
- ca = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=CA")
11
-
12
- now = Time.now
13
- ca_exts = [
14
- ["basicConstraints","CA:TRUE",true],
15
- ["keyUsage","keyCertSign, cRLSign",true],
16
- ["subjectKeyIdentifier","hash",false],
17
- ["authorityKeyIdentifier","keyid:always",false],
18
- ]
19
-
20
- @cacert = issue_cert(ca, TEST_KEY_RSA2048, 1, now, now+3600, ca_exts,
21
- nil, nil, OpenSSL::Digest::SHA1.new)
22
-
23
- inter_ca = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=Intermediate CA")
24
- inter_ca_key = OpenSSL::PKey.read <<-_EOS_
25
- -----BEGIN RSA PRIVATE KEY-----
26
- MIICXAIBAAKBgQDp7hIG0SFMG/VWv1dBUWziAPrNmkMXJgTCAoB7jffzRtyyN04K
27
- oq/89HAszTMStZoMigQURfokzKsjpUp8OYCAEsBtt9d5zPndWMz/gHN73GrXk3LT
28
- ZsxEn7Xv5Da+Y9F/Hx2QZUHarV5cdZixq2NbzWGwrToogOQMh2pxN3Z/0wIDAQAB
29
- AoGBAJysUyx3olpsGzv3OMRJeahASbmsSKTXVLZvoIefxOINosBFpCIhZccAG6UV
30
- 5c/xCvS89xBw8aD15uUfziw3AuT8QPEtHCgfSjeT7aWzBfYswEgOW4XPuWr7EeI9
31
- iNHGD6z+hCN/IQr7FiEBgTp6A+i/hffcSdR83fHWKyb4M7TRAkEA+y4BNd668HmC
32
- G5MPRx25n6LixuBxrNp1umfjEI6UZgEFVpYOg4agNuimN6NqM253kcTR94QNTUs5
33
- Kj3EhG1YWwJBAO5rUjiOyCNVX2WUQrOMYK/c1lU7fvrkdygXkvIGkhsPoNRzLPeA
34
- HGJszKtrKD8bNihWpWNIyqKRHfKVD7yXT+kCQGCAhVCIGTRoypcDghwljHqLnysf
35
- ci0h5ZdPcIqc7ODfxYhFsJ/Rql5ONgYsT5Ig/+lOQAkjf+TRYM4c2xKx2/8CQBvG
36
- jv6dy70qDgIUgqzONtlmHeYyFzn9cdBO5sShdVYHvRHjFSMEXsosqK9zvW2UqvuK
37
- FJx7d3f29gkzynCLJDkCQGQZlEZJC4vWmWJGRKJ24P6MyQn3VsPfErSKOg4lvyM3
38
- Li8JsX5yIiuVYaBg/6ha3tOg4TCa5K/3r3tVliRZ2Es=
39
- -----END RSA PRIVATE KEY-----
40
- _EOS_
41
-
42
- @inter_cacert = issue_cert(inter_ca, inter_ca_key, 2, now, now+3600, ca_exts,
43
- @ca_cert, TEST_KEY_RSA2048, OpenSSL::Digest::SHA1.new)
44
-
45
- exts = [
46
- ["keyUsage","digitalSignature",true],
47
- ["subjectKeyIdentifier","hash",false],
48
- ]
49
- ee = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=Ruby PKCS12 Test Certificate")
50
- @mycert = issue_cert(ee, TEST_KEY_RSA1024, 3, now, now+3600, exts,
51
- @inter_cacert, inter_ca_key, OpenSSL::Digest::SHA1.new)
52
- end
53
-
54
- def test_create
55
- pkcs12 = OpenSSL::PKCS12.create(
56
- "omg",
57
- "hello",
58
- TEST_KEY_RSA1024,
59
- @mycert
60
- )
61
- assert_equal @mycert, pkcs12.certificate
62
- assert_equal TEST_KEY_RSA1024, pkcs12.key
63
- assert_nil pkcs12.ca_certs
64
- end
65
-
66
- def test_create_no_pass
67
- pkcs12 = OpenSSL::PKCS12.create(
68
- nil,
69
- "hello",
70
- TEST_KEY_RSA1024,
71
- @mycert
72
- )
73
- assert_equal @mycert, pkcs12.certificate
74
- assert_equal TEST_KEY_RSA1024, pkcs12.key
75
- assert_nil pkcs12.ca_certs
76
-
77
- decoded = OpenSSL::PKCS12.new(pkcs12.to_der)
78
- assert_cert @mycert, decoded.certificate
79
- end
80
-
81
- def test_create_with_chain
82
- chain = [@inter_cacert, @cacert]
83
-
84
- pkcs12 = OpenSSL::PKCS12.create(
85
- "omg",
86
- "hello",
87
- TEST_KEY_RSA1024,
88
- @mycert,
89
- chain
90
- )
91
- assert_equal chain, pkcs12.ca_certs
92
- end
93
-
94
- def test_create_with_chain_decode
95
- chain = [@cacert, @inter_cacert]
96
-
97
- passwd = "omg"
98
-
99
- pkcs12 = OpenSSL::PKCS12.create(
100
- passwd,
101
- "hello",
102
- TEST_KEY_RSA1024,
103
- @mycert,
104
- chain
105
- )
106
-
107
- decoded = OpenSSL::PKCS12.new(pkcs12.to_der, passwd)
108
- assert_equal chain.size, decoded.ca_certs.size
109
- assert_include_cert @cacert, decoded.ca_certs
110
- assert_include_cert @inter_cacert, decoded.ca_certs
111
- assert_cert @mycert, decoded.certificate
112
- assert_equal TEST_KEY_RSA1024.to_der, decoded.key.to_der
113
- end
114
-
115
- def test_create_with_bad_nid
116
- assert_raises(ArgumentError) do
117
- OpenSSL::PKCS12.create(
118
- "omg",
119
- "hello",
120
- TEST_KEY_RSA1024,
121
- @mycert,
122
- [],
123
- "foo"
124
- )
125
- end
126
- end
127
-
128
- def test_create_with_itr
129
- OpenSSL::PKCS12.create(
130
- "omg",
131
- "hello",
132
- TEST_KEY_RSA1024,
133
- @mycert,
134
- [],
135
- nil,
136
- nil,
137
- 2048
138
- )
139
-
140
- assert_raises(TypeError) do
141
- OpenSSL::PKCS12.create(
142
- "omg",
143
- "hello",
144
- TEST_KEY_RSA1024,
145
- @mycert,
146
- [],
147
- nil,
148
- nil,
149
- "omg"
150
- )
151
- end
152
- end
153
-
154
- def test_create_with_mac_itr
155
- OpenSSL::PKCS12.create(
156
- "omg",
157
- "hello",
158
- TEST_KEY_RSA1024,
159
- @mycert,
160
- [],
161
- nil,
162
- nil,
163
- nil,
164
- 2048
165
- )
166
-
167
- assert_raises(TypeError) do
168
- OpenSSL::PKCS12.create(
169
- "omg",
170
- "hello",
171
- TEST_KEY_RSA1024,
172
- @mycert,
173
- [],
174
- nil,
175
- nil,
176
- nil,
177
- "omg"
178
- )
179
- end
180
- end
181
-
182
- private
183
- def assert_cert expected, actual
184
- [
185
- :subject,
186
- :issuer,
187
- :serial,
188
- :not_before,
189
- :not_after,
190
- ].each do |attribute|
191
- assert_equal expected.send(attribute), actual.send(attribute)
192
- end
193
- assert_equal expected.to_der, actual.to_der
194
- end
195
-
196
- def assert_include_cert cert, ary
197
- der = cert.to_der
198
- ary.each do |candidate|
199
- if candidate.to_der == der
200
- return true
201
- end
202
- end
203
- false
204
- end
205
-
206
- end
207
- end
208
-
209
- end
@@ -1,156 +0,0 @@
1
- require_relative 'utils'
2
-
3
- if defined?(OpenSSL)
4
-
5
- class OpenSSL::TestPKCS7 < Test::Unit::TestCase
6
- def setup
7
- @rsa1024 = OpenSSL::TestUtils::TEST_KEY_RSA1024
8
- @rsa2048 = OpenSSL::TestUtils::TEST_KEY_RSA2048
9
- ca = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=CA")
10
- ee1 = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=EE1")
11
- ee2 = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=EE2")
12
-
13
- now = Time.now
14
- ca_exts = [
15
- ["basicConstraints","CA:TRUE",true],
16
- ["keyUsage","keyCertSign, cRLSign",true],
17
- ["subjectKeyIdentifier","hash",false],
18
- ["authorityKeyIdentifier","keyid:always",false],
19
- ]
20
- @ca_cert = issue_cert(ca, @rsa2048, 1, now, now+3600, ca_exts,
21
- nil, nil, OpenSSL::Digest::SHA1.new)
22
- ee_exts = [
23
- ["keyUsage","Non Repudiation, Digital Signature, Key Encipherment",true],
24
- ["authorityKeyIdentifier","keyid:always",false],
25
- ["extendedKeyUsage","clientAuth, emailProtection, codeSigning",false],
26
- ]
27
- @ee1_cert = issue_cert(ee1, @rsa1024, 2, now, now+1800, ee_exts,
28
- @ca_cert, @rsa2048, OpenSSL::Digest::SHA1.new)
29
- @ee2_cert = issue_cert(ee2, @rsa1024, 3, now, now+1800, ee_exts,
30
- @ca_cert, @rsa2048, OpenSSL::Digest::SHA1.new)
31
- end
32
-
33
- def issue_cert(*args)
34
- OpenSSL::TestUtils.issue_cert(*args)
35
- end
36
-
37
- def test_signed
38
- store = OpenSSL::X509::Store.new
39
- store.add_cert(@ca_cert)
40
- ca_certs = [@ca_cert]
41
-
42
- data = "aaaaa\r\nbbbbb\r\nccccc\r\n"
43
- tmp = OpenSSL::PKCS7.sign(@ee1_cert, @rsa1024, data, ca_certs)
44
- p7 = OpenSSL::PKCS7.new(tmp.to_der)
45
- certs = p7.certificates
46
- signers = p7.signers
47
- assert(p7.verify([], store))
48
- assert_equal(data, p7.data)
49
- assert_equal(2, certs.size)
50
- assert_equal(@ee1_cert.subject.to_s, certs[0].subject.to_s)
51
- assert_equal(@ca_cert.subject.to_s, certs[1].subject.to_s)
52
- assert_equal(1, signers.size)
53
- assert_equal(@ee1_cert.serial, signers[0].serial)
54
- assert_equal(@ee1_cert.issuer.to_s, signers[0].issuer.to_s)
55
-
56
- # Normaly OpenSSL tries to translate the supplied content into canonical
57
- # MIME format (e.g. a newline character is converted into CR+LF).
58
- # If the content is a binary, PKCS7::BINARY flag should be used.
59
-
60
- data = "aaaaa\nbbbbb\nccccc\n"
61
- flag = OpenSSL::PKCS7::BINARY
62
- tmp = OpenSSL::PKCS7.sign(@ee1_cert, @rsa1024, data, ca_certs, flag)
63
- p7 = OpenSSL::PKCS7.new(tmp.to_der)
64
- certs = p7.certificates
65
- signers = p7.signers
66
- assert(p7.verify([], store))
67
- assert_equal(data, p7.data)
68
- assert_equal(2, certs.size)
69
- assert_equal(@ee1_cert.subject.to_s, certs[0].subject.to_s)
70
- assert_equal(@ca_cert.subject.to_s, certs[1].subject.to_s)
71
- assert_equal(1, signers.size)
72
- assert_equal(@ee1_cert.serial, signers[0].serial)
73
- assert_equal(@ee1_cert.issuer.to_s, signers[0].issuer.to_s)
74
-
75
- # A signed-data which have multiple signatures can be created
76
- # through the following steps.
77
- # 1. create two signed-data
78
- # 2. copy signerInfo and certificate from one to another
79
-
80
- tmp1 = OpenSSL::PKCS7.sign(@ee1_cert, @rsa1024, data, [], flag)
81
- tmp2 = OpenSSL::PKCS7.sign(@ee2_cert, @rsa1024, data, [], flag)
82
- tmp1.add_signer(tmp2.signers[0])
83
- tmp1.add_certificate(@ee2_cert)
84
-
85
- p7 = OpenSSL::PKCS7.new(tmp1.to_der)
86
- certs = p7.certificates
87
- signers = p7.signers
88
- assert(p7.verify([], store))
89
- assert_equal(data, p7.data)
90
- assert_equal(2, certs.size)
91
- assert_equal(2, signers.size)
92
- assert_equal(@ee1_cert.serial, signers[0].serial)
93
- assert_equal(@ee1_cert.issuer.to_s, signers[0].issuer.to_s)
94
- assert_equal(@ee2_cert.serial, signers[1].serial)
95
- assert_equal(@ee2_cert.issuer.to_s, signers[1].issuer.to_s)
96
- end
97
-
98
- def test_detached_sign
99
- store = OpenSSL::X509::Store.new
100
- store.add_cert(@ca_cert)
101
- ca_certs = [@ca_cert]
102
-
103
- data = "aaaaa\nbbbbb\nccccc\n"
104
- flag = OpenSSL::PKCS7::BINARY|OpenSSL::PKCS7::DETACHED
105
- tmp = OpenSSL::PKCS7.sign(@ee1_cert, @rsa1024, data, ca_certs, flag)
106
- p7 = OpenSSL::PKCS7.new(tmp.to_der)
107
- assert_nothing_raised do
108
- OpenSSL::ASN1.decode(p7)
109
- end
110
-
111
- certs = p7.certificates
112
- signers = p7.signers
113
- assert(!p7.verify([], store))
114
- assert(p7.verify([], store, data))
115
- assert_equal(data, p7.data)
116
- assert_equal(2, certs.size)
117
- assert_equal(@ee1_cert.subject.to_s, certs[0].subject.to_s)
118
- assert_equal(@ca_cert.subject.to_s, certs[1].subject.to_s)
119
- assert_equal(1, signers.size)
120
- assert_equal(@ee1_cert.serial, signers[0].serial)
121
- assert_equal(@ee1_cert.issuer.to_s, signers[0].issuer.to_s)
122
- end
123
-
124
- def test_enveloped
125
- if OpenSSL::OPENSSL_VERSION_NUMBER <= 0x0090704f
126
- # PKCS7_encrypt() of OpenSSL-0.9.7d goes to SEGV.
127
- # http://www.mail-archive.com/openssl-dev@openssl.org/msg17376.html
128
- return
129
- end
130
-
131
- certs = [@ee1_cert, @ee2_cert]
132
- cipher = OpenSSL::Cipher::AES.new("128-CBC")
133
- data = "aaaaa\nbbbbb\nccccc\n"
134
-
135
- tmp = OpenSSL::PKCS7.encrypt(certs, data, cipher, OpenSSL::PKCS7::BINARY)
136
- p7 = OpenSSL::PKCS7.new(tmp.to_der)
137
- recip = p7.recipients
138
- assert_equal(:enveloped, p7.type)
139
- assert_equal(2, recip.size)
140
-
141
- assert_equal(@ca_cert.subject.to_s, recip[0].issuer.to_s)
142
- assert_equal(2, recip[0].serial)
143
- assert_equal(data, p7.decrypt(@rsa1024, @ee1_cert))
144
-
145
- assert_equal(@ca_cert.subject.to_s, recip[1].issuer.to_s)
146
- assert_equal(3, recip[1].serial)
147
- assert_equal(data, p7.decrypt(@rsa1024, @ee2_cert))
148
- end
149
-
150
- def test_graceful_parsing_failure #[ruby-core:43250]
151
- contents = File.read(__FILE__)
152
- assert_raise(ArgumentError) { OpenSSL::PKCS7.new(contents) }
153
- end
154
- end
155
-
156
- end
@@ -1,72 +0,0 @@
1
- require_relative 'utils'
2
-
3
- if defined?(OpenSSL)
4
-
5
- class OpenSSL::TestPKeyDH < Test::Unit::TestCase
6
- def test_new
7
- dh = OpenSSL::PKey::DH.new(256)
8
- assert_key(dh)
9
- end
10
-
11
- def test_to_der
12
- dh = OpenSSL::PKey::DH.new(256)
13
- der = dh.to_der
14
- dh2 = OpenSSL::PKey::DH.new(der)
15
- assert_equal_params(dh, dh2)
16
- assert_no_key(dh2)
17
- end
18
-
19
- def test_to_pem
20
- dh = OpenSSL::PKey::DH.new(256)
21
- pem = dh.to_pem
22
- dh2 = OpenSSL::PKey::DH.new(pem)
23
- assert_equal_params(dh, dh2)
24
- assert_no_key(dh2)
25
- end
26
-
27
- def test_public_key
28
- dh = OpenSSL::PKey::DH.new(256)
29
- public_key = dh.public_key
30
- assert_no_key(public_key) #implies public_key.public? is false!
31
- assert_equal(dh.to_der, public_key.to_der)
32
- assert_equal(dh.to_pem, public_key.to_pem)
33
- end
34
-
35
- def test_generate_key
36
- dh = OpenSSL::TestUtils::TEST_KEY_DH512.public_key # creates a copy
37
- assert_no_key(dh)
38
- dh.generate_key!
39
- assert_key(dh)
40
- end
41
-
42
- def test_key_exchange
43
- dh = OpenSSL::TestUtils::TEST_KEY_DH512
44
- dh2 = dh.public_key
45
- dh.generate_key!
46
- dh2.generate_key!
47
- assert_equal(dh.compute_key(dh2.pub_key), dh2.compute_key(dh.pub_key))
48
- end
49
-
50
- private
51
-
52
- def assert_equal_params(dh1, dh2)
53
- assert_equal(dh1.g, dh2.g)
54
- assert_equal(dh1.p, dh2.p)
55
- end
56
-
57
- def assert_no_key(dh)
58
- assert_equal(false, dh.public?)
59
- assert_equal(false, dh.private?)
60
- assert_equal(nil, dh.pub_key)
61
- assert_equal(nil, dh.priv_key)
62
- end
63
-
64
- def assert_key(dh)
65
- assert(dh.public?)
66
- assert(dh.private?)
67
- assert(dh.pub_key)
68
- assert(dh.priv_key)
69
- end
70
- end
71
-
72
- end
@@ -1,224 +0,0 @@
1
- require_relative 'utils'
2
- require 'base64'
3
-
4
- if defined?(OpenSSL)
5
-
6
- class OpenSSL::TestPKeyDSA < Test::Unit::TestCase
7
- def test_private
8
- key = OpenSSL::PKey::DSA.new(256)
9
- assert(key.private?)
10
- key2 = OpenSSL::PKey::DSA.new(key.to_der)
11
- assert(key2.private?)
12
- key3 = key.public_key
13
- assert(!key3.private?)
14
- key4 = OpenSSL::PKey::DSA.new(key3.to_der)
15
- assert(!key4.private?)
16
- end
17
-
18
- def test_new
19
- key = OpenSSL::PKey::DSA.new 256
20
- pem = key.public_key.to_pem
21
- OpenSSL::PKey::DSA.new pem
22
- assert_equal([], OpenSSL.errors)
23
- end
24
-
25
- def test_sys_sign_verify
26
- key = OpenSSL::TestUtils::TEST_KEY_DSA256
27
- data = 'Sign me!'
28
- digest = OpenSSL::Digest::SHA1.digest(data)
29
- sig = key.syssign(digest)
30
- assert(key.sysverify(digest, sig))
31
- end
32
-
33
- def test_sign_verify
34
- check_sign_verify(OpenSSL::Digest::DSS1.new)
35
- end
36
-
37
- if (OpenSSL::OPENSSL_VERSION_NUMBER > 0x10000000)
38
- def test_sign_verify_sha1
39
- check_sign_verify(OpenSSL::Digest::SHA1.new)
40
- end
41
-
42
- def test_sign_verify_sha256
43
- check_sign_verify(OpenSSL::Digest::SHA256.new)
44
- end
45
- end
46
-
47
- def test_digest_state_irrelevant_verify
48
- key = OpenSSL::TestUtils::TEST_KEY_DSA256
49
- digest1 = OpenSSL::Digest::DSS1.new
50
- digest2 = OpenSSL::Digest::DSS1.new
51
- data = 'Sign me!'
52
- sig = key.sign(digest1, data)
53
- digest1.reset
54
- digest1 << 'Change state of digest1'
55
- assert(key.verify(digest1, sig, data))
56
- assert(key.verify(digest2, sig, data))
57
- end
58
-
59
- def test_read_DSA_PUBKEY
60
- p = 7188211954100152441468596248707152960171255279130004340103875772401008316444412091945435731597638374542374929457672178957081124632837356913990200866056699
61
- q = 957032439192465935099784319494405376402293318491
62
- g = 122928973717064636255205666162891733518376475981809749897454444301389338825906076467196186192907631719698166056821519884939865041993585844526937010746285
63
- y = 1235756183583465414789073313502727057075641172514181938731172021825149551960029708596057102104063395063907739571546165975727369183495540798749742124846271
64
- algo = OpenSSL::ASN1::ObjectId.new('DSA')
65
- params = OpenSSL::ASN1::Sequence.new([OpenSSL::ASN1::Integer.new(p),
66
- OpenSSL::ASN1::Integer.new(q),
67
- OpenSSL::ASN1::Integer.new(g)])
68
- algo_id = OpenSSL::ASN1::Sequence.new ([algo, params])
69
- pub_key = OpenSSL::ASN1::Integer.new(y)
70
- seq = OpenSSL::ASN1::Sequence.new([algo_id, OpenSSL::ASN1::BitString.new(pub_key.to_der)])
71
- key = OpenSSL::PKey::DSA.new(seq.to_der)
72
- assert(key.public?)
73
- assert(!key.private?)
74
- assert_equal(p, key.p)
75
- assert_equal(q, key.q)
76
- assert_equal(g, key.g)
77
- assert_equal(y, key.pub_key)
78
- assert_equal(nil, key.priv_key)
79
- assert_equal([], OpenSSL.errors)
80
- end
81
-
82
- def test_read_DSAPublicKey_pem
83
- p = 12260055936871293565827712385212529106400444521449663325576634579961635627321079536132296996623400607469624537382977152381984332395192110731059176842635699
84
- q = 979494906553787301107832405790107343409973851677
85
- g = 3731695366899846297271147240305742456317979984190506040697507048095553842519347835107669437969086119948785140453492839427038591924536131566350847469993845
86
- y = 10505239074982761504240823422422813362721498896040719759460296306305851824586095328615844661273887569281276387605297130014564808567159023649684010036304695
87
- pem = <<-EOF
88
- -----BEGIN DSA PUBLIC KEY-----
89
- MIHfAkEAyJSJ+g+P/knVcgDwwTzC7Pwg/pWs2EMd/r+lYlXhNfzg0biuXRul8VR4
90
- VUC/phySExY0PdcqItkR/xYAYNMbNwJBAOoV57X0FxKO/PrNa/MkoWzkCKV/hzhE
91
- p0zbFdsicw+hIjJ7S6Sd/FlDlo89HQZ2FuvWJ6wGLM1j00r39+F2qbMCFQCrkhIX
92
- SG+is37hz1IaBeEudjB2HQJAR0AloavBvtsng8obsjLb7EKnB+pSeHr/BdIQ3VH7
93
- fWLOqqkzFeRrYMDzUpl36XktY6Yq8EJYlW9pCMmBVNy/dQ==
94
- -----END DSA PUBLIC KEY-----
95
- EOF
96
- key = OpenSSL::PKey::DSA.new(pem)
97
- assert(key.public?)
98
- assert(!key.private?)
99
- assert_equal(p, key.p)
100
- assert_equal(q, key.q)
101
- assert_equal(g, key.g)
102
- assert_equal(y, key.pub_key)
103
- assert_equal(nil, key.priv_key)
104
- assert_equal([], OpenSSL.errors)
105
- end
106
-
107
- def test_read_DSA_PUBKEY_pem
108
- p = 12260055936871293565827712385212529106400444521449663325576634579961635627321079536132296996623400607469624537382977152381984332395192110731059176842635699
109
- q = 979494906553787301107832405790107343409973851677
110
- g = 3731695366899846297271147240305742456317979984190506040697507048095553842519347835107669437969086119948785140453492839427038591924536131566350847469993845
111
- y = 10505239074982761504240823422422813362721498896040719759460296306305851824586095328615844661273887569281276387605297130014564808567159023649684010036304695
112
- pem = <<-EOF
113
- -----BEGIN PUBLIC KEY-----
114
- MIHxMIGoBgcqhkjOOAQBMIGcAkEA6hXntfQXEo78+s1r8yShbOQIpX+HOESnTNsV
115
- 2yJzD6EiMntLpJ38WUOWjz0dBnYW69YnrAYszWPTSvf34XapswIVAKuSEhdIb6Kz
116
- fuHPUhoF4S52MHYdAkBHQCWhq8G+2yeDyhuyMtvsQqcH6lJ4ev8F0hDdUft9Ys6q
117
- qTMV5GtgwPNSmXfpeS1jpirwQliVb2kIyYFU3L91A0QAAkEAyJSJ+g+P/knVcgDw
118
- wTzC7Pwg/pWs2EMd/r+lYlXhNfzg0biuXRul8VR4VUC/phySExY0PdcqItkR/xYA
119
- YNMbNw==
120
- -----END PUBLIC KEY-----
121
- EOF
122
- key = OpenSSL::PKey::DSA.new(pem)
123
- assert(key.public?)
124
- assert(!key.private?)
125
- assert_equal(p, key.p)
126
- assert_equal(q, key.q)
127
- assert_equal(g, key.g)
128
- assert_equal(y, key.pub_key)
129
- assert_equal(nil, key.priv_key)
130
- assert_equal([], OpenSSL.errors)
131
- end
132
-
133
- def test_export_format_is_DSA_PUBKEY_pem
134
- key = OpenSSL::TestUtils::TEST_KEY_DSA256
135
- pem = key.public_key.to_pem
136
- pem.gsub!(/^-+(\w|\s)+-+$/, "") # eliminate --------BEGIN...-------
137
- asn1 = OpenSSL::ASN1.decode(Base64.decode64(pem))
138
- assert_equal(OpenSSL::ASN1::SEQUENCE, asn1.tag)
139
- assert_equal(2, asn1.value.size)
140
- seq = asn1.value
141
- assert_equal(OpenSSL::ASN1::SEQUENCE, seq[0].tag)
142
- assert_equal(2, seq[0].value.size)
143
- algo_id = seq[0].value
144
- assert_equal(OpenSSL::ASN1::OBJECT, algo_id[0].tag)
145
- assert_equal('DSA', algo_id[0].value)
146
- assert_equal(OpenSSL::ASN1::SEQUENCE, algo_id[1].tag)
147
- assert_equal(3, algo_id[1].value.size)
148
- params = algo_id[1].value
149
- assert_equal(OpenSSL::ASN1::INTEGER, params[0].tag)
150
- assert_equal(key.p, params[0].value)
151
- assert_equal(OpenSSL::ASN1::INTEGER, params[1].tag)
152
- assert_equal(key.q, params[1].value)
153
- assert_equal(OpenSSL::ASN1::INTEGER, params[2].tag)
154
- assert_equal(key.g, params[2].value)
155
- assert_equal(OpenSSL::ASN1::BIT_STRING, seq[1].tag)
156
- assert_equal(0, seq[1].unused_bits)
157
- pub_key = OpenSSL::ASN1.decode(seq[1].value)
158
- assert_equal(OpenSSL::ASN1::INTEGER, pub_key.tag)
159
- assert_equal(key.pub_key, pub_key.value)
160
- assert_equal([], OpenSSL.errors)
161
- end
162
-
163
- def test_read_private_key_der
164
- key = OpenSSL::TestUtils::TEST_KEY_DSA256
165
- der = key.to_der
166
- key2 = OpenSSL::PKey.read(der)
167
- assert(key2.private?)
168
- assert_equal(der, key2.to_der)
169
- assert_equal([], OpenSSL.errors)
170
- end
171
-
172
- def test_read_private_key_pem
173
- key = OpenSSL::TestUtils::TEST_KEY_DSA256
174
- pem = key.to_pem
175
- key2 = OpenSSL::PKey.read(pem)
176
- assert(key2.private?)
177
- assert_equal(pem, key2.to_pem)
178
- assert_equal([], OpenSSL.errors)
179
- end
180
-
181
- def test_read_public_key_der
182
- key = OpenSSL::TestUtils::TEST_KEY_DSA256.public_key
183
- der = key.to_der
184
- key2 = OpenSSL::PKey.read(der)
185
- assert(!key2.private?)
186
- assert_equal(der, key2.to_der)
187
- assert_equal([], OpenSSL.errors)
188
- end
189
-
190
- def test_read_public_key_pem
191
- key = OpenSSL::TestUtils::TEST_KEY_DSA256.public_key
192
- pem = key.to_pem
193
- key2 = OpenSSL::PKey.read(pem)
194
- assert(!key2.private?)
195
- assert_equal(pem, key2.to_pem)
196
- assert_equal([], OpenSSL.errors)
197
- end
198
-
199
- def test_read_private_key_pem_pw
200
- key = OpenSSL::TestUtils::TEST_KEY_DSA256
201
- pem = key.to_pem(OpenSSL::Cipher.new('AES-128-CBC'), 'secret')
202
- #callback form for password
203
- key2 = OpenSSL::PKey.read(pem) do
204
- 'secret'
205
- end
206
- assert(key2.private?)
207
- # pass password directly
208
- key2 = OpenSSL::PKey.read(pem, 'secret')
209
- assert(key2.private?)
210
- #omit pem equality check, will be different due to cipher iv
211
- assert_equal([], OpenSSL.errors)
212
- end
213
-
214
- private
215
-
216
- def check_sign_verify(digest)
217
- key = OpenSSL::TestUtils::TEST_KEY_DSA256
218
- data = 'Sign me!'
219
- sig = key.sign(digest, data)
220
- assert(key.verify(digest, sig, data))
221
- end
222
- end
223
-
224
- end