eassl2 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,29 @@
1
+ require 'helper'
2
+
3
+ class TestEasslKeyCsr < Test::Unit::TestCase
4
+ def test_generate_self_signed
5
+
6
+ options = {
7
+ :country => "GB",
8
+ :state => "London",
9
+ :city => "London",
10
+ :organization => "Venda Ltd",
11
+ :department => "Development",
12
+ :email => "ssl@dev.venda.com",
13
+ :common_name => "foo.dev.venda.com"
14
+ }
15
+
16
+ ea_key = EaSSL::Key.new
17
+ ea_name = EaSSL::CertificateName.new(options)
18
+ ea_csr = EaSSL::SigningRequest.new(:name => ea_name, :key => ea_key)
19
+
20
+ csr = OpenSSL::X509::Request.new ea_csr.ssl.to_s
21
+ assert csr
22
+
23
+ assert_equal "/C=GB/ST=London/L=London/O=Venda Ltd/OU=Development/CN=foo.dev.venda.com/emailAddress=ssl@dev.venda.com", csr.subject.to_s
24
+
25
+ key = OpenSSL::PKey::RSA.new ea_key.private_key.to_s
26
+ assert key
27
+ end
28
+ end
29
+
@@ -0,0 +1,35 @@
1
+ require 'helper'
2
+
3
+ class TestEasslSignCert < Test::Unit::TestCase
4
+ def test_sign_csr
5
+
6
+ csr_text = <<CSR
7
+ -----BEGIN CERTIFICATE REQUEST-----
8
+ MIIBhDCB7gIBADBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEh
9
+ MB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEB
10
+ AQUAA4GNADCBiQKBgQC+RvNakUHlmlT3jMtkVx0Eajv6sxtzyk0qmSRKHU9/2q+1
11
+ 3/jUM9fnc18hDBoI9PsObJc8CueXFnOVN9fyaQQXyr/mesvYgNn+XTSkE8HWiFSP
12
+ CMD3Sc8picEFEW5G/ZDrkqmygIY9E/kk9tQmWFolfIjWCTQPe/xh0f9kK/MkYwID
13
+ AQABoAAwDQYJKoZIhvcNAQEFBQADgYEAp5Bf2vGSzAB9uhWZ3bDPmAcvFDgXRSrk
14
+ 3qlsOLDFy2uxHZxrJROo89YstwHMEDPHN2uNMpMaAfT2aiAVwQbjeu7/wQ5rnf35
15
+ LY18Mf/fqkFIqSolbHhaV3j1MvBMseAj3GidItX/HZiwzU2dSsb36o8KthkO5IX1
16
+ 9R2JzARogT0=
17
+ -----END CERTIFICATE REQUEST-----
18
+ CSR
19
+
20
+ ca_path = File.join(File.dirname(__FILE__), 'CA')
21
+ ca = EaSSL::CertificateAuthority.load(:ca_path => ca_path, :ca_password => '1234')
22
+ csr = EaSSL::SigningRequest.new.load(csr_text)
23
+ cert = EaSSL::Certificate.new(:signing_request => csr, :ca_certificate => ca.certificate)
24
+ cert.sign(ca.key)
25
+
26
+ c = OpenSSL::X509::Certificate.new cert.to_pem
27
+ assert c
28
+
29
+ # subject from CSR text above
30
+ assert_equal '/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd', c.subject.to_s
31
+
32
+ # issuer from test CA
33
+ assert_equal "/C=US/O=Venda/OU=auto-CA/CN=CA", c.issuer.to_s
34
+ end
35
+ end
@@ -0,0 +1,62 @@
1
+ require 'helper'
2
+
3
+ class TestEasslSigningRequest < Test::Unit::TestCase
4
+
5
+ def test_new_csr_gen_default_key
6
+ name = EaSSL::CertificateName.new(:common_name => 'foo.bar.com')
7
+ csr = EaSSL::SigningRequest.new(:name => name)
8
+ assert csr
9
+ assert_equal "/C=US/ST=North Carolina/L=Fuquay Varina/O=WebPower Design/OU=Web Security/CN=foo.bar.com/emailAddress=eassl@rubyforge.org", csr.subject.to_s
10
+ assert csr.key
11
+ assert_equal 2048, csr.key.length
12
+ end
13
+
14
+ def test_new_csr_specify_key
15
+ file = File.join(File.dirname(__FILE__), 'unencrypted_key2.pem')
16
+ key = EaSSL::Key.load(file)
17
+ name = EaSSL::CertificateName.new(:common_name => 'foo.bar.com')
18
+ csr = EaSSL::SigningRequest.new(:name => name, :key => key)
19
+ assert csr
20
+ assert_equal "/C=US/ST=North Carolina/L=Fuquay Varina/O=WebPower Design/OU=Web Security/CN=foo.bar.com/emailAddress=eassl@rubyforge.org", csr.subject.to_s
21
+ end
22
+
23
+ def test_load_csr_file
24
+ file = File.join(File.dirname(__FILE__), 'csr.pem')
25
+ csr = EaSSL::SigningRequest.load(file)
26
+ assert csr
27
+ assert_equal '/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd', csr.subject.to_s
28
+ end
29
+
30
+ def test_load_csr_text
31
+ csr_text = <<CSR
32
+ -----BEGIN CERTIFICATE REQUEST-----
33
+ MIIBhDCB7gIBADBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEh
34
+ MB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEB
35
+ AQUAA4GNADCBiQKBgQC+RvNakUHlmlT3jMtkVx0Eajv6sxtzyk0qmSRKHU9/2q+1
36
+ 3/jUM9fnc18hDBoI9PsObJc8CueXFnOVN9fyaQQXyr/mesvYgNn+XTSkE8HWiFSP
37
+ CMD3Sc8picEFEW5G/ZDrkqmygIY9E/kk9tQmWFolfIjWCTQPe/xh0f9kK/MkYwID
38
+ AQABoAAwDQYJKoZIhvcNAQEFBQADgYEAp5Bf2vGSzAB9uhWZ3bDPmAcvFDgXRSrk
39
+ 3qlsOLDFy2uxHZxrJROo89YstwHMEDPHN2uNMpMaAfT2aiAVwQbjeu7/wQ5rnf35
40
+ LY18Mf/fqkFIqSolbHhaV3j1MvBMseAj3GidItX/HZiwzU2dSsb36o8KthkO5IX1
41
+ 9R2JzARogT0=
42
+ -----END CERTIFICATE REQUEST-----
43
+ CSR
44
+ csr = EaSSL::SigningRequest.new.load(csr_text)
45
+ assert csr
46
+ assert_equal '/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd', csr.subject.to_s
47
+ end
48
+
49
+ def test_load_nonexistent_file
50
+ assert_raises Errno::ENOENT do
51
+ key = EaSSL::SigningRequest.load('./foo')
52
+ end
53
+ end
54
+
55
+ def test_load_bad_file
56
+ file = File.join(File.dirname(__FILE__), '..', 'Rakefile')
57
+ assert_raises RuntimeError do
58
+ key = EaSSL::SigningRequest.load(file)
59
+ end
60
+ end
61
+
62
+ end
@@ -0,0 +1,6 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIGsAgEAAiEAy57X7ZFkqicM+Nb9kOjCBs0Fz3dc3F3nhqx9cDnwHaMCAwEAAQIh
3
+ ALOYKsOzVaJuRxbEKWpCob5hIpOCJqwmdA9cFbrEv9zhAhEA/B/sb8dzCvaFM/p5
4
+ Bt6Y7QIRAM7AD/gt+xiWUH8z+ra7js8CEQCXelqkofFloc1P+GnkjbLVAhAriPXT
5
+ 5JrDCqPYpTFd2RCxAhEA+WMGuSLXT3xK5XP/LHIiVg==
6
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEAw9G3VIUg4bLOKIjAab7iUvplYWm2O0CeCO7eDnOO5ChtBjLi
3
+ SoJAca0bE/8T1IYs10lsihuNSQgjqlBm87crrzNPTR/QmMUBxII15IBW8FL4pgcX
4
+ CBpniUtFzlxdTrvq9P9bg7U+v5VTcd7bMhvfpVikK9oyLMmDnEHakd1MzXW4kukR
5
+ u6QecjXZGzT7brzH7aRJ7boTJWfx/elAh6GPwBFaMOShQbBNDB4e+19yfRUeXHM5
6
+ pS/2fhQXXDWc0x9WZ9VTNjRfFGUl6RhYNMz3MpMWZV6Tibkg/kmWtNlmHwI+libt
7
+ sRLktjQch9d/O4H+L+BaTOJHJ9Vqxu7xaPp9UQIDAQABAoIBACMCapmE17UiZ7Nd
8
+ h7EgPIyDUf7RjJAZZGfKdQ72YBSwmZVjIYwar3TjcxTnJN95QakX6nzioibteprn
9
+ lxB5rii7rrDmQEAf8Mn2UbZRr7l1zBi66cY8Gki0mX1kjBYYiNBWm0D39YkBJJMW
10
+ OfBChYClUWy5rQDO4mXcbDxp6WJOGqqodCzJLoC5tSs8XZsKgaUMoDIRiZ9hc61O
11
+ a8RXl7bYOihuShDQalzPF3WCzu+B1k6FXkO23uhOdO9Cuf/Sj7VG2TPazaFM9L7V
12
+ NhzKFOH4AGdGnPGpF/eJXjbXMnFTpF735qu8ae4/7idKweCTVfKO48USLZwQJOKp
13
+ BJPEwjUCgYEA4eRO0x3KHKPoAeK0cORRRG746XnnoPuOE1yGILXJ8Gk/mAgvs/Hk
14
+ TaRnJhVcjFIoCJuJ0m+Uvu5ceFyezcpZBx3HG9GFR1TS5uxaGh9YUbulgx8MvvYj
15
+ zDBZwiSMLJNdowhAy7Eikwb3Qg7A+dRuSE7XgrhsUbl1hDwmMs7hKA8CgYEA3etL
16
+ l+J9+XY0t5XOSC15Pc63f1TH8YrmoMKurNXxI+3AMS3gBf+UhS3fH8ab6romDF9o
17
+ lqmpwS6McWgTlJPI9rJe08Uqz47sagibnRp0acXpyY/4jV2umKycQ8/qcOuUDZGb
18
+ dlJIxPyme4k21NvUzAOUqnw7WI2O1Rx5A4n3pJ8CgYEA1YZXUE5fZ1U0ENw4DmJz
19
+ w0lWtnPKFKzUrs6N5suP+FW0jERouyLS2OWnryMQGX/rYb+MtsNMinKMLCX44rP8
20
+ FbL7K/uQjU3MEgamYPzyIkhK+rfV94h5bCDkJ5Uef2BJabt6bFCjSvGRtfp2RXGd
21
+ UXJdWq5zjYjOYdHtladiw9cCgYEA3d5K23VUIT5vAkTB0iO0nXi4uJMYu4L1hTBe
22
+ 1ummhxdCGWkWGqkl4ei0tN4qMAkf1SrmNAs4bq2NOCynttnyB8LZT7xGSvFHp9Mn
23
+ UXCLhtyaGizYgO1yi623JY0PhQniIZa76RXnLxqxj7zllvaZz8acsb42zxfn/2TS
24
+ EBm1/10CgYBHVOKSK5JRtzw2uEzjr/CQhR3Eckxlh487yJuH4nOaXiUP4qBzeuV3
25
+ O8DtW1+lHVIlJhaiTCQnqUJIagSBk0IltOu+f1w13i0+BAMsK7HIhy3KNBP93fB/
26
+ MV+O+vFlY9kvVWXaRrLkZnUDF5klZSf59RokH1E5oq7xKTGvjdOpig==
27
+ -----END RSA PRIVATE KEY-----
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: eassl2
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Paul Nicholson
9
+ - Paul Meserve
10
+ - Chris Andrews
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2012-07-20 00:00:00.000000000Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: bundler
18
+ requirement: &2158396340 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 1.0.0
24
+ type: :development
25
+ prerelease: false
26
+ version_requirements: *2158396340
27
+ - !ruby/object:Gem::Dependency
28
+ name: jeweler
29
+ requirement: &2158393240 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: 1.5.2
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: *2158393240
38
+ - !ruby/object:Gem::Dependency
39
+ name: rcov
40
+ requirement: &2158392540 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ type: :development
47
+ prerelease: false
48
+ version_requirements: *2158392540
49
+ - !ruby/object:Gem::Dependency
50
+ name: simplecov
51
+ requirement: &2158391940 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: *2158391940
60
+ description: This gem is a more featureful but still drop-in replacement for eassl
61
+ 0.1.1643
62
+ email: chris@nodnol.org
63
+ executables: []
64
+ extensions: []
65
+ extra_rdoc_files:
66
+ - LICENSE.txt
67
+ - README.txt
68
+ files:
69
+ - .document
70
+ - Gemfile
71
+ - Gemfile.lock
72
+ - LICENSE.txt
73
+ - README.txt
74
+ - Rakefile
75
+ - Readme.mkd
76
+ - VERSION
77
+ - eassl2.gemspec
78
+ - lib/eassl.rb
79
+ - lib/eassl/authority_certificate.rb
80
+ - lib/eassl/certificate.rb
81
+ - lib/eassl/certificate_authority.rb
82
+ - lib/eassl/certificate_name.rb
83
+ - lib/eassl/key.rb
84
+ - lib/eassl/serial.rb
85
+ - lib/eassl/signing_request.rb
86
+ - test/CA/cacert.pem
87
+ - test/CA/cakey.pem
88
+ - test/CA/serial.txt
89
+ - test/certificate.pem
90
+ - test/csr.pem
91
+ - test/encrypted_key.pem
92
+ - test/helper.rb
93
+ - test/test_eassl.rb
94
+ - test/test_eassl_authority_certificate.rb
95
+ - test/test_eassl_certificate.rb
96
+ - test/test_eassl_certificate_authority.rb
97
+ - test/test_eassl_key.rb
98
+ - test/test_eassl_key_csr.rb
99
+ - test/test_eassl_sign_cert.rb
100
+ - test/test_eassl_signing_request.rb
101
+ - test/unencrypted_key.pem
102
+ - test/unencrypted_key2.pem
103
+ homepage: http://github.com/chrisa/eassl
104
+ licenses:
105
+ - Ruby
106
+ post_install_message:
107
+ rdoc_options: []
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ segments:
117
+ - 0
118
+ hash: -1370647162444039818
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ none: false
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ requirements: []
126
+ rubyforge_project:
127
+ rubygems_version: 1.8.6
128
+ signing_key:
129
+ specification_version: 3
130
+ summary: EaSSL is a library aimed at making openSSL certificate generation and management
131
+ easier and more ruby-ish.
132
+ test_files:
133
+ - test/helper.rb
134
+ - test/test_eassl.rb
135
+ - test/test_eassl_authority_certificate.rb
136
+ - test/test_eassl_certificate.rb
137
+ - test/test_eassl_certificate_authority.rb
138
+ - test/test_eassl_key.rb
139
+ - test/test_eassl_key_csr.rb
140
+ - test/test_eassl_sign_cert.rb
141
+ - test/test_eassl_signing_request.rb