r509 0.10.0 → 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/README.mdown +2 -2
  5. data/Rakefile +2 -3
  6. data/bin/r509 +77 -80
  7. data/bin/r509-parse +4 -4
  8. data/doc/R509.html +60 -60
  9. data/doc/R509/ASN1.html +158 -48
  10. data/doc/R509/ASN1/GeneralName.html +157 -154
  11. data/doc/R509/ASN1/GeneralNames.html +246 -237
  12. data/doc/R509/CRL.html +41 -39
  13. data/doc/R509/CRL/Administrator.html +105 -100
  14. data/doc/R509/CRL/FileReaderWriter.html +146 -98
  15. data/doc/R509/CRL/ReaderWriter.html +57 -54
  16. data/doc/R509/CRL/SQLiteReaderWriter.html +727 -0
  17. data/doc/R509/CRL/SignedList.html +83 -80
  18. data/doc/R509/CSR.html +184 -162
  19. data/doc/R509/Cert.html +271 -269
  20. data/doc/R509/Cert/Extensions.html +62 -63
  21. data/doc/R509/Cert/Extensions/AuthorityInfoAccess.html +138 -108
  22. data/doc/R509/Cert/Extensions/AuthorityKeyIdentifier.html +100 -84
  23. data/doc/R509/Cert/Extensions/BasicConstraints.html +89 -88
  24. data/doc/R509/Cert/Extensions/CRLDistributionPoints.html +87 -83
  25. data/doc/R509/Cert/Extensions/CertificatePolicies.html +78 -76
  26. data/doc/R509/Cert/Extensions/ExtendedKeyUsage.html +128 -125
  27. data/doc/R509/Cert/Extensions/GeneralNamesMixin.html +83 -78
  28. data/doc/R509/Cert/Extensions/InhibitAnyPolicy.html +69 -67
  29. data/doc/R509/Cert/Extensions/KeyUsage.html +138 -135
  30. data/doc/R509/Cert/Extensions/NameConstraints.html +82 -81
  31. data/doc/R509/Cert/Extensions/NoticeReference.html +59 -56
  32. data/doc/R509/Cert/Extensions/OCSPNoCheck.html +70 -69
  33. data/doc/R509/Cert/Extensions/PolicyConstraints.html +71 -69
  34. data/doc/R509/Cert/Extensions/PolicyInformation.html +63 -60
  35. data/doc/R509/Cert/Extensions/PolicyQualifiers.html +60 -57
  36. data/doc/R509/Cert/Extensions/SubjectAlternativeName.html +91 -87
  37. data/doc/R509/Cert/Extensions/SubjectKeyIdentifier.html +72 -71
  38. data/doc/R509/Cert/Extensions/UserNotice.html +60 -57
  39. data/doc/R509/Cert/Extensions/ValidationMixin.html +43 -40
  40. data/doc/R509/CertificateAuthority.html +39 -37
  41. data/doc/R509/CertificateAuthority/OptionsBuilder.html +58 -55
  42. data/doc/R509/CertificateAuthority/Signer.html +277 -60
  43. data/doc/R509/Config.html +40 -38
  44. data/doc/R509/Config/CAConfig.html +255 -188
  45. data/doc/R509/Config/CAConfigPool.html +64 -61
  46. data/doc/R509/Config/CertProfile.html +119 -116
  47. data/doc/R509/Config/SubjectItemPolicy.html +94 -93
  48. data/doc/R509/Engine.html +60 -56
  49. data/doc/R509/Helpers.html +99 -96
  50. data/doc/R509/MessageDigest.html +69 -68
  51. data/doc/R509/NameSanitizer.html +51 -48
  52. data/doc/R509/OCSP.html +39 -37
  53. data/doc/R509/OCSP/Request.html +39 -37
  54. data/doc/R509/OCSP/Request/Nonce.html +67 -67
  55. data/doc/R509/OCSP/Response.html +93 -90
  56. data/doc/R509/OIDMapper.html +48 -46
  57. data/doc/R509/PrivateKey.html +170 -169
  58. data/doc/R509/R509Error.html +45 -42
  59. data/doc/R509/SPKI.html +99 -89
  60. data/doc/R509/Subject.html +86 -83
  61. data/doc/R509/Validity.html +57 -57
  62. data/doc/R509/Validity/Checker.html +63 -93
  63. data/doc/R509/Validity/DefaultChecker.html +58 -55
  64. data/doc/R509/Validity/DefaultWriter.html +62 -59
  65. data/doc/R509/Validity/Status.html +77 -74
  66. data/doc/R509/Validity/Writer.html +75 -123
  67. data/doc/_index.html +37 -31
  68. data/doc/class_list.html +25 -27
  69. data/doc/css/full_list.css +32 -31
  70. data/doc/css/style.css +221 -78
  71. data/doc/file.CONTRIBUTING.html +29 -30
  72. data/doc/file.LICENSE.html +29 -30
  73. data/doc/file.README.html +31 -32
  74. data/doc/file.YAML.html +33 -34
  75. data/doc/file.r509.html +39 -48
  76. data/doc/file_list.html +39 -30
  77. data/doc/frames.html +10 -21
  78. data/doc/index.html +31 -32
  79. data/doc/js/app.js +100 -71
  80. data/doc/js/full_list.js +168 -130
  81. data/doc/method_list.html +1788 -1119
  82. data/doc/top-level-namespace.html +45 -49
  83. data/lib/r509.rb +21 -7
  84. data/lib/r509/asn1.rb +45 -32
  85. data/lib/r509/cert.rb +45 -51
  86. data/lib/r509/cert/extensions/authority_info_access.rb +49 -23
  87. data/lib/r509/cert/extensions/authority_key_identifier.rb +16 -11
  88. data/lib/r509/cert/extensions/base.rb +22 -23
  89. data/lib/r509/cert/extensions/basic_constraints.rb +11 -12
  90. data/lib/r509/cert/extensions/certificate_policies.rb +26 -26
  91. data/lib/r509/cert/extensions/crl_distribution_points.rb +5 -7
  92. data/lib/r509/cert/extensions/extended_key_usage.rb +5 -5
  93. data/lib/r509/cert/extensions/inhibit_any_policy.rb +4 -3
  94. data/lib/r509/cert/extensions/key_usage.rb +5 -5
  95. data/lib/r509/cert/extensions/name_constraints.rb +16 -16
  96. data/lib/r509/cert/extensions/ocsp_no_check.rb +3 -3
  97. data/lib/r509/cert/extensions/policy_constraints.rb +8 -8
  98. data/lib/r509/cert/extensions/subject_alternative_name.rb +5 -4
  99. data/lib/r509/cert/extensions/subject_key_identifier.rb +5 -5
  100. data/lib/r509/cert/extensions/validation_mixin.rb +11 -10
  101. data/lib/r509/certificate_authority/options_builder.rb +19 -21
  102. data/lib/r509/certificate_authority/signer.rb +26 -27
  103. data/lib/r509/config.rb +1 -0
  104. data/lib/r509/config/ca_config.rb +70 -75
  105. data/lib/r509/config/cert_profile.rb +9 -8
  106. data/lib/r509/config/subject_item_policy.rb +25 -28
  107. data/lib/r509/crl/administrator.rb +19 -20
  108. data/lib/r509/crl/reader_writer.rb +10 -8
  109. data/lib/r509/crl/signed_list.rb +4 -4
  110. data/lib/r509/crl/sqlite_reader_writer.rb +75 -0
  111. data/lib/r509/csr.rb +54 -60
  112. data/lib/r509/ec-hack.rb +3 -2
  113. data/lib/r509/engine.rb +5 -6
  114. data/lib/r509/exceptions.rb +1 -1
  115. data/lib/r509/helpers.rb +11 -14
  116. data/lib/r509/io_helpers.rb +7 -7
  117. data/lib/r509/message_digest.rb +5 -6
  118. data/lib/r509/ocsp.rb +11 -13
  119. data/lib/r509/oid_mapper.rb +2 -2
  120. data/lib/r509/private_key.rb +28 -32
  121. data/lib/r509/spki.rb +17 -20
  122. data/lib/r509/subject.rb +26 -27
  123. data/lib/r509/trollop.rb +1 -0
  124. data/lib/r509/validity.rb +30 -21
  125. data/lib/r509/version.rb +4 -2
  126. data/r509.yaml +9 -17
  127. data/spec/asn1_spec.rb +145 -146
  128. data/spec/cert/extensions/authority_info_access_spec.rb +41 -41
  129. data/spec/cert/extensions/authority_key_identifier_spec.rb +29 -23
  130. data/spec/cert/extensions/base_spec.rb +38 -34
  131. data/spec/cert/extensions/basic_constraints_spec.rb +21 -21
  132. data/spec/cert/extensions/certificate_policies_spec.rb +99 -87
  133. data/spec/cert/extensions/crl_distribution_points_spec.rb +24 -25
  134. data/spec/cert/extensions/extended_key_usage_spec.rb +40 -36
  135. data/spec/cert/extensions/inhibit_any_policy_spec.rb +12 -12
  136. data/spec/cert/extensions/key_usage_spec.rb +44 -39
  137. data/spec/cert/extensions/name_constraints_spec.rb +83 -83
  138. data/spec/cert/extensions/ocsp_no_check_spec.rb +10 -10
  139. data/spec/cert/extensions/policy_constraints_spec.rb +19 -19
  140. data/spec/cert/extensions/subject_alternative_name_spec.rb +46 -47
  141. data/spec/cert/extensions/subject_key_identifier_spec.rb +10 -10
  142. data/spec/cert_spec.rb +105 -101
  143. data/spec/certificate_authority/options_builder_spec.rb +90 -90
  144. data/spec/certificate_authority/signer_spec.rb +41 -41
  145. data/spec/config/ca_config_spec.rb +169 -119
  146. data/spec/config/cert_profile_spec.rb +33 -33
  147. data/spec/config/subject_item_policy_spec.rb +22 -22
  148. data/spec/crl/administrator_spec.rb +65 -65
  149. data/spec/crl/reader_writer_spec.rb +20 -19
  150. data/spec/crl/signed_list_spec.rb +26 -26
  151. data/spec/crl/sqlite_reader_writer_spec.rb +42 -0
  152. data/spec/csr_spec.rb +149 -145
  153. data/spec/engine_spec.rb +14 -14
  154. data/spec/fixtures.rb +56 -39
  155. data/spec/fixtures/crl_list.sql +13 -0
  156. data/spec/fixtures/csr1.der +0 -0
  157. data/spec/fixtures/csr1.pem +6 -6
  158. data/spec/message_digest_spec.rb +43 -43
  159. data/spec/ocsp_spec.rb +25 -25
  160. data/spec/oid_mapper_spec.rb +18 -19
  161. data/spec/private_key_spec.rb +79 -81
  162. data/spec/r509_spec.rb +16 -16
  163. data/spec/spec_helper.rb +3 -3
  164. data/spec/spki_spec.rb +94 -94
  165. data/spec/subject_spec.rb +107 -107
  166. data/spec/validity_spec.rb +25 -25
  167. metadata +113 -111
  168. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ca8c4fec95f6c1bfcee73da8585a30867b18e77f
4
- data.tar.gz: a4fd0c67c5479b69f2359aaa61b11eae597c7480
3
+ metadata.gz: 562903e3dc32d6329ab86cb309e457a5980317c5
4
+ data.tar.gz: 41cabe1dd8f48dc0ff5fe68ddecc3e165e7e4843
5
5
  SHA512:
6
- metadata.gz: 68ca9e7f94cb8d122ad0f2ab6ec5584149f0683dc9d9ac6dcd608788db86c807b5d34b9312ea452a88960c275b30003ff8de7c90ca3b39179866acbabacc3cb7
7
- data.tar.gz: b04daa9448a25761cb2900dc449f52056ab8d91bfef86f6fa33cbd4ca3c7c61e769fa0988e8b5a6619caad28124d55e4257a488dc2758f3e92eaf57bf861a791
6
+ metadata.gz: bbad952fef78a95c90ab557a2886064a75c448d02f924219ab4234d2cdc180349413f41afdde9e7b2e68f2d1023a22953d03f094eed874b57e47248f7c24606e
7
+ data.tar.gz: b59f9c35ea888698344eaddde1c29490d4475755c5da9fba6ffbf756ed3243663489deedb61025b5b23ff30c7f3ac91a248ea89800c3073a00164b4967469787
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -337,7 +337,7 @@ example_ca:
337
337
  key: <add_path>
338
338
  ocsp_start_skew_seconds: 3600
339
339
  ocsp_validity_hours: 168
340
- crl_md: SHA1
340
+ crl_md: SHA256
341
341
  profiles:
342
342
  profile:
343
343
  subject_item_policy:
@@ -396,7 +396,7 @@ subject.common_name = "newdomain.com"
396
396
  subject.organization = "Org 2.0"
397
397
  ext = []
398
398
  ext << R509::Cert::Extensions::BasicConstraints.new(:ca => false)
399
- ext << R509::Cert::Extensions::SubjectAlternativeName.new(:names => san_names)
399
+ ext << R509::Cert::Extensions::SubjectAlternativeName.new(:value => san_names)
400
400
  # assume config from yaml load above
401
401
  ca = R509::CertificateAuthority::Signer.new(config)
402
402
  cert = ca.sign(
data/Rakefile CHANGED
@@ -30,15 +30,14 @@ end
30
30
 
31
31
  desc "Open an irb session with the lib dir included"
32
32
  task :irb do
33
- $:.unshift File.expand_path("../../lib", __FILE__)
34
- $:.unshift File.expand_path("../", __FILE__)
33
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
34
+ $LOAD_PATH.unshift File.expand_path("../", __FILE__)
35
35
  require 'r509'
36
36
  require 'irb'
37
37
  ARGV.clear
38
38
  IRB.start
39
39
  end
40
40
 
41
-
42
41
  desc 'Build yard documentation'
43
42
  task :yard do
44
43
  puts `yard`
data/bin/r509 CHANGED
@@ -2,29 +2,38 @@
2
2
  require 'rubygems'
3
3
  require 'r509'
4
4
  require 'r509/trollop'
5
+ require 'io/console'
5
6
 
6
- opts = R509::Trollop::options do
7
+ opts = R509::Trollop.options do
7
8
  opt :interactive, "Interactive CSR/self-signed certificate generation. Overrides all flags other than keyout and out."
8
9
  opt :subject, "X509 subject / delimited. Example: /CN=test.com/O=Org/C=US/ST=Illinois/L=Chicago", :type => :string
9
- opt :message_digest, "Message digest to use. sha1, sha224, sha256, sha384, sha512, md5", :type => :string, :default => 'sha1'
10
+ opt :san, "Subject Alternative Name Example: test.com,*.test.com", :type => :string
11
+ opt :message_digest, "Message digest to use. sha1, sha224, sha256, sha384, sha512, md5", :type => :string, :default => 'sha256'
10
12
  opt :duration, "Self-sign the certificate with the duration (in days) specified.", :type => :integer
11
13
  opt :bits, "Bit length of generated key. Ignored for EC.", :type => :integer, :default => 2048
12
14
  opt :curve_name, "Name of elliptic curve to use. Only used for EC.", :type => :string, :default => 'secp384r1'
13
15
  opt :keyout, "File name to save generated key.", :type => :string
14
16
  opt :out, "File name to save generated CSR or self-signed certificate", :type => :string
15
17
  opt :type, "Type of key to generate. RSA/DSA/EC", :type => :string, :default => "RSA"
18
+ opt :password, "Password to encrypt generated key", :type => :string
19
+ if RUBY_PLATFORM.match('darwin')
20
+ opt :clipboard, "Copy CSR or certificate to the clipboard", :default => false, :short => :p
21
+ end
16
22
  version "r509 #{R509::VERSION}"
17
23
  end
18
24
 
19
- if opts[:interactive] == true or opts[:subject].nil? then
20
- if opts[:type].upcase == "RSA" or opts[:type].upcase == "DSA"
25
+ opts[:duration] = opts[:duration].to_i
26
+ subject = []
27
+
28
+ if opts[:interactive] == true || opts[:subject].nil?
29
+ if opts[:type].upcase == "RSA" || opts[:type].upcase == "DSA"
21
30
  print "CSR Bit Length (2048):"
22
31
  bit_length = gets.chomp
23
- bit_length = (bit_length.to_i > 0)? bit_length.to_i : 2048
32
+ opts[:bits] = (bit_length.to_i > 0) ? bit_length.to_i : 2048
24
33
  elsif opts[:type].upcase == "EC"
25
34
  print "Curve Name (secp384r1):"
26
35
  curve_name = gets.chomp
27
- curve_name = (not curve_name.empty?)? curve_name : 'secp384r1'
36
+ opts[:curve_name] = (!curve_name.empty?) ? curve_name : 'secp384r1'
28
37
  else
29
38
  puts "Invalid key type specified. RSA/DSA/EC"
30
39
  exit
@@ -42,115 +51,103 @@ if opts[:interactive] == true or opts[:subject].nil? then
42
51
  else R509::MessageDigest::DEFAULT_MD
43
52
  end
44
53
 
45
- subject = []
46
54
  print "C (US): "
47
55
  c = gets.chomp
48
- c = c.empty? ? 'US':c;
49
- subject.push ['C',c]
56
+ c = c.empty? ? 'US' : c
57
+ subject.push ['C', c]
50
58
 
51
59
  print "ST (Illinois): "
52
60
  st = gets.chomp
53
- st = st.empty? ? 'Illinois':st;
54
- subject.push ['ST',st]
61
+ st = st.empty? ? 'Illinois' : st
62
+ subject.push ['ST', st]
55
63
 
56
64
  print "L (Chicago): "
57
65
  l = gets.chomp
58
- l = l.empty? ? 'Chicago':l;
59
- subject.push ['L',l]
66
+ l = l.empty? ? 'Chicago' : l
67
+ subject.push ['L', l]
60
68
 
61
69
  print "O (r509 LLC): "
62
70
  o = gets.chomp
63
- o = o.empty? ? 'r509 LLC':o;
64
- subject.push ['O',o]
71
+ o = o.empty? ? 'r509 LLC' : o
72
+ subject.push ['O', o]
65
73
 
66
74
  print "OU (null by default): "
67
75
  ou = gets.chomp
68
- if(!ou.empty?) then
69
- subject.push ['OU',ou]
76
+ unless ou.empty?
77
+ subject.push ['OU', ou]
70
78
  end
71
79
 
72
80
  print "CN: "
73
- subject.push ['CN',gets.chomp]
81
+ subject.push ['CN', gets.chomp]
74
82
  print "SAN Domains (comma separated):"
75
- san_domains = []
76
- san_domains = gets.chomp.split(',').collect { |domain| domain.strip }
77
- csr = R509::CSR.new(
78
- :subject => subject,
79
- :bit_length => bit_length,
80
- :type => opts[:type].upcase,
81
- :curve_name => curve_name,
82
- :san_names => san_domains,
83
- :message_digest => opts[:message_digest]
84
- )
83
+ opts[:san] = gets.chomp
85
84
 
86
- selfsign = 0
87
85
  print "Self-signed cert duration in days (null disables self-sign):"
88
- selfsign_input = gets.chomp
89
- if selfsign_input.to_i > 0
90
- selfsign = selfsign_input.to_i
86
+ opts[:duration] = gets.chomp.to_i
87
+
88
+ print "Password to encrypt generated key (empty disables encryption):"
89
+ password = STDIN.noecho(&:gets).chomp
90
+ puts ""
91
+ unless password.empty?
92
+ print "Retype password:"
93
+ password_confirm = STDIN.noecho(&:gets).chomp
94
+ puts ""
95
+ unless password == password_confirm
96
+ puts "Passwords do not match."
97
+ exit
98
+ end
99
+ opts[:password] = password
91
100
  end
92
- elsif not opts[:subject].nil?
93
- subject = OpenSSL::X509::Name.new
94
- opts[:subject].chomp.split('/').each { |item|
95
- if item != '' then
96
- value = item.split('=')
97
- subject.add_entry(value[0],value[1])
101
+ else
102
+ opts[:subject].chomp.split('/').each do |item|
103
+ if item != ''
104
+ subject.push item.split('=')[0..1]
98
105
  end
99
- }
100
- csr = R509::CSR.new(
101
- :subject => subject,
102
- :bit_length => opts[:bits],
103
- :type => opts[:type].upcase,
104
- :curve_name => opts[:curve_name],
105
- :message_digest => opts[:message_digest]
106
- )
107
- selfsign = opts[:duration] || 0
106
+ end
108
107
  end
109
108
 
109
+ csr_or_cert = csr = R509::CSR.new(
110
+ :subject => subject,
111
+ :bit_length => opts[:bits],
112
+ :type => opts[:type].upcase,
113
+ :curve_name => opts[:curve_name],
114
+ :san_names => (opts[:san] || "").split(',').map { |domain| domain.strip },
115
+ :message_digest => opts[:message_digest]
116
+ )
117
+
118
+ # for self signed, outputting the cert (not the csr)
119
+ selfsign = opts[:duration]
110
120
  if selfsign > 0
111
- cert = R509::CertificateAuthority::Signer.selfsign(
121
+ csr_or_cert = R509::CertificateAuthority::Signer.selfsign(
112
122
  :csr => csr,
113
- :not_after => Time.now.to_i+86400*selfsign,
123
+ :not_after => Time.now.to_i + 86400 * selfsign,
114
124
  :message_digest => opts[:message_digest]
115
125
  )
116
- if opts[:keyout].nil?
117
- puts csr.key.to_pem
118
- else
119
- csr.key.write_pem(opts[:keyout])
120
- end
121
- if opts[:out].nil?
122
- puts cert.to_pem
123
- else
124
- cert.write_pem(opts[:out])
125
- end
126
+ end
126
127
 
127
- puts cert.subject
128
- if not cert.san.nil?
129
- puts "SAN(s): "+cert.san.names.map { |n| n.value }.join(", ")
130
- end
131
- else
132
- if opts[:keyout].nil?
133
- puts csr.key.to_pem
128
+ if opts[:keyout]
129
+ if opts[:password]
130
+ csr.key.write_encrypted_pem(opts[:keyout], "aes256", opts[:password])
134
131
  else
135
132
  csr.key.write_pem(opts[:keyout])
136
133
  end
137
-
138
- if opts[:out].nil?
139
- puts csr.to_pem
134
+ else
135
+ if opts[:password]
136
+ puts csr.key.to_encrypted_pem("aes256", opts[:password])
140
137
  else
141
- csr.write_pem(opts[:out])
138
+ puts csr.key.to_pem
142
139
  end
140
+ end
143
141
 
144
- puts csr.subject
145
- if not csr.san.nil?
146
- puts "SAN(s): "+csr.san.names.map{|n| n.value}.join(", ")
147
- end
142
+ if opts[:out]
143
+ csr_or_cert.write_pem(opts[:out])
144
+ else
145
+ puts csr_or_cert.to_pem
148
146
  end
149
147
 
150
- if RUBY_PLATFORM.match('darwin') != nil then
151
- if selfsign > 0
152
- IO.popen('pbcopy','w').puts cert
153
- else
154
- IO.popen('pbcopy','w').puts csr
155
- end
148
+ puts csr_or_cert.subject
149
+ puts "SAN(s): #{csr_or_cert.san.names.map { |n| n.value }.join(", ")}" if csr_or_cert.san
150
+
151
+ if opts[:clipboard]
152
+ IO.popen('pbcopy', 'w').puts csr_or_cert
156
153
  end
@@ -2,7 +2,7 @@
2
2
  require 'rubygems'
3
3
  require 'r509'
4
4
 
5
- if ARGV[0].nil? then
5
+ if ARGV[0].nil?
6
6
  puts "CSR and certificate parsing using r509 v#{R509::VERSION}."
7
7
  puts "Usage: r509-parse <cert or csr>"
8
8
  else
@@ -10,16 +10,16 @@ else
10
10
  csr = R509::CSR.load_from_file ARGV[0]
11
11
  rescue
12
12
  end
13
- if not csr.nil?
13
+ if csr
14
14
  puts "Subject: #{csr.subject}"
15
15
  puts "Algorithm: #{csr.signature_algorithm}"
16
- puts "SAN Names: #{csr.san.names.map { |n| n.value }.join(" , ")}"
16
+ puts "SAN Names: #{csr.san.names.map { |n| n.value }.join(" , ")}"
17
17
  else
18
18
  begin
19
19
  cert = R509::Cert.load_from_file ARGV[0]
20
20
  rescue
21
21
  end
22
- if not cert.nil?
22
+ if cert
23
23
  puts "Subject: #{cert.subject}"
24
24
  puts "Issuer: #{cert.issuer}"
25
25
  puts "Algorithm: #{cert.signature_algorithm}"
@@ -1,12 +1,12 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
1
+ <!DOCTYPE html>
2
+ <html>
4
3
  <head>
5
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>
7
7
  Module: R509
8
8
 
9
- &mdash; Documentation by YARD 0.8.6.1
9
+ &mdash; Documentation by YARD 0.9.5
10
10
 
11
11
  </title>
12
12
 
@@ -15,9 +15,8 @@
15
15
  <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
16
 
17
17
  <script type="text/javascript" charset="utf-8">
18
- hasFrames = window.top.frames.main ? true : false;
18
+ pathId = "R509";
19
19
  relpath = '';
20
- framesUrl = "frames.html#!" + escape(window.location.href);
21
20
  </script>
22
21
 
23
22
 
@@ -28,63 +27,65 @@
28
27
 
29
28
  </head>
30
29
  <body>
31
- <div id="header">
32
- <div id="menu">
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="class_list.html"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
33
38
 
34
39
  <a href="_index.html">Index (R)</a> &raquo;
35
40
 
36
41
 
37
42
  <span class="title">R509</span>
38
43
 
39
-
40
- <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
44
  </div>
42
45
 
43
- <div id="search">
46
+ <div id="search">
44
47
 
45
48
  <a class="full_list_link" id="class_list_link"
46
49
  href="class_list.html">
47
- Class List
48
- </a>
49
-
50
- <a class="full_list_link" id="method_list_link"
51
- href="method_list.html">
52
- Method List
53
- </a>
54
-
55
- <a class="full_list_link" id="file_list_link"
56
- href="file_list.html">
57
- File List
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
58
56
  </a>
59
57
 
60
58
  </div>
61
- <div class="clear"></div>
62
- </div>
59
+ <div class="clear"></div>
60
+ </div>
63
61
 
64
- <iframe id="search_frame"></iframe>
62
+ <iframe id="search_frame" src="class_list.html"></iframe>
65
63
 
66
- <div id="content"><h1>Module: R509
64
+ <div id="content"><h1>Module: R509
67
65
 
68
66
 
69
67
 
70
68
  </h1>
69
+ <div class="box_info">
70
+
71
71
 
72
- <dl class="box">
73
72
 
74
73
 
75
-
76
74
 
77
-
78
75
 
79
76
 
77
+
78
+
79
+
80
80
 
81
- <dt class="r1 last">Defined in:</dt>
82
- <dd class="r1 last">lib/r509.rb<span class="defines">,<br />
83
- lib/r509/csr.rb,<br /> lib/r509/spki.rb,<br /> lib/r509/cert.rb,<br /> lib/r509/asn1.rb,<br /> lib/r509/config.rb,<br /> lib/r509/engine.rb,<br /> lib/r509/version.rb,<br /> lib/r509/subject.rb,<br /> lib/r509/trollop.rb,<br /> lib/r509/helpers.rb,<br /> lib/r509/io_helpers.rb,<br /> lib/r509/exceptions.rb,<br /> lib/r509/oid_mapper.rb,<br /> lib/r509/private_key.rb,<br /> lib/r509/message_digest.rb,<br /> lib/r509/crl/signed_list.rb,<br /> lib/r509/config/ca_config.rb,<br /> lib/r509/crl/reader_writer.rb,<br /> lib/r509/crl/administrator.rb,<br /> lib/r509/config/cert_profile.rb,<br /> lib/r509/cert/extensions/base.rb,<br /> lib/r509/cert/extensions/key_usage.rb,<br /> lib/r509/config/subject_item_policy.rb,<br /> lib/r509/cert/extensions/ocsp_no_check.rb,<br /> lib/r509/cert/extensions/name_constraints.rb,<br /> lib/r509/cert/extensions/validation_mixin.rb,<br /> lib/r509/cert/extensions/basic_constraints.rb,<br /> lib/r509/cert/extensions/extended_key_usage.rb,<br /> lib/r509/cert/extensions/policy_constraints.rb,<br /> lib/r509/cert/extensions/inhibit_any_policy.rb,<br /> lib/r509/cert/extensions/certificate_policies.rb,<br /> lib/r509/cert/extensions/authority_info_access.rb,<br /> lib/r509/cert/extensions/subject_key_identifier.rb,<br /> lib/r509/cert/extensions/crl_distribution_points.rb,<br /> lib/r509/cert/extensions/subject_alternative_name.rb,<br /> lib/r509/cert/extensions/authority_key_identifier.rb</span>
81
+ <dl>
82
+ <dt>Defined in:</dt>
83
+ <dd>lib/r509.rb<span class="defines">,<br />
84
+ lib/r509/csr.rb,<br /> lib/r509/spki.rb,<br /> lib/r509/asn1.rb,<br /> lib/r509/cert.rb,<br /> lib/r509/engine.rb,<br /> lib/r509/config.rb,<br /> lib/r509/version.rb,<br /> lib/r509/trollop.rb,<br /> lib/r509/subject.rb,<br /> lib/r509/helpers.rb,<br /> lib/r509/exceptions.rb,<br /> lib/r509/oid_mapper.rb,<br /> lib/r509/io_helpers.rb,<br /> lib/r509/private_key.rb,<br /> lib/r509/message_digest.rb,<br /> lib/r509/crl/signed_list.rb,<br /> lib/r509/config/ca_config.rb,<br /> lib/r509/crl/administrator.rb,<br /> lib/r509/crl/reader_writer.rb,<br /> lib/r509/config/cert_profile.rb,<br /> lib/r509/cert/extensions/base.rb,<br /> lib/r509/crl/sqlite_reader_writer.rb,<br /> lib/r509/cert/extensions/key_usage.rb,<br /> lib/r509/config/subject_item_policy.rb,<br /> lib/r509/cert/extensions/ocsp_no_check.rb,<br /> lib/r509/cert/extensions/name_constraints.rb,<br /> lib/r509/cert/extensions/validation_mixin.rb,<br /> lib/r509/cert/extensions/basic_constraints.rb,<br /> lib/r509/cert/extensions/policy_constraints.rb,<br /> lib/r509/cert/extensions/inhibit_any_policy.rb,<br /> lib/r509/cert/extensions/extended_key_usage.rb,<br /> lib/r509/cert/extensions/certificate_policies.rb,<br /> lib/r509/cert/extensions/authority_info_access.rb,<br /> lib/r509/cert/extensions/subject_key_identifier.rb,<br /> lib/r509/cert/extensions/crl_distribution_points.rb,<br /> lib/r509/cert/extensions/authority_key_identifier.rb,<br /> lib/r509/cert/extensions/subject_alternative_name.rb</span>
84
85
  </dd>
86
+ </dl>
85
87
 
86
- </dl>
87
- <div class="clear"></div>
88
+ </div>
88
89
 
89
90
  <h2>Overview</h2><div class="docstring">
90
91
  <div class="discussion">
@@ -111,11 +112,10 @@
111
112
  </p>
112
113
 
113
114
  <h2>Constant Summary</h2>
114
-
115
- <dl class="constants">
116
-
117
- <dt id="VERSION-constant" class="">VERSION =
118
- <div class="docstring">
115
+ <dl class="constants">
116
+
117
+ <dt id="VERSION-constant" class="">VERSION =
118
+ <div class="docstring">
119
119
  <div class="discussion">
120
120
 
121
121
  <p>The version of the r509 gem</p>
@@ -127,11 +127,10 @@
127
127
 
128
128
 
129
129
  </div>
130
- </dt>
131
- <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>0.10.0</span><span class='tstring_end'>&quot;</span></span></pre></dd>
132
-
133
- </dl>
134
-
130
+ </dt>
131
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>1.0</span><span class='tstring_end'>&quot;</span></span></pre></dd>
132
+
133
+ </dl>
135
134
 
136
135
 
137
136
 
@@ -142,7 +141,7 @@
142
141
 
143
142
  <h2>
144
143
  Class Method Summary
145
- <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
144
+ <small><a href="#" class="summary_toggle">collapse</a></small>
146
145
  </h2>
147
146
 
148
147
  <ul class="summary">
@@ -150,7 +149,7 @@
150
149
  <li class="public ">
151
150
  <span class="summary_signature">
152
151
 
153
- <a href="#ec_supported%3F-class_method" title="ec_supported? (class method)">+ (Boolean) <strong>ec_supported?</strong> </a>
152
+ <a href="#ec_supported%3F-class_method" title="ec_supported? (class method)">.<strong>ec_supported?</strong> &#x21d2; Boolean </a>
154
153
 
155
154
 
156
155
 
@@ -174,7 +173,7 @@
174
173
  <li class="public ">
175
174
  <span class="summary_signature">
176
175
 
177
- <a href="#print_debug-class_method" title="print_debug (class method)">+ (nil) <strong>print_debug</strong> </a>
176
+ <a href="#print_debug-class_method" title="print_debug (class method)">.<strong>print_debug</strong> &#x21d2; nil </a>
178
177
 
179
178
 
180
179
 
@@ -207,7 +206,7 @@
207
206
  <div class="method_details first">
208
207
  <h3 class="signature first" id="ec_supported?-class_method">
209
208
 
210
- + (<tt>Boolean</tt>) <strong>ec_supported?</strong>
209
+ .<strong>ec_supported?</strong> &#x21d2; <tt>Boolean</tt>
211
210
 
212
211
 
213
212
 
@@ -243,15 +242,15 @@
243
242
  <pre class="lines">
244
243
 
245
244
 
246
- 33
247
245
  34
248
- 35</pre>
246
+ 35
247
+ 36</pre>
249
248
  </td>
250
249
  <td>
251
- <pre class="code"><span class="info file"># File 'lib/r509.rb', line 33</span>
250
+ <pre class="code"><span class="info file"># File 'lib/r509.rb', line 34</span>
252
251
 
253
252
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_ec_supported?'>ec_supported?</span>
254
- <span class='lparen'>(</span><span class='kw'>not</span> <span class='kw'>defined?</span><span class='lparen'>(</span><span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>PKey</span><span class='op'>::</span><span class='const'>EC</span><span class='op'>::</span><span class='const'>UNSUPPORTED</span><span class='rparen'>)</span><span class='rparen'>)</span>
253
+ <span class='lparen'>(</span><span class='op'>!</span><span class='kw'>defined?</span><span class='lparen'>(</span><span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>PKey</span><span class='op'>::</span><span class='const'>EC</span><span class='op'>::</span><span class='const'>UNSUPPORTED</span><span class='rparen'>)</span><span class='rparen'>)</span>
255
254
  <span class='kw'>end</span></pre>
256
255
  </td>
257
256
  </tr>
@@ -261,7 +260,7 @@
261
260
  <div class="method_details ">
262
261
  <h3 class="signature " id="print_debug-class_method">
263
262
 
264
- + (<tt>nil</tt>) <strong>print_debug</strong>
263
+ .<strong>print_debug</strong> &#x21d2; <tt>nil</tt>
265
264
 
266
265
 
267
266
 
@@ -297,15 +296,15 @@
297
296
  <pre class="lines">
298
297
 
299
298
 
300
- 25
301
299
  26
302
300
  27
303
301
  28
304
302
  29
305
- 30</pre>
303
+ 30
304
+ 31</pre>
306
305
  </td>
307
306
  <td>
308
- <pre class="code"><span class="info file"># File 'lib/r509.rb', line 25</span>
307
+ <pre class="code"><span class="info file"># File 'lib/r509.rb', line 26</span>
309
308
 
310
309
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_print_debug'>print_debug</span>
311
310
  <span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>r509 v</span><span class='embexpr_beg'>#{</span><span class='const'>R509</span><span class='op'>::</span><span class='const'>VERSION</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
@@ -322,11 +321,12 @@
322
321
 
323
322
  </div>
324
323
 
325
- <div id="footer">
326
- Generated on Sun Jan 26 13:37:25 2014 by
324
+ <div id="footer">
325
+ Generated on Tue Dec 6 17:27:38 2016 by
327
326
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
328
- 0.8.6.1 (ruby-2.0.0).
327
+ 0.9.5 (ruby-2.4.0).
329
328
  </div>
330
329
 
330
+ </div>
331
331
  </body>
332
332
  </html>