r509 0.9.1 → 0.9.2

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.
Files changed (68) hide show
  1. data/README.md +3 -4
  2. data/doc/R509.html +10 -10
  3. data/doc/R509/ASN1.html +1 -1
  4. data/doc/R509/ASN1/GeneralName.html +1 -1
  5. data/doc/R509/ASN1/GeneralNames.html +1 -1
  6. data/doc/R509/ASN1/NoticeReference.html +1 -1
  7. data/doc/R509/ASN1/PolicyInformation.html +1 -1
  8. data/doc/R509/ASN1/PolicyQualifiers.html +1 -1
  9. data/doc/R509/ASN1/UserNotice.html +1 -1
  10. data/doc/R509/CRL.html +1 -1
  11. data/doc/R509/CRL/Administrator.html +1 -1
  12. data/doc/R509/CRL/SignedList.html +1 -1
  13. data/doc/R509/CSR.html +1 -1
  14. data/doc/R509/Cert.html +1 -1
  15. data/doc/R509/Cert/Extensions.html +1 -1
  16. data/doc/R509/Cert/Extensions/AuthorityInfoAccess.html +1 -1
  17. data/doc/R509/Cert/Extensions/AuthorityKeyIdentifier.html +1 -1
  18. data/doc/R509/Cert/Extensions/BasicConstraints.html +1 -1
  19. data/doc/R509/Cert/Extensions/CRLDistributionPoints.html +1 -1
  20. data/doc/R509/Cert/Extensions/CertificatePolicies.html +1 -1
  21. data/doc/R509/Cert/Extensions/ExtendedKeyUsage.html +1 -1
  22. data/doc/R509/Cert/Extensions/InhibitAnyPolicy.html +1 -1
  23. data/doc/R509/Cert/Extensions/KeyUsage.html +1 -1
  24. data/doc/R509/Cert/Extensions/NameConstraints.html +1 -1
  25. data/doc/R509/Cert/Extensions/OCSPNoCheck.html +1 -1
  26. data/doc/R509/Cert/Extensions/PolicyConstraints.html +1 -1
  27. data/doc/R509/Cert/Extensions/SubjectAlternativeName.html +1 -1
  28. data/doc/R509/Cert/Extensions/SubjectKeyIdentifier.html +1 -1
  29. data/doc/R509/CertificateAuthority.html +1 -1
  30. data/doc/R509/CertificateAuthority/Signer.html +1 -1
  31. data/doc/R509/Config.html +1 -1
  32. data/doc/R509/Config/CAConfig.html +61 -61
  33. data/doc/R509/Config/CAConfigPool.html +16 -16
  34. data/doc/R509/Config/CAProfile.html +31 -31
  35. data/doc/R509/Config/SubjectItemPolicy.html +13 -13
  36. data/doc/R509/Engine.html +416 -0
  37. data/doc/R509/IOHelpers.html +1 -1
  38. data/doc/R509/MessageDigest.html +1 -1
  39. data/doc/R509/NameSanitizer.html +1 -1
  40. data/doc/R509/OCSP.html +1 -1
  41. data/doc/R509/OCSP/Request.html +1 -1
  42. data/doc/R509/OCSP/Request/Nonce.html +1 -1
  43. data/doc/R509/OCSP/Response.html +1 -1
  44. data/doc/R509/OIDMapper.html +1 -1
  45. data/doc/R509/PrivateKey.html +1 -1
  46. data/doc/R509/R509Error.html +1 -1
  47. data/doc/R509/SPKI.html +1 -1
  48. data/doc/R509/Subject.html +1 -1
  49. data/doc/R509/Validity.html +1 -1
  50. data/doc/R509/Validity/Checker.html +1 -1
  51. data/doc/R509/Validity/DefaultChecker.html +1 -1
  52. data/doc/R509/Validity/DefaultWriter.html +1 -1
  53. data/doc/R509/Validity/Status.html +1 -1
  54. data/doc/R509/Validity/Writer.html +1 -1
  55. data/doc/_index.html +8 -1
  56. data/doc/class_list.html +1 -1
  57. data/doc/file.README.html +4 -5
  58. data/doc/file.r509.html +1 -1
  59. data/doc/index.html +4 -5
  60. data/doc/method_list.html +443 -419
  61. data/doc/top-level-namespace.html +1 -1
  62. data/lib/r509.rb +1 -0
  63. data/lib/r509/config.rb +2 -1
  64. data/lib/r509/engine.rb +36 -0
  65. data/lib/r509/version.rb +1 -1
  66. data/spec/certificate_authority_spec.rb +4 -1
  67. data/spec/fixtures/config_test_various.yaml +2 -1
  68. metadata +5 -3
@@ -103,7 +103,7 @@
103
103
  </div>
104
104
 
105
105
  <div id="footer">
106
- Generated on Wed Apr 17 15:21:06 2013 by
106
+ Generated on Tue Apr 23 10:46:04 2013 by
107
107
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
108
108
  0.8.5 (ruby-1.9.3).
109
109
  </div>
@@ -14,6 +14,7 @@ module R509
14
14
  require('r509/validity.rb')
15
15
  require('r509/ec-hack.rb')
16
16
  require('r509/asn1.rb')
17
+ require('r509/engine.rb')
17
18
  require('r509/version.rb')
18
19
 
19
20
  # print version information to console
@@ -4,6 +4,7 @@ require 'r509/exceptions'
4
4
  require 'r509/io_helpers'
5
5
  require 'r509/subject'
6
6
  require 'r509/private_key'
7
+ require 'r509/engine'
7
8
  require 'fileutils'
8
9
  require 'pathname'
9
10
 
@@ -522,7 +523,7 @@ module R509
522
523
  engine = ca_cert_hash['engine']
523
524
  else
524
525
  #this path can't be tested by unit tests. bah!
525
- engine = OpenSSL::Engine.by_id(ca_cert_hash['engine'])
526
+ engine = R509::Engine.instance.load(ca_cert_hash['engine'])
526
527
  end
527
528
  ca_key = R509::PrivateKey.new(
528
529
  :engine => engine,
@@ -0,0 +1,36 @@
1
+ require 'singleton'
2
+ require 'openssl'
3
+
4
+ module R509
5
+ # a singleton class to store loaded OpenSSL Engines
6
+ class Engine
7
+ include Singleton
8
+
9
+ def initialize
10
+ @engines = {}
11
+ end
12
+
13
+ # @param hash Takes a hash with SO_PATH and ID
14
+ # @return OpenSSL::Engine object
15
+ def load(hash)
16
+ if not hash.has_key?("SO_PATH") or not hash.has_key?("ID")
17
+ raise ArgumentError, "You must supply a hash with both SO_PATH and ID"
18
+ end
19
+ if @engines.has_key?(hash["ID"])
20
+ @engines[hash["ID"]]
21
+ else
22
+ OpenSSL::Engine.load
23
+ @engines[hash["ID"]] = OpenSSL::Engine.by_id("dynamic") do |e|
24
+ e.ctrl_cmd("SO_PATH",hash["SO_PATH"])
25
+ e.ctrl_cmd("ID",hash["ID"])
26
+ e.ctrl_cmd("LOAD")
27
+ end
28
+ end
29
+ end
30
+
31
+ # Takes an engine ID and returns the engine object
32
+ def [](key)
33
+ @engines[key]
34
+ end
35
+ end
36
+ end
@@ -1,4 +1,4 @@
1
1
  module R509
2
2
  #The version of the r509 gem
3
- VERSION="0.9.1"
3
+ VERSION="0.9.2"
4
4
  end
@@ -165,7 +165,7 @@ describe R509::CertificateAuthority::Signer do
165
165
  ca = R509::CertificateAuthority::Signer.new(config)
166
166
  cert = ca.sign(:csr => csr, :profile_name => 'server')
167
167
  cert.certificate_policies.should_not be_nil
168
- cert.certificate_policies.policies.count.should == 2
168
+ cert.certificate_policies.policies.count.should == 3
169
169
  p0 = cert.certificate_policies.policies[0]
170
170
  p0.policy_identifier.should == "2.16.840.1.99999.21.234"
171
171
  p0.policy_qualifiers.cps_uris.should == ["http://example.com/cps", "http://haha.com"]
@@ -185,6 +185,9 @@ describe R509::CertificateAuthority::Signer do
185
185
  un2 = p1.policy_qualifiers.user_notices[1]
186
186
  un2.notice_reference.should be_nil
187
187
  un2.explicit_text.should == "another user notice"
188
+ p2 = cert.certificate_policies.policies[2]
189
+ p2.policy_identifier.should == "2.16.840.1.99999.0"
190
+ p2.policy_qualifiers.should be_nil
188
191
  end
189
192
  it "issues a certificate with an authority key identifier" do
190
193
  csr = R509::CSR.new(:csr => @csr)
@@ -64,7 +64,8 @@ multi_policy_ca: {
64
64
  { policy_identifier: "2.16.840.1.99999.21.235",
65
65
  cps_uris: ["http://example.com/cps2"],
66
66
  user_notices: [ { explicit_text: "this is a bad thing", organization: "another org", notice_numbers: "3,2,1" },{ explicit_text: "another user notice"} ]
67
- }
67
+ },
68
+ { policy_identifier: "2.16.840.1.99999.0" }
68
69
  ]
69
70
  }
70
71
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r509
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-17 00:00:00.000000000 Z
12
+ date: 2013-04-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: trollop
@@ -95,6 +95,7 @@ files:
95
95
  - lib/r509/crl.rb
96
96
  - lib/r509/csr.rb
97
97
  - lib/r509/ec-hack.rb
98
+ - lib/r509/engine.rb
98
99
  - lib/r509/exceptions.rb
99
100
  - lib/r509/io_helpers.rb
100
101
  - lib/r509/message_digest.rb
@@ -265,6 +266,7 @@ files:
265
266
  - doc/R509/CRL/SignedList.html
266
267
  - doc/R509/CRL.html
267
268
  - doc/R509/CSR.html
269
+ - doc/R509/Engine.html
268
270
  - doc/R509/IOHelpers.html
269
271
  - doc/R509/MessageDigest.html
270
272
  - doc/R509/NameSanitizer.html
@@ -305,7 +307,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
305
307
  version: '0'
306
308
  segments:
307
309
  - 0
308
- hash: 2724354738993155579
310
+ hash: -4196809951687890655
309
311
  requirements: []
310
312
  rubyforge_project:
311
313
  rubygems_version: 1.8.23