r509 0.10.0 → 1.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.
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>