r509 0.8.1 → 0.9
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.
- data/README.md +343 -151
- data/Rakefile +26 -23
- data/bin/r509 +126 -112
- data/bin/r509-parse +24 -24
- data/doc/R509.html +169 -7
- data/doc/R509/ASN1.html +370 -0
- data/doc/R509/ASN1/GeneralName.html +1121 -0
- data/doc/R509/ASN1/GeneralNames.html +843 -0
- data/doc/R509/ASN1/NoticeReference.html +392 -0
- data/doc/R509/ASN1/PolicyInformation.html +387 -0
- data/doc/R509/ASN1/PolicyQualifiers.html +455 -0
- data/doc/R509/ASN1/UserNotice.html +386 -0
- data/doc/R509/{Crl.html → CRL.html} +7 -7
- data/doc/R509/CRL/Administrator.html +1559 -0
- data/doc/R509/{Crl/Parser.html → CRL/SignedList.html} +501 -210
- data/doc/R509/{Csr.html → CSR.html} +444 -314
- data/doc/R509/Cert.html +866 -617
- data/doc/R509/Cert/Extensions.html +52 -41
- data/doc/R509/Cert/Extensions/AuthorityInfoAccess.html +70 -35
- data/doc/R509/Cert/Extensions/AuthorityKeyIdentifier.html +387 -4
- data/doc/R509/Cert/Extensions/BasicConstraints.html +61 -25
- data/doc/R509/Cert/Extensions/CRLDistributionPoints.html +354 -0
- data/doc/R509/Cert/Extensions/CertificatePolicies.html +340 -0
- data/doc/R509/Cert/Extensions/ExtendedKeyUsage.html +440 -49
- data/doc/R509/Cert/Extensions/{CrlDistributionPoints.html → InhibitAnyPolicy.html} +52 -35
- data/doc/R509/Cert/Extensions/KeyUsage.html +247 -121
- data/doc/R509/Cert/Extensions/NameConstraints.html +445 -0
- data/doc/R509/Cert/Extensions/OCSPNoCheck.html +239 -0
- data/doc/R509/Cert/Extensions/PolicyConstraints.html +424 -0
- data/doc/R509/Cert/Extensions/SubjectAlternativeName.html +437 -62
- data/doc/R509/Cert/Extensions/SubjectKeyIdentifier.html +52 -10
- data/doc/R509/CertificateAuthority.html +4 -4
- data/doc/R509/CertificateAuthority/Signer.html +154 -187
- data/doc/R509/Config.html +6 -6
- data/doc/R509/Config/{CaConfig.html → CAConfig.html} +451 -348
- data/doc/R509/Config/{CaConfigPool.html → CAConfigPool.html} +47 -47
- data/doc/R509/Config/CAProfile.html +1015 -0
- data/doc/R509/Config/SubjectItemPolicy.html +86 -86
- data/doc/R509/IOHelpers.html +22 -22
- data/doc/R509/MessageDigest.html +14 -14
- data/doc/R509/NameSanitizer.html +53 -53
- data/doc/R509/{Ocsp.html → OCSP.html} +9 -9
- data/doc/R509/{Ocsp → OCSP}/Request.html +7 -7
- data/doc/R509/{Ocsp → OCSP}/Request/Nonce.html +56 -11
- data/doc/R509/{Ocsp → OCSP}/Response.html +44 -44
- data/doc/R509/{OidMapper.html → OIDMapper.html} +23 -39
- data/doc/R509/PrivateKey.html +415 -168
- data/doc/R509/R509Error.html +3 -3
- data/doc/R509/{Spki.html → SPKI.html} +354 -192
- data/doc/R509/Subject.html +224 -113
- data/doc/R509/Validity.html +27 -5
- data/doc/R509/Validity/Checker.html +13 -13
- data/doc/R509/Validity/DefaultChecker.html +13 -13
- data/doc/R509/Validity/DefaultWriter.html +14 -14
- data/doc/R509/Validity/Status.html +39 -39
- data/doc/R509/Validity/Writer.html +18 -18
- data/doc/_index.html +138 -35
- data/doc/class_list.html +1 -1
- data/doc/css/style.css +10 -0
- data/doc/file.README.html +368 -171
- data/doc/file.r509.html +92 -69
- data/doc/frames.html +1 -1
- data/doc/index.html +368 -171
- data/doc/method_list.html +910 -390
- data/doc/top-level-namespace.html +3 -3
- data/lib/r509.rb +32 -16
- data/lib/r509/asn1.rb +375 -0
- data/lib/r509/cert.rb +381 -364
- data/lib/r509/cert/extensions.rb +443 -76
- data/lib/r509/certificate_authority.rb +407 -0
- data/lib/r509/config.rb +547 -351
- data/lib/r509/crl.rb +336 -366
- data/lib/r509/csr.rb +278 -289
- data/lib/r509/ec-hack.rb +37 -0
- data/lib/r509/exceptions.rb +3 -3
- data/lib/r509/io_helpers.rb +44 -44
- data/lib/r509/message_digest.rb +53 -0
- data/lib/r509/ocsp.rb +80 -70
- data/lib/r509/oid_mapper.rb +32 -0
- data/lib/r509/private_key.rb +228 -0
- data/lib/r509/spki.rb +145 -93
- data/lib/r509/subject.rb +203 -110
- data/lib/r509/validity.rb +70 -68
- data/lib/r509/version.rb +2 -2
- data/r509.yaml +92 -69
- data/spec/asn1_spec.rb +402 -0
- data/spec/cert/extensions_spec.rb +957 -494
- data/spec/cert_spec.rb +382 -307
- data/spec/certificate_authority_spec.rb +668 -250
- data/spec/config_spec.rb +515 -302
- data/spec/crl_spec.rb +197 -198
- data/spec/csr_spec.rb +334 -289
- data/spec/fixtures.rb +247 -171
- data/spec/fixtures/cert1.der +0 -0
- data/spec/fixtures/cert1.pem +0 -0
- data/spec/fixtures/cert1_public_key_modulus.txt +0 -0
- data/spec/fixtures/cert3.p12 +0 -0
- data/spec/fixtures/cert3.pem +0 -0
- data/spec/fixtures/cert3_key.pem +0 -0
- data/spec/fixtures/cert3_key_des3.pem +0 -0
- data/spec/fixtures/cert4.pem +0 -0
- data/spec/fixtures/cert5.pem +0 -0
- data/spec/fixtures/cert6.pem +0 -0
- data/spec/fixtures/cert_expired.pem +0 -0
- data/spec/fixtures/cert_inhibit.pem +24 -0
- data/spec/fixtures/cert_name_constraints.pem +29 -0
- data/spec/fixtures/cert_not_yet_valid.pem +0 -0
- data/spec/fixtures/cert_ocsp_no_check.pem +18 -0
- data/spec/fixtures/cert_policy_constraints.pem +31 -0
- data/spec/fixtures/cert_san.pem +0 -0
- data/spec/fixtures/cert_san2.pem +0 -0
- data/spec/fixtures/cert_unknown_extension.pem +28 -0
- data/spec/fixtures/config_pool_test_minimal.yaml +11 -11
- data/spec/fixtures/config_test.yaml +54 -36
- data/spec/fixtures/config_test_dsa.yaml +35 -0
- data/spec/fixtures/config_test_ec.yaml +35 -0
- data/spec/fixtures/config_test_engine_key.yaml +5 -5
- data/spec/fixtures/config_test_engine_no_key_name.yaml +4 -4
- data/spec/fixtures/config_test_minimal.yaml +4 -4
- data/spec/fixtures/config_test_password.yaml +5 -5
- data/spec/fixtures/config_test_various.yaml +111 -74
- data/spec/fixtures/crl_list_file.txt +0 -0
- data/spec/fixtures/crl_with_reason.pem +0 -0
- data/spec/fixtures/csr1.der +0 -0
- data/spec/fixtures/csr1.pem +0 -0
- data/spec/fixtures/csr1_key.der +0 -0
- data/spec/fixtures/csr1_key.pem +0 -0
- data/spec/fixtures/csr1_key_encrypted_des3.pem +0 -0
- data/spec/fixtures/csr1_newlines.pem +0 -0
- data/spec/fixtures/csr1_no_begin_end.pem +0 -0
- data/spec/fixtures/csr1_public_key_modulus.txt +0 -0
- data/spec/fixtures/csr2.pem +0 -0
- data/spec/fixtures/csr2_key.pem +0 -0
- data/spec/fixtures/csr3.pem +0 -0
- data/spec/fixtures/csr4.pem +0 -0
- data/spec/fixtures/csr_dsa.pem +0 -0
- data/spec/fixtures/csr_invalid_signature.pem +0 -0
- data/spec/fixtures/dsa_key.pem +0 -0
- data/spec/fixtures/dsa_root.cer +28 -0
- data/spec/fixtures/dsa_root.key +20 -0
- data/spec/fixtures/ec_csr2.der +0 -0
- data/spec/fixtures/ec_csr2.pem +8 -0
- data/spec/fixtures/ec_key1.der +0 -0
- data/spec/fixtures/ec_key1.pem +6 -0
- data/spec/fixtures/ec_key1_encrypted.pem +9 -0
- data/spec/fixtures/ec_key2.pem +6 -0
- data/spec/fixtures/hmacsha1.sig +1 -0
- data/spec/fixtures/hmacsha512.sig +1 -0
- data/spec/fixtures/key4.pem +0 -0
- data/spec/fixtures/key4_encrypted_des3.pem +0 -0
- data/spec/fixtures/missing_key_identifier_ca.cer +0 -0
- data/spec/fixtures/missing_key_identifier_ca.key +0 -0
- data/spec/fixtures/ocsptest.r509.local.pem +0 -0
- data/spec/fixtures/ocsptest.r509.local_ocsp_request.der +0 -0
- data/spec/fixtures/ocsptest2.r509.local.pem +0 -0
- data/spec/fixtures/second_ca.cer +0 -0
- data/spec/fixtures/second_ca.key +0 -0
- data/spec/fixtures/spkac.der +0 -0
- data/spec/fixtures/spkac.txt +0 -0
- data/spec/fixtures/spkac_dsa.txt +1 -1
- data/spec/fixtures/spkac_dsa_no_verify.txt +1 -0
- data/spec/fixtures/spkac_ec.txt +1 -0
- data/spec/fixtures/spkac_rsa_newlines.txt +13 -0
- data/spec/fixtures/stca.pem +0 -0
- data/spec/fixtures/stca_ocsp_request.der +0 -0
- data/spec/fixtures/stca_ocsp_response.der +0 -0
- data/spec/fixtures/test1.csr +0 -0
- data/spec/fixtures/test_ca.cer +0 -0
- data/spec/fixtures/test_ca.key +0 -0
- data/spec/fixtures/test_ca.p12 +0 -0
- data/spec/fixtures/test_ca_des3.key +0 -0
- data/spec/fixtures/test_ca_ec.cer +14 -0
- data/spec/fixtures/test_ca_ec.key +6 -0
- data/spec/fixtures/test_ca_ec_ee.cer +22 -0
- data/spec/fixtures/test_ca_ec_ee.key +6 -0
- data/spec/fixtures/test_ca_ocsp.cer +0 -0
- data/spec/fixtures/test_ca_ocsp.key +0 -0
- data/spec/fixtures/test_ca_ocsp.p12 +0 -0
- data/spec/fixtures/test_ca_ocsp_chain.txt +0 -0
- data/spec/fixtures/test_ca_ocsp_response.der +0 -0
- data/spec/fixtures/test_ca_subroot.cer +0 -0
- data/spec/fixtures/test_ca_subroot.key +0 -0
- data/spec/fixtures/test_ca_subroot_ocsp.cer +0 -0
- data/spec/fixtures/test_ca_subroot_ocsp.key +0 -0
- data/spec/fixtures/test_ca_subroot_ocsp_response.der +0 -0
- data/spec/fixtures/unknown_oid.csr +0 -0
- data/spec/message_digest_spec.rb +104 -84
- data/spec/ocsp_spec.rb +105 -105
- data/spec/oid_mapper_spec.rb +21 -21
- data/spec/private_key_spec.rb +275 -0
- data/spec/r509_spec.rb +35 -0
- data/spec/spec_helper.rb +15 -6
- data/spec/spki_spec.rb +221 -142
- data/spec/subject_spec.rb +232 -164
- data/spec/validity_spec.rb +91 -91
- metadata +79 -25
- data/doc/R509/Config/CaProfile.html +0 -651
- data/doc/R509/Crl/Administrator.html +0 -2073
- data/lib/r509/certificateauthority.rb +0 -290
- data/lib/r509/messagedigest.rb +0 -49
- data/lib/r509/oidmapper.rb +0 -32
- data/lib/r509/privatekey.rb +0 -185
- data/spec/privatekey_spec.rb +0 -198
data/doc/R509/PrivateKey.html
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
Class: R509::PrivateKey
|
8
8
|
|
9
|
-
— Documentation by YARD 0.8.
|
9
|
+
— Documentation by YARD 0.8.5
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -98,7 +98,7 @@
|
|
98
98
|
|
99
99
|
|
100
100
|
<dt class="r1 last">Defined in:</dt>
|
101
|
-
<dd class="r1 last">lib/r509/
|
101
|
+
<dd class="r1 last">lib/r509/private_key.rb</dd>
|
102
102
|
|
103
103
|
</dl>
|
104
104
|
<div class="clear"></div>
|
@@ -179,7 +179,34 @@
|
|
179
179
|
|
180
180
|
|
181
181
|
|
182
|
-
<span class="summary_desc"><div class='inline'
|
182
|
+
<span class="summary_desc"><div class='inline'>
|
183
|
+
<p>Returns the bit strength of the key.</p>
|
184
|
+
</div></span>
|
185
|
+
|
186
|
+
</li>
|
187
|
+
|
188
|
+
|
189
|
+
<li class="public ">
|
190
|
+
<span class="summary_signature">
|
191
|
+
|
192
|
+
<a href="#curve_name-instance_method" title="#curve_name (instance method)">- (String) <strong>curve_name</strong> </a>
|
193
|
+
|
194
|
+
|
195
|
+
|
196
|
+
</span>
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
<span class="summary_desc"><div class='inline'>
|
207
|
+
<p>Returns the short name of the elliptic curve used to generate the private
|
208
|
+
key if the key is EC.</p>
|
209
|
+
</div></span>
|
183
210
|
|
184
211
|
</li>
|
185
212
|
|
@@ -202,7 +229,31 @@
|
|
202
229
|
|
203
230
|
|
204
231
|
<span class="summary_desc"><div class='inline'>
|
205
|
-
<p>Returns whether the
|
232
|
+
<p>Returns whether the key is DSA.</p>
|
233
|
+
</div></span>
|
234
|
+
|
235
|
+
</li>
|
236
|
+
|
237
|
+
|
238
|
+
<li class="public ">
|
239
|
+
<span class="summary_signature">
|
240
|
+
|
241
|
+
<a href="#ec%3F-instance_method" title="#ec? (instance method)">- (Boolean) <strong>ec?</strong> </a>
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
</span>
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
<span class="summary_desc"><div class='inline'>
|
256
|
+
<p>Returns whether the key is EC.</p>
|
206
257
|
</div></span>
|
207
258
|
|
208
259
|
</li>
|
@@ -235,7 +286,7 @@
|
|
235
286
|
<li class="public ">
|
236
287
|
<span class="summary_signature">
|
237
288
|
|
238
|
-
<a href="#initialize-instance_method" title="#initialize (instance method)">- (PrivateKey) <strong>initialize</strong>(opts) </a>
|
289
|
+
<a href="#initialize-instance_method" title="#initialize (instance method)">- (PrivateKey) <strong>initialize</strong>(opts = {}) </a>
|
239
290
|
|
240
291
|
|
241
292
|
|
@@ -286,7 +337,7 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
286
337
|
<li class="public ">
|
287
338
|
<span class="summary_signature">
|
288
339
|
|
289
|
-
<a href="#public_key-instance_method" title="#public_key (instance method)">- (OpenSSL::PKey::RSA,
|
340
|
+
<a href="#public_key-instance_method" title="#public_key (instance method)">- (OpenSSL::PKey::RSA, ...) <strong>public_key</strong> </a>
|
290
341
|
|
291
342
|
|
292
343
|
|
@@ -327,7 +378,7 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
327
378
|
|
328
379
|
|
329
380
|
<span class="summary_desc"><div class='inline'>
|
330
|
-
<p>Returns whether the
|
381
|
+
<p>Returns whether the key is RSA.</p>
|
331
382
|
</div></span>
|
332
383
|
|
333
384
|
</li>
|
@@ -497,7 +548,7 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
497
548
|
<div class="method_details first">
|
498
549
|
<h3 class="signature first" id="initialize-instance_method">
|
499
550
|
|
500
|
-
- (<tt><span class='object_link'><a href="" title="R509::PrivateKey (class)">PrivateKey</a></span></tt>) <strong>initialize</strong>(opts)
|
551
|
+
- (<tt><span class='object_link'><a href="" title="R509::PrivateKey (class)">PrivateKey</a></span></tt>) <strong>initialize</strong>(opts = {})
|
501
552
|
|
502
553
|
|
503
554
|
|
@@ -523,6 +574,8 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
523
574
|
<span class='type'>(<tt>Hash</tt>)</span>
|
524
575
|
|
525
576
|
|
577
|
+
<em class="default">(defaults to: <tt>{}</tt>)</em>
|
578
|
+
|
526
579
|
|
527
580
|
—
|
528
581
|
<div class='inline'>
|
@@ -547,7 +600,23 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
547
600
|
</span>
|
548
601
|
|
549
602
|
— <div class='inline'>
|
550
|
-
<p>:rsa/:dsa</p>
|
603
|
+
<p>:rsa/:dsa/:ec</p>
|
604
|
+
</div>
|
605
|
+
|
606
|
+
</li>
|
607
|
+
|
608
|
+
<li>
|
609
|
+
<span class="name">:curve_name</span>
|
610
|
+
<span class="type">(<tt>String</tt>)</span>
|
611
|
+
<span class="default">
|
612
|
+
|
613
|
+
— default:
|
614
|
+
<tt>"secp384r1"</tt>
|
615
|
+
|
616
|
+
</span>
|
617
|
+
|
618
|
+
— <div class='inline'>
|
619
|
+
<p>Only used if :type is :ec</p>
|
551
620
|
</div>
|
552
621
|
|
553
622
|
</li>
|
@@ -557,8 +626,15 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
557
626
|
<span class="type">(<tt>Integer</tt>)</span>
|
558
627
|
<span class="default">
|
559
628
|
|
629
|
+
— default:
|
630
|
+
<tt>2048</tt>
|
631
|
+
|
560
632
|
</span>
|
561
633
|
|
634
|
+
— <div class='inline'>
|
635
|
+
<p>Only used if :type is :rsa or :dsa.</p>
|
636
|
+
</div>
|
637
|
+
|
562
638
|
</li>
|
563
639
|
|
564
640
|
<li>
|
@@ -572,7 +648,7 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
572
648
|
|
573
649
|
<li>
|
574
650
|
<span class="name">:key</span>
|
575
|
-
<span class="type">(<tt>String</tt>, <tt>OpenSSL::PKey::RSA</tt>, <tt>OpenSSL::PKey::DSA</tt>)</span>
|
651
|
+
<span class="type">(<tt>String</tt>, <tt>OpenSSL::PKey::RSA</tt>, <tt>OpenSSL::PKey::DSA</tt>, <tt><span class='object_link'>OpenSSL::PKey::EC</span></tt>)</span>
|
576
652
|
<span class="default">
|
577
653
|
|
578
654
|
</span>
|
@@ -610,7 +686,6 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
610
686
|
<pre class="lines">
|
611
687
|
|
612
688
|
|
613
|
-
16
|
614
689
|
17
|
615
690
|
18
|
616
691
|
19
|
@@ -654,55 +729,72 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
654
729
|
57
|
655
730
|
58
|
656
731
|
59
|
657
|
-
60
|
732
|
+
60
|
733
|
+
61
|
734
|
+
62
|
735
|
+
63
|
736
|
+
64
|
737
|
+
65
|
738
|
+
66
|
739
|
+
67
|
740
|
+
68
|
741
|
+
69</pre>
|
658
742
|
</td>
|
659
743
|
<td>
|
660
|
-
<pre class="code"><span class="info file"># File 'lib/r509/
|
661
|
-
|
662
|
-
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
663
|
-
|
664
|
-
|
744
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 17</span>
|
745
|
+
|
746
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
747
|
+
<span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
|
748
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Must provide a hash of options</span><span class='tstring_end'>'</span></span>
|
749
|
+
<span class='kw'>end</span>
|
750
|
+
|
751
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_has_key?'>has_key?</span><span class='lparen'>(</span><span class='symbol'>:engine</span><span class='rparen'>)</span> <span class='kw'>and</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_has_key?'>has_key?</span><span class='lparen'>(</span><span class='symbol'>:key</span><span class='rparen'>)</span>
|
752
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>You can\'t pass both :key and :engine</span><span class='tstring_end'>'</span></span>
|
753
|
+
<span class='kw'>elsif</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_has_key?'>has_key?</span><span class='lparen'>(</span><span class='symbol'>:key_name</span><span class='rparen'>)</span> <span class='kw'>and</span> <span class='kw'>not</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_has_key?'>has_key?</span><span class='lparen'>(</span><span class='symbol'>:engine</span><span class='rparen'>)</span>
|
754
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>When providing a :key_name you MUST provide an :engine</span><span class='tstring_end'>'</span></span>
|
755
|
+
<span class='kw'>elsif</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_has_key?'>has_key?</span><span class='lparen'>(</span><span class='symbol'>:engine</span><span class='rparen'>)</span> <span class='kw'>and</span> <span class='kw'>not</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_has_key?'>has_key?</span><span class='lparen'>(</span><span class='symbol'>:key_name</span><span class='rparen'>)</span>
|
756
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>When providing an :engine you MUST provide a :key_name</span><span class='tstring_end'>'</span></span>
|
757
|
+
<span class='kw'>elsif</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_has_key?'>has_key?</span><span class='lparen'>(</span><span class='symbol'>:engine</span><span class='rparen'>)</span> <span class='kw'>and</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_has_key?'>has_key?</span><span class='lparen'>(</span><span class='symbol'>:key_name</span><span class='rparen'>)</span>
|
758
|
+
<span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:engine</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Engine</span><span class='rparen'>)</span>
|
759
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>When providing an engine, it must be of type OpenSSL::Engine</span><span class='tstring_end'>'</span></span>
|
665
760
|
<span class='kw'>end</span>
|
666
|
-
|
667
|
-
<span class='
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
<span class='
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
761
|
+
<span class='ivar'>@engine</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:engine</span><span class='rbracket'>]</span>
|
762
|
+
<span class='ivar'>@key_name</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:key_name</span><span class='rbracket'>]</span>
|
763
|
+
<span class='kw'>end</span>
|
764
|
+
|
765
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_has_key?'>has_key?</span><span class='lparen'>(</span><span class='symbol'>:key</span><span class='rparen'>)</span>
|
766
|
+
<span class='id identifier rubyid_password'>password</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:password</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='kw'>nil</span>
|
767
|
+
<span class='comment'>#OpenSSL::PKey.read solves this begin/rescue garbage but is only
|
768
|
+
</span> <span class='comment'>#available to Ruby 1.9.3+ and may not solve the EC portion
|
769
|
+
</span> <span class='kw'>begin</span>
|
770
|
+
<span class='ivar'>@key</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>PKey</span><span class='op'>::</span><span class='const'>RSA</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:key</span><span class='rbracket'>]</span><span class='comma'>,</span><span class='id identifier rubyid_password'>password</span><span class='rparen'>)</span>
|
771
|
+
<span class='kw'>rescue</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>PKey</span><span class='op'>::</span><span class='const'>RSAError</span>
|
772
|
+
<span class='kw'>begin</span>
|
773
|
+
<span class='ivar'>@key</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>PKey</span><span class='op'>::</span><span class='const'>DSA</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:key</span><span class='rbracket'>]</span><span class='comma'>,</span><span class='id identifier rubyid_password'>password</span><span class='rparen'>)</span>
|
774
|
+
<span class='kw'>rescue</span>
|
775
|
+
<span class='kw'>begin</span>
|
776
|
+
<span class='ivar'>@key</span> <span class='op'>=</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='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:key</span><span class='rbracket'>]</span><span class='comma'>,</span><span class='id identifier rubyid_password'>password</span><span class='rparen'>)</span>
|
777
|
+
<span class='kw'>rescue</span>
|
778
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>R509</span><span class='op'>::</span><span class='const'>R509Error</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Failed to load private key. Invalid key or incorrect password.</span><span class='tstring_end'>"</span></span>
|
676
779
|
<span class='kw'>end</span>
|
677
|
-
|
678
|
-
<span class='ivar'>@key_name</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:key_name</span><span class='rbracket'>]</span>
|
780
|
+
<span class='kw'>end</span>
|
679
781
|
<span class='kw'>end</span>
|
680
|
-
|
681
|
-
<span class='
|
682
|
-
|
683
|
-
|
684
|
-
</span>
|
685
|
-
</span>
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
<span class='kw'>end</span>
|
693
|
-
<span class='kw'>end</span>
|
782
|
+
<span class='kw'>else</span>
|
783
|
+
<span class='id identifier rubyid_bit_strength'>bit_strength</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:bit_strength</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='int'>2048</span>
|
784
|
+
<span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:type</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='symbol'>:rsa</span>
|
785
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_type'>type</span>
|
786
|
+
<span class='kw'>when</span> <span class='symbol'>:rsa</span>
|
787
|
+
<span class='ivar'>@key</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>PKey</span><span class='op'>::</span><span class='const'>RSA</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_bit_strength'>bit_strength</span><span class='rparen'>)</span>
|
788
|
+
<span class='kw'>when</span> <span class='symbol'>:dsa</span>
|
789
|
+
<span class='ivar'>@key</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>PKey</span><span class='op'>::</span><span class='const'>DSA</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_bit_strength'>bit_strength</span><span class='rparen'>)</span>
|
790
|
+
<span class='kw'>when</span> <span class='symbol'>:ec</span>
|
791
|
+
<span class='id identifier rubyid_curve_name'>curve_name</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:curve_name</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>secp384r1</span><span class='tstring_end'>"</span></span>
|
792
|
+
<span class='ivar'>@key</span> <span class='op'>=</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='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_curve_name'>curve_name</span><span class='rparen'>)</span>
|
793
|
+
<span class='ivar'>@key</span><span class='period'>.</span><span class='id identifier rubyid_generate_key'>generate_key</span>
|
694
794
|
<span class='kw'>else</span>
|
695
|
-
|
696
|
-
<span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:type</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='symbol'>:rsa</span>
|
697
|
-
<span class='kw'>case</span> <span class='id identifier rubyid_type'>type</span>
|
698
|
-
<span class='kw'>when</span> <span class='symbol'>:rsa</span>
|
699
|
-
<span class='ivar'>@key</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>PKey</span><span class='op'>::</span><span class='const'>RSA</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_bit_strength'>bit_strength</span><span class='rparen'>)</span>
|
700
|
-
<span class='kw'>when</span> <span class='symbol'>:dsa</span>
|
701
|
-
<span class='ivar'>@key</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>PKey</span><span class='op'>::</span><span class='const'>DSA</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_bit_strength'>bit_strength</span><span class='rparen'>)</span>
|
702
|
-
<span class='kw'>else</span>
|
703
|
-
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Must provide :rsa or :dsa as type when key or engine is nil</span><span class='tstring_end'>'</span></span>
|
704
|
-
<span class='kw'>end</span>
|
795
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Must provide :rsa, :dsa , or :ec as type when key or engine is nil</span><span class='tstring_end'>'</span></span>
|
705
796
|
<span class='kw'>end</span>
|
797
|
+
<span class='kw'>end</span>
|
706
798
|
<span class='kw'>end</span></pre>
|
707
799
|
</td>
|
708
800
|
</tr>
|
@@ -780,12 +872,12 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
780
872
|
<pre class="lines">
|
781
873
|
|
782
874
|
|
783
|
-
|
784
|
-
|
785
|
-
|
875
|
+
75
|
876
|
+
76
|
877
|
+
77</pre>
|
786
878
|
</td>
|
787
879
|
<td>
|
788
|
-
<pre class="code"><span class="info file"># File 'lib/r509/
|
880
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 75</span>
|
789
881
|
|
790
882
|
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_load_from_file'>load_from_file</span><span class='lparen'>(</span> <span class='id identifier rubyid_filename'>filename</span><span class='comma'>,</span> <span class='id identifier rubyid_password'>password</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='rparen'>)</span>
|
791
883
|
<span class='kw'>return</span> <span class='const'>R509</span><span class='op'>::</span><span class='const'>PrivateKey</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:key</span> <span class='op'>=></span> <span class='const'>IOHelpers</span><span class='period'>.</span><span class='id identifier rubyid_read_data'>read_data</span><span class='lparen'>(</span><span class='id identifier rubyid_filename'>filename</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='symbol'>:password</span> <span class='op'>=></span> <span class='id identifier rubyid_password'>password</span> <span class='rparen'>)</span>
|
@@ -813,6 +905,8 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
813
905
|
</h3><div class="docstring">
|
814
906
|
<div class="discussion">
|
815
907
|
|
908
|
+
<p>Returns the bit strength of the key</p>
|
909
|
+
|
816
910
|
|
817
911
|
</div>
|
818
912
|
</div>
|
@@ -838,23 +932,95 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
838
932
|
<pre class="lines">
|
839
933
|
|
840
934
|
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
935
|
+
83
|
936
|
+
84
|
937
|
+
85
|
938
|
+
86
|
939
|
+
87
|
940
|
+
88
|
941
|
+
89
|
942
|
+
90
|
943
|
+
91</pre>
|
848
944
|
</td>
|
849
945
|
<td>
|
850
|
-
<pre class="code"><span class="info file"># File 'lib/r509/
|
946
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 83</span>
|
851
947
|
|
852
948
|
<span class='kw'>def</span> <span class='id identifier rubyid_bit_strength'>bit_strength</span>
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
949
|
+
<span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_rsa?'>rsa?</span>
|
950
|
+
<span class='kw'>return</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_public_key'>public_key</span><span class='period'>.</span><span class='id identifier rubyid_n'>n</span><span class='period'>.</span><span class='id identifier rubyid_num_bits'>num_bits</span>
|
951
|
+
<span class='kw'>elsif</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_dsa?'>dsa?</span>
|
952
|
+
<span class='kw'>return</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_public_key'>public_key</span><span class='period'>.</span><span class='id identifier rubyid_p'>p</span><span class='period'>.</span><span class='id identifier rubyid_num_bits'>num_bits</span>
|
953
|
+
<span class='kw'>elsif</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_ec?'>ec?</span>
|
954
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>R509</span><span class='op'>::</span><span class='const'>R509Error</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Bit strength is not available for EC at this time.</span><span class='tstring_end'>'</span></span>
|
955
|
+
<span class='kw'>end</span>
|
956
|
+
<span class='kw'>end</span></pre>
|
957
|
+
</td>
|
958
|
+
</tr>
|
959
|
+
</table>
|
960
|
+
</div>
|
961
|
+
|
962
|
+
<div class="method_details ">
|
963
|
+
<h3 class="signature " id="curve_name-instance_method">
|
964
|
+
|
965
|
+
- (<tt>String</tt>) <strong>curve_name</strong>
|
966
|
+
|
967
|
+
|
968
|
+
|
969
|
+
|
970
|
+
|
971
|
+
</h3><div class="docstring">
|
972
|
+
<div class="discussion">
|
973
|
+
|
974
|
+
<p>Returns the short name of the elliptic curve used to generate the private
|
975
|
+
key if the key is EC. If not, raises an error.</p>
|
976
|
+
|
977
|
+
|
978
|
+
</div>
|
979
|
+
</div>
|
980
|
+
<div class="tags">
|
981
|
+
|
982
|
+
<p class="tag_title">Returns:</p>
|
983
|
+
<ul class="return">
|
984
|
+
|
985
|
+
<li>
|
986
|
+
|
987
|
+
|
988
|
+
<span class='type'>(<tt>String</tt>)</span>
|
989
|
+
|
990
|
+
|
991
|
+
|
992
|
+
—
|
993
|
+
<div class='inline'>
|
994
|
+
<p>elliptic curve name</p>
|
995
|
+
</div>
|
996
|
+
|
997
|
+
</li>
|
998
|
+
|
999
|
+
</ul>
|
1000
|
+
|
1001
|
+
</div><table class="source_code">
|
1002
|
+
<tr>
|
1003
|
+
<td>
|
1004
|
+
<pre class="lines">
|
1005
|
+
|
1006
|
+
|
1007
|
+
97
|
1008
|
+
98
|
1009
|
+
99
|
1010
|
+
100
|
1011
|
+
101
|
1012
|
+
102
|
1013
|
+
103</pre>
|
1014
|
+
</td>
|
1015
|
+
<td>
|
1016
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 97</span>
|
1017
|
+
|
1018
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_curve_name'>curve_name</span>
|
1019
|
+
<span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_ec?'>ec?</span>
|
1020
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_group'>group</span><span class='period'>.</span><span class='id identifier rubyid_curve_name'>curve_name</span>
|
1021
|
+
<span class='kw'>else</span>
|
1022
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>R509</span><span class='op'>::</span><span class='const'>R509Error</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Curve name is only available with EC private keys</span><span class='tstring_end'>'</span></span>
|
1023
|
+
<span class='kw'>end</span>
|
858
1024
|
<span class='kw'>end</span></pre>
|
859
1025
|
</td>
|
860
1026
|
</tr>
|
@@ -873,7 +1039,7 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
873
1039
|
</h3><div class="docstring">
|
874
1040
|
<div class="discussion">
|
875
1041
|
|
876
|
-
<p>Returns whether the
|
1042
|
+
<p>Returns whether the key is DSA</p>
|
877
1043
|
|
878
1044
|
|
879
1045
|
</div>
|
@@ -892,7 +1058,7 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
892
1058
|
|
893
1059
|
—
|
894
1060
|
<div class='inline'>
|
895
|
-
<p>true if the
|
1061
|
+
<p>true if the key is DSA, false otherwise</p>
|
896
1062
|
</div>
|
897
1063
|
|
898
1064
|
</li>
|
@@ -905,15 +1071,74 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
905
1071
|
<pre class="lines">
|
906
1072
|
|
907
1073
|
|
908
|
-
|
909
|
-
|
910
|
-
|
1074
|
+
217
|
1075
|
+
218
|
1076
|
+
219</pre>
|
911
1077
|
</td>
|
912
1078
|
<td>
|
913
|
-
<pre class="code"><span class="info file"># File 'lib/r509/
|
1079
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 217</span>
|
914
1080
|
|
915
1081
|
<span class='kw'>def</span> <span class='id identifier rubyid_dsa?'>dsa?</span>
|
916
|
-
|
1082
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</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'>DSA</span><span class='rparen'>)</span>
|
1083
|
+
<span class='kw'>end</span></pre>
|
1084
|
+
</td>
|
1085
|
+
</tr>
|
1086
|
+
</table>
|
1087
|
+
</div>
|
1088
|
+
|
1089
|
+
<div class="method_details ">
|
1090
|
+
<h3 class="signature " id="ec?-instance_method">
|
1091
|
+
|
1092
|
+
- (<tt>Boolean</tt>) <strong>ec?</strong>
|
1093
|
+
|
1094
|
+
|
1095
|
+
|
1096
|
+
|
1097
|
+
|
1098
|
+
</h3><div class="docstring">
|
1099
|
+
<div class="discussion">
|
1100
|
+
|
1101
|
+
<p>Returns whether the key is EC</p>
|
1102
|
+
|
1103
|
+
|
1104
|
+
</div>
|
1105
|
+
</div>
|
1106
|
+
<div class="tags">
|
1107
|
+
|
1108
|
+
<p class="tag_title">Returns:</p>
|
1109
|
+
<ul class="return">
|
1110
|
+
|
1111
|
+
<li>
|
1112
|
+
|
1113
|
+
|
1114
|
+
<span class='type'>(<tt>Boolean</tt>)</span>
|
1115
|
+
|
1116
|
+
|
1117
|
+
|
1118
|
+
—
|
1119
|
+
<div class='inline'>
|
1120
|
+
<p>true if the key is EC, false otherwise</p>
|
1121
|
+
</div>
|
1122
|
+
|
1123
|
+
</li>
|
1124
|
+
|
1125
|
+
</ul>
|
1126
|
+
|
1127
|
+
</div><table class="source_code">
|
1128
|
+
<tr>
|
1129
|
+
<td>
|
1130
|
+
<pre class="lines">
|
1131
|
+
|
1132
|
+
|
1133
|
+
224
|
1134
|
+
225
|
1135
|
+
226</pre>
|
1136
|
+
</td>
|
1137
|
+
<td>
|
1138
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 224</span>
|
1139
|
+
|
1140
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_ec?'>ec?</span>
|
1141
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</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='rparen'>)</span>
|
917
1142
|
<span class='kw'>end</span></pre>
|
918
1143
|
</td>
|
919
1144
|
</tr>
|
@@ -964,23 +1189,23 @@ key in the HSM (which will not show the private key, just public).</p>
|
|
964
1189
|
<pre class="lines">
|
965
1190
|
|
966
1191
|
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
|
1192
|
+
115
|
1193
|
+
116
|
1194
|
+
117
|
1195
|
+
118
|
1196
|
+
119
|
1197
|
+
120
|
1198
|
+
121</pre>
|
974
1199
|
</td>
|
975
1200
|
<td>
|
976
|
-
<pre class="code"><span class="info file"># File 'lib/r509/
|
1201
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 115</span>
|
977
1202
|
|
978
1203
|
<span class='kw'>def</span> <span class='id identifier rubyid_in_hardware?'>in_hardware?</span>
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
|
983
|
-
|
1204
|
+
<span class='kw'>if</span> <span class='kw'>not</span> <span class='ivar'>@engine</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
1205
|
+
<span class='kw'>true</span>
|
1206
|
+
<span class='kw'>else</span>
|
1207
|
+
<span class='kw'>false</span>
|
1208
|
+
<span class='kw'>end</span>
|
984
1209
|
<span class='kw'>end</span></pre>
|
985
1210
|
</td>
|
986
1211
|
</tr>
|
@@ -1033,23 +1258,23 @@ key in the HSM (which will not show the private key, just public)</p>
|
|
1033
1258
|
<pre class="lines">
|
1034
1259
|
|
1035
1260
|
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1042
|
-
|
1261
|
+
106
|
1262
|
+
107
|
1263
|
+
108
|
1264
|
+
109
|
1265
|
+
110
|
1266
|
+
111
|
1267
|
+
112</pre>
|
1043
1268
|
</td>
|
1044
1269
|
<td>
|
1045
|
-
<pre class="code"><span class="info file"># File 'lib/r509/
|
1270
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 106</span>
|
1046
1271
|
|
1047
1272
|
<span class='kw'>def</span> <span class='id identifier rubyid_key'>key</span>
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1273
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_in_hardware?'>in_hardware?</span>
|
1274
|
+
<span class='ivar'>@engine</span><span class='period'>.</span><span class='id identifier rubyid_load_private_key'>load_private_key</span><span class='lparen'>(</span><span class='ivar'>@key_name</span><span class='rparen'>)</span>
|
1275
|
+
<span class='kw'>else</span>
|
1276
|
+
<span class='ivar'>@key</span>
|
1277
|
+
<span class='kw'>end</span>
|
1053
1278
|
<span class='kw'>end</span></pre>
|
1054
1279
|
</td>
|
1055
1280
|
</tr>
|
@@ -1059,7 +1284,7 @@ key in the HSM (which will not show the private key, just public)</p>
|
|
1059
1284
|
<div class="method_details ">
|
1060
1285
|
<h3 class="signature " id="public_key-instance_method">
|
1061
1286
|
|
1062
|
-
- (<tt>OpenSSL::PKey::RSA</tt>,
|
1287
|
+
- (<tt>OpenSSL::PKey::RSA</tt>, ...) <strong>public_key</strong>
|
1063
1288
|
|
1064
1289
|
|
1065
1290
|
|
@@ -1085,7 +1310,7 @@ key in the HSM (which will not show the private key, just public)</p>
|
|
1085
1310
|
<li>
|
1086
1311
|
|
1087
1312
|
|
1088
|
-
<span class='type'>(<tt>OpenSSL::PKey::RSA</tt>, <tt>OpenSSL::PKey::DSA</tt>)</span>
|
1313
|
+
<span class='type'>(<tt>OpenSSL::PKey::RSA</tt>, <tt>OpenSSL::PKey::DSA</tt>, <tt><span class='object_link'>OpenSSL::PKey::EC</span></tt>)</span>
|
1089
1314
|
|
1090
1315
|
|
1091
1316
|
|
@@ -1104,15 +1329,37 @@ key in the HSM (which will not show the private key, just public)</p>
|
|
1104
1329
|
<pre class="lines">
|
1105
1330
|
|
1106
1331
|
|
1107
|
-
|
1108
|
-
|
1109
|
-
|
1332
|
+
124
|
1333
|
+
125
|
1334
|
+
126
|
1335
|
+
127
|
1336
|
+
128
|
1337
|
+
129
|
1338
|
+
130
|
1339
|
+
131
|
1340
|
+
132
|
1341
|
+
133
|
1342
|
+
134
|
1343
|
+
135
|
1344
|
+
136
|
1345
|
+
137</pre>
|
1110
1346
|
</td>
|
1111
1347
|
<td>
|
1112
|
-
<pre class="code"><span class="info file"># File 'lib/r509/
|
1348
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 124</span>
|
1113
1349
|
|
1114
1350
|
<span class='kw'>def</span> <span class='id identifier rubyid_public_key'>public_key</span>
|
1351
|
+
<span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_ec?'>ec?</span>
|
1352
|
+
<span class='comment'># OpenSSL::PKey::EC.public_key returns an OpenSSL::PKey::EC::Point, which isn't consistent
|
1353
|
+
</span> <span class='comment'># with the way OpenSSL::PKey::RSA/DSA do it. We could return the original PKey::EC object
|
1354
|
+
</span> <span class='comment'># but if we do that then it has the private_key as well. Here's a ghetto workaround.
|
1355
|
+
</span> <span class='comment'># We have to supply the curve name to the temporary key object or else #public_key= fails
|
1356
|
+
</span> <span class='id identifier rubyid_curve_name'>curve_name</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_group'>group</span><span class='period'>.</span><span class='id identifier rubyid_curve_name'>curve_name</span>
|
1357
|
+
<span class='id identifier rubyid_temp_key'>temp_key</span> <span class='op'>=</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='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_curve_name'>curve_name</span><span class='rparen'>)</span>
|
1358
|
+
<span class='id identifier rubyid_temp_key'>temp_key</span><span class='period'>.</span><span class='id identifier rubyid_public_key'>public_key</span><span class='op'>=</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_public_key'>public_key</span>
|
1359
|
+
<span class='id identifier rubyid_temp_key'>temp_key</span>
|
1360
|
+
<span class='kw'>else</span>
|
1115
1361
|
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_public_key'>public_key</span>
|
1362
|
+
<span class='kw'>end</span>
|
1116
1363
|
<span class='kw'>end</span></pre>
|
1117
1364
|
</td>
|
1118
1365
|
</tr>
|
@@ -1131,7 +1378,7 @@ key in the HSM (which will not show the private key, just public)</p>
|
|
1131
1378
|
</h3><div class="docstring">
|
1132
1379
|
<div class="discussion">
|
1133
1380
|
|
1134
|
-
<p>Returns whether the
|
1381
|
+
<p>Returns whether the key is RSA</p>
|
1135
1382
|
|
1136
1383
|
|
1137
1384
|
</div>
|
@@ -1150,7 +1397,7 @@ key in the HSM (which will not show the private key, just public)</p>
|
|
1150
1397
|
|
1151
1398
|
—
|
1152
1399
|
<div class='inline'>
|
1153
|
-
<p>true if the
|
1400
|
+
<p>true if the key is RSA, false otherwise</p>
|
1154
1401
|
</div>
|
1155
1402
|
|
1156
1403
|
</li>
|
@@ -1163,15 +1410,15 @@ key in the HSM (which will not show the private key, just public)</p>
|
|
1163
1410
|
<pre class="lines">
|
1164
1411
|
|
1165
1412
|
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1413
|
+
210
|
1414
|
+
211
|
1415
|
+
212</pre>
|
1169
1416
|
</td>
|
1170
1417
|
<td>
|
1171
|
-
<pre class="code"><span class="info file"># File 'lib/r509/
|
1418
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 210</span>
|
1172
1419
|
|
1173
1420
|
<span class='kw'>def</span> <span class='id identifier rubyid_rsa?'>rsa?</span>
|
1174
|
-
|
1421
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</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'>RSA</span><span class='rparen'>)</span>
|
1175
1422
|
<span class='kw'>end</span></pre>
|
1176
1423
|
</td>
|
1177
1424
|
</tr>
|
@@ -1222,21 +1469,21 @@ key in the HSM (which will not show the private key, just public)</p>
|
|
1222
1469
|
<pre class="lines">
|
1223
1470
|
|
1224
1471
|
|
1225
|
-
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1472
|
+
170
|
1473
|
+
171
|
1474
|
+
172
|
1475
|
+
173
|
1476
|
+
174
|
1477
|
+
175</pre>
|
1231
1478
|
</td>
|
1232
1479
|
<td>
|
1233
|
-
<pre class="code"><span class="info file"># File 'lib/r509/
|
1480
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 170</span>
|
1234
1481
|
|
1235
1482
|
<span class='kw'>def</span> <span class='id identifier rubyid_to_der'>to_der</span>
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1483
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_in_hardware?'>in_hardware?</span>
|
1484
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>R509</span><span class='op'>::</span><span class='const'>R509Error</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>This method cannot be called when using keys in hardware</span><span class='tstring_end'>"</span></span>
|
1485
|
+
<span class='kw'>end</span>
|
1486
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_to_der'>to_der</span>
|
1240
1487
|
<span class='kw'>end</span></pre>
|
1241
1488
|
</td>
|
1242
1489
|
</tr>
|
@@ -1326,23 +1573,23 @@ key in the HSM (which will not show the private key, just public)</p>
|
|
1326
1573
|
<pre class="lines">
|
1327
1574
|
|
1328
1575
|
|
1329
|
-
|
1330
|
-
|
1331
|
-
|
1332
|
-
|
1333
|
-
|
1334
|
-
|
1335
|
-
|
1576
|
+
158
|
1577
|
+
159
|
1578
|
+
160
|
1579
|
+
161
|
1580
|
+
162
|
1581
|
+
163
|
1582
|
+
164</pre>
|
1336
1583
|
</td>
|
1337
1584
|
<td>
|
1338
|
-
<pre class="code"><span class="info file"># File 'lib/r509/
|
1585
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 158</span>
|
1339
1586
|
|
1340
1587
|
<span class='kw'>def</span> <span class='id identifier rubyid_to_encrypted_pem'>to_encrypted_pem</span><span class='lparen'>(</span><span class='id identifier rubyid_cipher'>cipher</span><span class='comma'>,</span><span class='id identifier rubyid_password'>password</span><span class='rparen'>)</span>
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1588
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_in_hardware?'>in_hardware?</span>
|
1589
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>R509</span><span class='op'>::</span><span class='const'>R509Error</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>This method cannot be called when using keys in hardware</span><span class='tstring_end'>"</span></span>
|
1590
|
+
<span class='kw'>end</span>
|
1591
|
+
<span class='id identifier rubyid_cipher'>cipher</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Cipher</span><span class='op'>::</span><span class='const'>Cipher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_cipher'>cipher</span><span class='rparen'>)</span>
|
1592
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_to_pem'>to_pem</span><span class='lparen'>(</span><span class='id identifier rubyid_cipher'>cipher</span><span class='comma'>,</span><span class='id identifier rubyid_password'>password</span><span class='rparen'>)</span>
|
1346
1593
|
<span class='kw'>end</span></pre>
|
1347
1594
|
</td>
|
1348
1595
|
</tr>
|
@@ -1393,21 +1640,21 @@ key in the HSM (which will not show the private key, just public)</p>
|
|
1393
1640
|
<pre class="lines">
|
1394
1641
|
|
1395
1642
|
|
1396
|
-
|
1397
|
-
|
1398
|
-
|
1399
|
-
|
1400
|
-
|
1401
|
-
|
1643
|
+
144
|
1644
|
+
145
|
1645
|
+
146
|
1646
|
+
147
|
1647
|
+
148
|
1648
|
+
149</pre>
|
1402
1649
|
</td>
|
1403
1650
|
<td>
|
1404
|
-
<pre class="code"><span class="info file"># File 'lib/r509/
|
1651
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 144</span>
|
1405
1652
|
|
1406
1653
|
<span class='kw'>def</span> <span class='id identifier rubyid_to_pem'>to_pem</span>
|
1407
|
-
|
1408
|
-
|
1409
|
-
|
1410
|
-
|
1654
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_in_hardware?'>in_hardware?</span>
|
1655
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>R509</span><span class='op'>::</span><span class='const'>R509Error</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>This method cannot be called when using keys in hardware</span><span class='tstring_end'>"</span></span>
|
1656
|
+
<span class='kw'>end</span>
|
1657
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_to_pem'>to_pem</span>
|
1411
1658
|
<span class='kw'>end</span></pre>
|
1412
1659
|
</td>
|
1413
1660
|
</tr>
|
@@ -1461,15 +1708,15 @@ IO-like object.</p>
|
|
1461
1708
|
<pre class="lines">
|
1462
1709
|
|
1463
1710
|
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1711
|
+
202
|
1712
|
+
203
|
1713
|
+
204</pre>
|
1467
1714
|
</td>
|
1468
1715
|
<td>
|
1469
|
-
<pre class="code"><span class="info file"># File 'lib/r509/
|
1716
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 202</span>
|
1470
1717
|
|
1471
1718
|
<span class='kw'>def</span> <span class='id identifier rubyid_write_der'>write_der</span><span class='lparen'>(</span><span class='id identifier rubyid_filename_or_io'>filename_or_io</span><span class='rparen'>)</span>
|
1472
|
-
|
1719
|
+
<span class='id identifier rubyid_write_data'>write_data</span><span class='lparen'>(</span><span class='id identifier rubyid_filename_or_io'>filename_or_io</span><span class='comma'>,</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_to_der'>to_der</span><span class='rparen'>)</span>
|
1473
1720
|
<span class='kw'>end</span></pre>
|
1474
1721
|
</td>
|
1475
1722
|
</tr>
|
@@ -1558,15 +1805,15 @@ IO-like object.</p>
|
|
1558
1805
|
<pre class="lines">
|
1559
1806
|
|
1560
1807
|
|
1561
|
-
|
1562
|
-
|
1563
|
-
|
1808
|
+
194
|
1809
|
+
195
|
1810
|
+
196</pre>
|
1564
1811
|
</td>
|
1565
1812
|
<td>
|
1566
|
-
<pre class="code"><span class="info file"># File 'lib/r509/
|
1813
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 194</span>
|
1567
1814
|
|
1568
1815
|
<span class='kw'>def</span> <span class='id identifier rubyid_write_encrypted_pem'>write_encrypted_pem</span><span class='lparen'>(</span><span class='id identifier rubyid_filename_or_io'>filename_or_io</span><span class='comma'>,</span><span class='id identifier rubyid_cipher'>cipher</span><span class='comma'>,</span><span class='id identifier rubyid_password'>password</span><span class='rparen'>)</span>
|
1569
|
-
|
1816
|
+
<span class='id identifier rubyid_write_data'>write_data</span><span class='lparen'>(</span><span class='id identifier rubyid_filename_or_io'>filename_or_io</span><span class='comma'>,</span> <span class='id identifier rubyid_to_encrypted_pem'>to_encrypted_pem</span><span class='lparen'>(</span><span class='id identifier rubyid_cipher'>cipher</span><span class='comma'>,</span><span class='id identifier rubyid_password'>password</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
1570
1817
|
<span class='kw'>end</span></pre>
|
1571
1818
|
</td>
|
1572
1819
|
</tr>
|
@@ -1620,15 +1867,15 @@ IO-like object.</p>
|
|
1620
1867
|
<pre class="lines">
|
1621
1868
|
|
1622
1869
|
|
1623
|
-
|
1624
|
-
|
1625
|
-
|
1870
|
+
181
|
1871
|
+
182
|
1872
|
+
183</pre>
|
1626
1873
|
</td>
|
1627
1874
|
<td>
|
1628
|
-
<pre class="code"><span class="info file"># File 'lib/r509/
|
1875
|
+
<pre class="code"><span class="info file"># File 'lib/r509/private_key.rb', line 181</span>
|
1629
1876
|
|
1630
1877
|
<span class='kw'>def</span> <span class='id identifier rubyid_write_pem'>write_pem</span><span class='lparen'>(</span><span class='id identifier rubyid_filename_or_io'>filename_or_io</span><span class='rparen'>)</span>
|
1631
|
-
|
1878
|
+
<span class='id identifier rubyid_write_data'>write_data</span><span class='lparen'>(</span><span class='id identifier rubyid_filename_or_io'>filename_or_io</span><span class='comma'>,</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_to_pem'>to_pem</span><span class='rparen'>)</span>
|
1632
1879
|
<span class='kw'>end</span></pre>
|
1633
1880
|
</td>
|
1634
1881
|
</tr>
|
@@ -1640,9 +1887,9 @@ IO-like object.</p>
|
|
1640
1887
|
</div>
|
1641
1888
|
|
1642
1889
|
<div id="footer">
|
1643
|
-
Generated on
|
1890
|
+
Generated on Tue Apr 16 10:49:57 2013 by
|
1644
1891
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1645
|
-
0.8.
|
1892
|
+
0.8.5 (ruby-1.9.3).
|
1646
1893
|
</div>
|
1647
1894
|
|
1648
1895
|
</body>
|