r509 0.9 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/bin/r509-parse +1 -1
  2. data/doc/R509.html +2 -2
  3. data/doc/R509/ASN1.html +1 -1
  4. data/doc/R509/ASN1/GeneralName.html +1 -1
  5. data/doc/R509/ASN1/GeneralNames.html +1 -1
  6. data/doc/R509/ASN1/NoticeReference.html +1 -1
  7. data/doc/R509/ASN1/PolicyInformation.html +1 -1
  8. data/doc/R509/ASN1/PolicyQualifiers.html +1 -1
  9. data/doc/R509/ASN1/UserNotice.html +1 -1
  10. data/doc/R509/CRL.html +1 -1
  11. data/doc/R509/CRL/Administrator.html +30 -26
  12. data/doc/R509/CRL/SignedList.html +1 -1
  13. data/doc/R509/CSR.html +1 -1
  14. data/doc/R509/Cert.html +1 -1
  15. data/doc/R509/Cert/Extensions.html +1 -1
  16. data/doc/R509/Cert/Extensions/AuthorityInfoAccess.html +1 -1
  17. data/doc/R509/Cert/Extensions/AuthorityKeyIdentifier.html +1 -1
  18. data/doc/R509/Cert/Extensions/BasicConstraints.html +1 -1
  19. data/doc/R509/Cert/Extensions/CRLDistributionPoints.html +1 -1
  20. data/doc/R509/Cert/Extensions/CertificatePolicies.html +1 -1
  21. data/doc/R509/Cert/Extensions/ExtendedKeyUsage.html +1 -1
  22. data/doc/R509/Cert/Extensions/InhibitAnyPolicy.html +1 -1
  23. data/doc/R509/Cert/Extensions/KeyUsage.html +1 -1
  24. data/doc/R509/Cert/Extensions/NameConstraints.html +1 -1
  25. data/doc/R509/Cert/Extensions/OCSPNoCheck.html +1 -1
  26. data/doc/R509/Cert/Extensions/PolicyConstraints.html +1 -1
  27. data/doc/R509/Cert/Extensions/SubjectAlternativeName.html +1 -1
  28. data/doc/R509/Cert/Extensions/SubjectKeyIdentifier.html +1 -1
  29. data/doc/R509/CertificateAuthority.html +1 -1
  30. data/doc/R509/CertificateAuthority/Signer.html +1 -1
  31. data/doc/R509/Config.html +1 -1
  32. data/doc/R509/Config/CAConfig.html +1 -1
  33. data/doc/R509/Config/CAConfigPool.html +1 -1
  34. data/doc/R509/Config/CAProfile.html +1 -1
  35. data/doc/R509/Config/SubjectItemPolicy.html +1 -1
  36. data/doc/R509/IOHelpers.html +1 -1
  37. data/doc/R509/MessageDigest.html +1 -1
  38. data/doc/R509/NameSanitizer.html +1 -1
  39. data/doc/R509/OCSP.html +1 -1
  40. data/doc/R509/OCSP/Request.html +1 -1
  41. data/doc/R509/OCSP/Request/Nonce.html +1 -1
  42. data/doc/R509/OCSP/Response.html +1 -1
  43. data/doc/R509/OIDMapper.html +1 -1
  44. data/doc/R509/PrivateKey.html +1 -1
  45. data/doc/R509/R509Error.html +1 -1
  46. data/doc/R509/SPKI.html +1 -1
  47. data/doc/R509/Subject.html +1 -1
  48. data/doc/R509/Validity.html +1 -1
  49. data/doc/R509/Validity/Checker.html +1 -1
  50. data/doc/R509/Validity/DefaultChecker.html +1 -1
  51. data/doc/R509/Validity/DefaultWriter.html +1 -1
  52. data/doc/R509/Validity/Status.html +1 -1
  53. data/doc/R509/Validity/Writer.html +1 -1
  54. data/doc/_index.html +1 -1
  55. data/doc/file.README.html +1 -1
  56. data/doc/file.r509.html +1 -1
  57. data/doc/index.html +1 -1
  58. data/doc/top-level-namespace.html +1 -1
  59. data/lib/r509/crl.rb +5 -3
  60. data/lib/r509/version.rb +1 -1
  61. data/spec/crl_spec.rb +15 -3
  62. data/spec/fixtures/crl_list_file.txt +2 -1
  63. metadata +3 -3
data/bin/r509-parse CHANGED
@@ -23,7 +23,7 @@ else
23
23
  puts "Subject: #{cert.subject}"
24
24
  puts "Issuer: #{cert.issuer}"
25
25
  puts "Algorithm: #{cert.signature_algorithm}"
26
- puts "SAN Names: #{cert.san.names.map { |n| n.value }.join(" , ")}"
26
+ puts "SAN Names: #{cert.san.names.map { |n| n.value }.join(" , ")}" unless cert.san.nil?
27
27
  puts "Not Before: #{cert.not_before}"
28
28
  puts "Not After: #{cert.not_after}"
29
29
  puts "Serial (Hex): #{cert.hexserial}"
data/doc/R509.html CHANGED
@@ -129,7 +129,7 @@ support.</p>
129
129
 
130
130
  </div>
131
131
  </dt>
132
- <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>0.9</span><span class='tstring_end'>&quot;</span></span></pre></dd>
132
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>0.9.1</span><span class='tstring_end'>&quot;</span></span></pre></dd>
133
133
 
134
134
  </dl>
135
135
 
@@ -307,7 +307,7 @@ support.</p>
307
307
  </div>
308
308
 
309
309
  <div id="footer">
310
- Generated on Tue Apr 16 10:49:55 2013 by
310
+ Generated on Wed Apr 17 15:21:06 2013 by
311
311
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
312
312
  0.8.5 (ruby-1.9.3).
313
313
  </div>
data/doc/R509/ASN1.html CHANGED
@@ -361,7 +361,7 @@ processing by the subclasses</p>
361
361
  </div>
362
362
 
363
363
  <div id="footer">
364
- Generated on Tue Apr 16 10:49:55 2013 by
364
+ Generated on Wed Apr 17 15:21:06 2013 by
365
365
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
366
366
  0.8.5 (ruby-1.9.3).
367
367
  </div>
@@ -1112,7 +1112,7 @@ R509::CertificateAuthority::Signer</p>
1112
1112
  </div>
1113
1113
 
1114
1114
  <div id="footer">
1115
- Generated on Tue Apr 16 10:49:56 2013 by
1115
+ Generated on Wed Apr 17 15:21:07 2013 by
1116
1116
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1117
1117
  0.8.5 (ruby-1.9.3).
1118
1118
  </div>
@@ -834,7 +834,7 @@ in SubjectAlternativeName, AuthorityInfoAccess, CRLDistributionPoints, etc</p>
834
834
  </div>
835
835
 
836
836
  <div id="footer">
837
- Generated on Tue Apr 16 10:49:56 2013 by
837
+ Generated on Wed Apr 17 15:21:07 2013 by
838
838
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
839
839
  0.8.5 (ruby-1.9.3).
840
840
  </div>
@@ -383,7 +383,7 @@ noticeNumbers SEQUENCE OF INTEGER }</code></pre>
383
383
  </div>
384
384
 
385
385
  <div id="footer">
386
- Generated on Tue Apr 16 10:49:56 2013 by
386
+ Generated on Wed Apr 17 15:21:07 2013 by
387
387
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
388
388
  0.8.5 (ruby-1.9.3).
389
389
  </div>
@@ -378,7 +378,7 @@ policyQualifiers SEQUENCE SIZE (1..MAX) OF
378
378
  </div>
379
379
 
380
380
  <div id="footer">
381
- Generated on Tue Apr 16 10:49:56 2013 by
381
+ Generated on Wed Apr 17 15:21:07 2013 by
382
382
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
383
383
  0.8.5 (ruby-1.9.3).
384
384
  </div>
@@ -446,7 +446,7 @@ qualifier ANY DEFINED BY policyQualifierId }</code></pre>
446
446
  </div>
447
447
 
448
448
  <div id="footer">
449
- Generated on Tue Apr 16 10:49:56 2013 by
449
+ Generated on Wed Apr 17 15:21:07 2013 by
450
450
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
451
451
  0.8.5 (ruby-1.9.3).
452
452
  </div>
@@ -377,7 +377,7 @@ explicitText DisplayText OPTIONAL }</code></pre>
377
377
  </div>
378
378
 
379
379
  <div id="footer">
380
- Generated on Tue Apr 16 10:49:56 2013 by
380
+ Generated on Wed Apr 17 15:21:07 2013 by
381
381
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
382
382
  0.8.5 (ruby-1.9.3).
383
383
  </div>
data/doc/R509/CRL.html CHANGED
@@ -117,7 +117,7 @@
117
117
  </div>
118
118
 
119
119
  <div id="footer">
120
- Generated on Tue Apr 16 10:49:55 2013 by
120
+ Generated on Wed Apr 17 15:21:06 2013 by
121
121
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
122
122
  0.8.5 (ruby-1.9.3).
123
123
  </div>
@@ -297,7 +297,7 @@
297
297
 
298
298
 
299
299
  <span class="summary_desc"><div class='inline'>
300
- <p>Remove serial from revocation list.</p>
300
+ <p>Generate the CRL.</p>
301
301
  </div></span>
302
302
 
303
303
  </li>
@@ -847,7 +847,7 @@
847
847
  </h3><div class="docstring">
848
848
  <div class="discussion">
849
849
 
850
- <p>Remove serial from revocation list</p>
850
+ <p>Generate the CRL</p>
851
851
 
852
852
 
853
853
  </div>
@@ -879,8 +879,6 @@
879
879
  <pre class="lines">
880
880
 
881
881
 
882
- 228
883
- 229
884
882
  230
885
883
  231
886
884
  232
@@ -915,10 +913,12 @@
915
913
  261
916
914
  262
917
915
  263
918
- 264</pre>
916
+ 264
917
+ 265
918
+ 266</pre>
919
919
  </td>
920
920
  <td>
921
- <pre class="code"><span class="info file"># File 'lib/r509/crl.rb', line 228</span>
921
+ <pre class="code"><span class="info file"># File 'lib/r509/crl.rb', line 230</span>
922
922
 
923
923
  <span class='kw'>def</span> <span class='id identifier rubyid_generate_crl'>generate_crl</span>
924
924
  <span class='id identifier rubyid_crl'>crl</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>X509</span><span class='op'>::</span><span class='const'>CRL</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
@@ -932,7 +932,7 @@
932
932
  <span class='id identifier rubyid_revoked'>revoked</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>X509</span><span class='op'>::</span><span class='const'>Revoked</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
933
933
  <span class='id identifier rubyid_revoked'>revoked</span><span class='period'>.</span><span class='id identifier rubyid_serial'>serial</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>BN</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='id identifier rubyid_serial'>serial</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
934
934
  <span class='id identifier rubyid_revoked'>revoked</span><span class='period'>.</span><span class='id identifier rubyid_time'>time</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_at'>at</span><span class='lparen'>(</span><span class='id identifier rubyid_revoke_time'>revoke_time</span><span class='rparen'>)</span>
935
- <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_reason'>reason</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
935
+ <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_reason'>reason</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
936
936
  <span class='id identifier rubyid_enum'>enum</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>ASN1</span><span class='op'>::</span><span class='const'>Enumerated</span><span class='lparen'>(</span><span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span> <span class='comment'>#see reason codes below
937
937
  </span> <span class='id identifier rubyid_ext'>ext</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>X509</span><span class='op'>::</span><span class='const'>Extension</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>CRLReason</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_enum'>enum</span><span class='rparen'>)</span>
938
938
  <span class='id identifier rubyid_revoked'>revoked</span><span class='period'>.</span><span class='id identifier rubyid_add_extension'>add_extension</span><span class='lparen'>(</span><span class='id identifier rubyid_ext'>ext</span><span class='rparen'>)</span>
@@ -1089,7 +1089,9 @@ aACompromise (10) }</code></pre>
1089
1089
  210
1090
1090
  211
1091
1091
  212
1092
- 213</pre>
1092
+ 213
1093
+ 214
1094
+ 215</pre>
1093
1095
  </td>
1094
1096
  <td>
1095
1097
  <pre class="code"><span class="info file"># File 'lib/r509/crl.rb', line 197</span>
@@ -1099,7 +1101,9 @@ aACompromise (10) }</code></pre>
1099
1101
  <span class='id identifier rubyid_reason'>reason</span> <span class='op'>=</span> <span class='int'>0</span>
1100
1102
  <span class='kw'>end</span>
1101
1103
  <span class='id identifier rubyid_serial'>serial</span> <span class='op'>=</span> <span class='id identifier rubyid_serial'>serial</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1102
- <span class='id identifier rubyid_reason'>reason</span> <span class='op'>=</span> <span class='id identifier rubyid_reason'>reason</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1104
+ <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_reason'>reason</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1105
+ <span class='id identifier rubyid_reason'>reason</span> <span class='op'>=</span> <span class='id identifier rubyid_reason'>reason</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1106
+ <span class='kw'>end</span>
1103
1107
  <span class='id identifier rubyid_revoke_time'>revoke_time</span> <span class='op'>=</span> <span class='id identifier rubyid_revoke_time'>revoke_time</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1104
1108
  <span class='kw'>if</span> <span class='id identifier rubyid_revoked?'>revoked?</span><span class='lparen'>(</span><span class='id identifier rubyid_serial'>serial</span><span class='rparen'>)</span>
1105
1109
  <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'>&quot;</span><span class='tstring_content'>Cannot revoke a previously revoked certificate</span><span class='tstring_end'>&quot;</span></span>
@@ -1298,16 +1302,16 @@ aACompromise (10) }</code></pre>
1298
1302
  <pre class="lines">
1299
1303
 
1300
1304
 
1301
- 268
1302
- 269
1303
1305
  270
1304
1306
  271
1305
1307
  272
1306
1308
  273
1307
- 274</pre>
1309
+ 274
1310
+ 275
1311
+ 276</pre>
1308
1312
  </td>
1309
1313
  <td>
1310
- <pre class="code"><span class="info file"># File 'lib/r509/crl.rb', line 268</span>
1314
+ <pre class="code"><span class="info file"># File 'lib/r509/crl.rb', line 270</span>
1311
1315
 
1312
1316
  <span class='kw'>def</span> <span class='id identifier rubyid_revoked_certs'>revoked_certs</span>
1313
1317
  <span class='id identifier rubyid_ret'>ret</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
@@ -1373,8 +1377,6 @@ nil, then an error will be raised.</p>
1373
1377
  <pre class="lines">
1374
1378
 
1375
1379
 
1376
- 283
1377
- 284
1378
1380
  285
1379
1381
  286
1380
1382
  287
@@ -1382,10 +1384,12 @@ nil, then an error will be raised.</p>
1382
1384
  289
1383
1385
  290
1384
1386
  291
1385
- 292</pre>
1387
+ 292
1388
+ 293
1389
+ 294</pre>
1386
1390
  </td>
1387
1391
  <td>
1388
- <pre class="code"><span class="info file"># File 'lib/r509/crl.rb', line 283</span>
1392
+ <pre class="code"><span class="info file"># File 'lib/r509/crl.rb', line 285</span>
1389
1393
 
1390
1394
  <span class='kw'>def</span> <span class='id identifier rubyid_save_crl_list'>save_crl_list</span><span class='lparen'>(</span><span class='id identifier rubyid_filename_or_io'>filename_or_io</span> <span class='op'>=</span> <span class='ivar'>@crl_list_file</span><span class='rparen'>)</span>
1391
1395
  <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_filename_or_io'>filename_or_io</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
@@ -1454,16 +1458,16 @@ is nil, then an error will be raised.</p>
1454
1458
  <pre class="lines">
1455
1459
 
1456
1460
 
1457
- 301
1458
- 302
1459
1461
  303
1460
1462
  304
1461
1463
  305
1462
1464
  306
1463
- 307</pre>
1465
+ 307
1466
+ 308
1467
+ 309</pre>
1464
1468
  </td>
1465
1469
  <td>
1466
- <pre class="code"><span class="info file"># File 'lib/r509/crl.rb', line 301</span>
1470
+ <pre class="code"><span class="info file"># File 'lib/r509/crl.rb', line 303</span>
1467
1471
 
1468
1472
  <span class='kw'>def</span> <span class='id identifier rubyid_save_crl_number'>save_crl_number</span><span class='lparen'>(</span><span class='id identifier rubyid_filename_or_io'>filename_or_io</span> <span class='op'>=</span> <span class='ivar'>@crl_number_file</span><span class='rparen'>)</span>
1469
1473
  <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_filename_or_io'>filename_or_io</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
@@ -1524,15 +1528,15 @@ generate_crl to sign a new CRL</p>
1524
1528
  <pre class="lines">
1525
1529
 
1526
1530
 
1527
- 218
1528
- 219
1529
1531
  220
1530
1532
  221
1531
1533
  222
1532
- 223</pre>
1534
+ 223
1535
+ 224
1536
+ 225</pre>
1533
1537
  </td>
1534
1538
  <td>
1535
- <pre class="code"><span class="info file"># File 'lib/r509/crl.rb', line 218</span>
1539
+ <pre class="code"><span class="info file"># File 'lib/r509/crl.rb', line 220</span>
1536
1540
 
1537
1541
  <span class='kw'>def</span> <span class='id identifier rubyid_unrevoke_cert'>unrevoke_cert</span><span class='lparen'>(</span><span class='id identifier rubyid_serial'>serial</span><span class='rparen'>)</span>
1538
1542
  <span class='ivar'>@revoked_certs</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_serial'>serial</span><span class='rparen'>)</span>
@@ -1550,7 +1554,7 @@ generate_crl to sign a new CRL</p>
1550
1554
  </div>
1551
1555
 
1552
1556
  <div id="footer">
1553
- Generated on Tue Apr 16 10:49:56 2013 by
1557
+ Generated on Wed Apr 17 15:21:06 2013 by
1554
1558
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1555
1559
  0.8.5 (ruby-1.9.3).
1556
1560
  </div>
@@ -1505,7 +1505,7 @@ IO-like object.</p>
1505
1505
  </div>
1506
1506
 
1507
1507
  <div id="footer">
1508
- Generated on Tue Apr 16 10:49:56 2013 by
1508
+ Generated on Wed Apr 17 15:21:06 2013 by
1509
1509
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1510
1510
  0.8.5 (ruby-1.9.3).
1511
1511
  </div>
data/doc/R509/CSR.html CHANGED
@@ -2375,7 +2375,7 @@ IO-like object.</p>
2375
2375
  </div>
2376
2376
 
2377
2377
  <div id="footer">
2378
- Generated on Tue Apr 16 10:49:55 2013 by
2378
+ Generated on Wed Apr 17 15:21:06 2013 by
2379
2379
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
2380
2380
  0.8.5 (ruby-1.9.3).
2381
2381
  </div>
data/doc/R509/Cert.html CHANGED
@@ -4200,7 +4200,7 @@ IO-like object.</p>
4200
4200
  </div>
4201
4201
 
4202
4202
  <div id="footer">
4203
- Generated on Tue Apr 16 10:49:56 2013 by
4203
+ Generated on Wed Apr 17 15:21:07 2013 by
4204
4204
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
4205
4205
  0.8.5 (ruby-1.9.3).
4206
4206
  </div>
@@ -327,7 +327,7 @@ implementation are ignored (see #get_unknown_extensions).</p>
327
327
  </div>
328
328
 
329
329
  <div id="footer">
330
- Generated on Tue Apr 16 10:49:55 2013 by
330
+ Generated on Wed Apr 17 15:21:06 2013 by
331
331
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
332
332
  0.8.5 (ruby-1.9.3).
333
333
  </div>
@@ -415,7 +415,7 @@ provide access to the components and meaning of the extension's contents.</p>
415
415
  </div>
416
416
 
417
417
  <div id="footer">
418
- Generated on Tue Apr 16 10:49:58 2013 by
418
+ Generated on Wed Apr 17 15:21:09 2013 by
419
419
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
420
420
  0.8.5 (ruby-1.9.3).
421
421
  </div>
@@ -522,7 +522,7 @@ colons</p>
522
522
  </div>
523
523
 
524
524
  <div id="footer">
525
- Generated on Tue Apr 16 10:49:58 2013 by
525
+ Generated on Wed Apr 17 15:21:08 2013 by
526
526
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
527
527
  0.8.5 (ruby-1.9.3).
528
528
  </div>
@@ -508,7 +508,7 @@ is a pathlen restriction in the cert chain above the current cert</p>
508
508
  </div>
509
509
 
510
510
  <div id="footer">
511
- Generated on Tue Apr 16 10:49:57 2013 by
511
+ Generated on Wed Apr 17 15:21:08 2013 by
512
512
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
513
513
  0.8.5 (ruby-1.9.3).
514
514
  </div>
@@ -345,7 +345,7 @@ provide access to the components and meaning of the extension's contents.</p>
345
345
  </div>
346
346
 
347
347
  <div id="footer">
348
- Generated on Tue Apr 16 10:49:58 2013 by
348
+ Generated on Wed Apr 17 15:21:09 2013 by
349
349
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
350
350
  0.8.5 (ruby-1.9.3).
351
351
  </div>
@@ -331,7 +331,7 @@ provide access to the components and meaning of the extension's contents.</p>
331
331
  </div>
332
332
 
333
333
  <div id="footer">
334
- Generated on Tue Apr 16 10:49:58 2013 by
334
+ Generated on Wed Apr 17 15:21:09 2013 by
335
335
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
336
336
  0.8.5 (ruby-1.9.3).
337
337
  </div>
@@ -1161,7 +1161,7 @@ provide access to the components and meaning of the extension's contents.</p>
1161
1161
  </div>
1162
1162
 
1163
1163
  <div id="footer">
1164
- Generated on Tue Apr 16 10:49:58 2013 by
1164
+ Generated on Wed Apr 17 15:21:08 2013 by
1165
1165
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1166
1166
  0.8.5 (ruby-1.9.3).
1167
1167
  </div>
@@ -323,7 +323,7 @@ provide access to the component and meaning of the extension's contents.</p>
323
323
  </div>
324
324
 
325
325
  <div id="footer">
326
- Generated on Tue Apr 16 10:49:58 2013 by
326
+ Generated on Wed Apr 17 15:21:09 2013 by
327
327
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
328
328
  0.8.5 (ruby-1.9.3).
329
329
  </div>
@@ -1346,7 +1346,7 @@ AU_* constants in this class</p>
1346
1346
  </div>
1347
1347
 
1348
1348
  <div id="footer">
1349
- Generated on Tue Apr 16 10:49:57 2013 by
1349
+ Generated on Wed Apr 17 15:21:08 2013 by
1350
1350
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1351
1351
  0.8.5 (ruby-1.9.3).
1352
1352
  </div>
@@ -436,7 +436,7 @@ BaseDistance ::= INTEGER (0..MAX)</code></pre>
436
436
  </div>
437
437
 
438
438
  <div id="footer">
439
- Generated on Tue Apr 16 10:49:58 2013 by
439
+ Generated on Wed Apr 17 15:21:09 2013 by
440
440
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
441
441
  0.8.5 (ruby-1.9.3).
442
442
  </div>
@@ -230,7 +230,7 @@
230
230
  </div>
231
231
 
232
232
  <div id="footer">
233
- Generated on Tue Apr 16 10:49:58 2013 by
233
+ Generated on Wed Apr 17 15:21:09 2013 by
234
234
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
235
235
  0.8.5 (ruby-1.9.3).
236
236
  </div>
@@ -415,7 +415,7 @@ provide access to the components and meaning of the extension's contents.</p>
415
415
  </div>
416
416
 
417
417
  <div id="footer">
418
- Generated on Tue Apr 16 10:49:58 2013 by
418
+ Generated on Wed Apr 17 15:21:09 2013 by
419
419
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
420
420
  0.8.5 (ruby-1.9.3).
421
421
  </div>
@@ -830,7 +830,7 @@ contents.</p>
830
830
  </div>
831
831
 
832
832
  <div id="footer">
833
- Generated on Tue Apr 16 10:49:58 2013 by
833
+ Generated on Wed Apr 17 15:21:09 2013 by
834
834
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
835
835
  0.8.5 (ruby-1.9.3).
836
836
  </div>
@@ -249,7 +249,7 @@ provide access to the components and meaning of the extension's contents.</p>
249
249
  </div>
250
250
 
251
251
  <div id="footer">
252
- Generated on Tue Apr 16 10:49:58 2013 by
252
+ Generated on Wed Apr 17 15:21:08 2013 by
253
253
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
254
254
  0.8.5 (ruby-1.9.3).
255
255
  </div>
@@ -117,7 +117,7 @@
117
117
  </div>
118
118
 
119
119
  <div id="footer">
120
- Generated on Tue Apr 16 10:49:55 2013 by
120
+ Generated on Wed Apr 17 15:21:06 2013 by
121
121
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
122
122
  0.8.5 (ruby-1.9.3).
123
123
  </div>
@@ -835,7 +835,7 @@ default</p>
835
835
  </div>
836
836
 
837
837
  <div id="footer">
838
- Generated on Tue Apr 16 10:49:58 2013 by
838
+ Generated on Wed Apr 17 15:21:09 2013 by
839
839
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
840
840
  0.8.5 (ruby-1.9.3).
841
841
  </div>
data/doc/R509/Config.html CHANGED
@@ -118,7 +118,7 @@ CAProfile, SubjectItemPolicy)</p>
118
118
  </div>
119
119
 
120
120
  <div id="footer">
121
- Generated on Tue Apr 16 10:49:55 2013 by
121
+ Generated on Wed Apr 17 15:21:06 2013 by
122
122
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
123
123
  0.8.5 (ruby-1.9.3).
124
124
  </div>
@@ -2243,7 +2243,7 @@ contain more than one configuration.</p>
2243
2243
  </div>
2244
2244
 
2245
2245
  <div id="footer">
2246
- Generated on Tue Apr 16 10:49:57 2013 by
2246
+ Generated on Wed Apr 17 15:21:07 2013 by
2247
2247
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
2248
2248
  0.8.5 (ruby-1.9.3).
2249
2249
  </div>
@@ -592,7 +592,7 @@ contain more than one configuration.</p>
592
592
  </div>
593
593
 
594
594
  <div id="footer">
595
- Generated on Tue Apr 16 10:49:56 2013 by
595
+ Generated on Wed Apr 17 15:21:07 2013 by
596
596
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
597
597
  0.8.5 (ruby-1.9.3).
598
598
  </div>
@@ -1006,7 +1006,7 @@
1006
1006
  </div>
1007
1007
 
1008
1008
  <div id="footer">
1009
- Generated on Tue Apr 16 10:49:56 2013 by
1009
+ Generated on Wed Apr 17 15:21:07 2013 by
1010
1010
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1011
1011
  0.8.5 (ruby-1.9.3).
1012
1012
  </div>
@@ -567,7 +567,7 @@ format.</p>
567
567
  </div>
568
568
 
569
569
  <div id="footer">
570
- Generated on Tue Apr 16 10:49:56 2013 by
570
+ Generated on Wed Apr 17 15:21:07 2013 by
571
571
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
572
572
  0.8.5 (ruby-1.9.3).
573
573
  </div>
@@ -555,7 +555,7 @@ IO-like object.</p>
555
555
  </div>
556
556
 
557
557
  <div id="footer">
558
- Generated on Tue Apr 16 10:49:55 2013 by
558
+ Generated on Wed Apr 17 15:21:06 2013 by
559
559
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
560
560
  0.8.5 (ruby-1.9.3).
561
561
  </div>
@@ -385,7 +385,7 @@
385
385
  </div>
386
386
 
387
387
  <div id="footer">
388
- Generated on Tue Apr 16 10:49:57 2013 by
388
+ Generated on Wed Apr 17 15:21:08 2013 by
389
389
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
390
390
  0.8.5 (ruby-1.9.3).
391
391
  </div>
@@ -310,7 +310,7 @@ by the actual OID</p>
310
310
  </div>
311
311
 
312
312
  <div id="footer">
313
- Generated on Tue Apr 16 10:49:57 2013 by
313
+ Generated on Wed Apr 17 15:21:08 2013 by
314
314
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
315
315
  0.8.5 (ruby-1.9.3).
316
316
  </div>
data/doc/R509/OCSP.html CHANGED
@@ -119,7 +119,7 @@
119
119
  </div>
120
120
 
121
121
  <div id="footer">
122
- Generated on Tue Apr 16 10:49:55 2013 by
122
+ Generated on Wed Apr 17 15:21:06 2013 by
123
123
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
124
124
  0.8.5 (ruby-1.9.3).
125
125
  </div>
@@ -117,7 +117,7 @@
117
117
  </div>
118
118
 
119
119
  <div id="footer">
120
- Generated on Tue Apr 16 10:49:55 2013 by
120
+ Generated on Wed Apr 17 15:21:06 2013 by
121
121
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
122
122
  0.8.5 (ruby-1.9.3).
123
123
  </div>
@@ -196,7 +196,7 @@ nonce is present and matches</p>
196
196
  </div>
197
197
 
198
198
  <div id="footer">
199
- Generated on Tue Apr 16 10:49:55 2013 by
199
+ Generated on Wed Apr 17 15:21:06 2013 by
200
200
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
201
201
  0.8.5 (ruby-1.9.3).
202
202
  </div>
@@ -828,7 +828,7 @@
828
828
  </div>
829
829
 
830
830
  <div id="footer">
831
- Generated on Tue Apr 16 10:49:56 2013 by
831
+ Generated on Wed Apr 17 15:21:07 2013 by
832
832
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
833
833
  0.8.5 (ruby-1.9.3).
834
834
  </div>
@@ -368,7 +368,7 @@
368
368
  </div>
369
369
 
370
370
  <div id="footer">
371
- Generated on Tue Apr 16 10:49:55 2013 by
371
+ Generated on Wed Apr 17 15:21:06 2013 by
372
372
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
373
373
  0.8.5 (ruby-1.9.3).
374
374
  </div>
@@ -1887,7 +1887,7 @@ IO-like object.</p>
1887
1887
  </div>
1888
1888
 
1889
1889
  <div id="footer">
1890
- Generated on Tue Apr 16 10:49:57 2013 by
1890
+ Generated on Wed Apr 17 15:21:08 2013 by
1891
1891
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1892
1892
  0.8.5 (ruby-1.9.3).
1893
1893
  </div>
@@ -125,7 +125,7 @@
125
125
  </div>
126
126
 
127
127
  <div id="footer">
128
- Generated on Tue Apr 16 10:49:57 2013 by
128
+ Generated on Wed Apr 17 15:21:08 2013 by
129
129
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
130
130
  0.8.5 (ruby-1.9.3).
131
131
  </div>
data/doc/R509/SPKI.html CHANGED
@@ -1580,7 +1580,7 @@ IO-like object.</p>
1580
1580
  </div>
1581
1581
 
1582
1582
  <div id="footer">
1583
- Generated on Tue Apr 16 10:49:56 2013 by
1583
+ Generated on Wed Apr 17 15:21:07 2013 by
1584
1584
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1585
1585
  0.8.5 (ruby-1.9.3).
1586
1586
  </div>
@@ -938,7 +938,7 @@ via R509::OIDMapper</p>
938
938
  </div>
939
939
 
940
940
  <div id="footer">
941
- Generated on Tue Apr 16 10:49:57 2013 by
941
+ Generated on Wed Apr 17 15:21:07 2013 by
942
942
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
943
943
  0.8.5 (ruby-1.9.3).
944
944
  </div>
@@ -173,7 +173,7 @@ information (used for serving OCSP responses)</p>
173
173
  </div>
174
174
 
175
175
  <div id="footer">
176
- Generated on Tue Apr 16 10:49:55 2013 by
176
+ Generated on Wed Apr 17 15:21:06 2013 by
177
177
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
178
178
  0.8.5 (ruby-1.9.3).
179
179
  </div>
@@ -311,7 +311,7 @@ r509-validity-redis for an example of use</p>
311
311
  </div>
312
312
 
313
313
  <div id="footer">
314
- Generated on Tue Apr 16 10:49:57 2013 by
314
+ Generated on Wed Apr 17 15:21:08 2013 by
315
315
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
316
316
  0.8.5 (ruby-1.9.3).
317
317
  </div>
@@ -274,7 +274,7 @@ OTHERWISE</p>
274
274
  </div>
275
275
 
276
276
  <div id="footer">
277
- Generated on Tue Apr 16 10:49:57 2013 by
277
+ Generated on Wed Apr 17 15:21:08 2013 by
278
278
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
279
279
  0.8.5 (ruby-1.9.3).
280
280
  </div>
@@ -321,7 +321,7 @@
321
321
  </div>
322
322
 
323
323
  <div id="footer">
324
- Generated on Tue Apr 16 10:49:57 2013 by
324
+ Generated on Wed Apr 17 15:21:08 2013 by
325
325
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
326
326
  0.8.5 (ruby-1.9.3).
327
327
  </div>
@@ -549,7 +549,7 @@
549
549
  </div>
550
550
 
551
551
  <div id="footer">
552
- Generated on Tue Apr 16 10:49:57 2013 by
552
+ Generated on Wed Apr 17 15:21:08 2013 by
553
553
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
554
554
  0.8.5 (ruby-1.9.3).
555
555
  </div>
@@ -385,7 +385,7 @@ r509-validity-redis for an example of use</p>
385
385
  </div>
386
386
 
387
387
  <div id="footer">
388
- Generated on Tue Apr 16 10:49:57 2013 by
388
+ Generated on Wed Apr 17 15:21:08 2013 by
389
389
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
390
390
  0.8.5 (ruby-1.9.3).
391
391
  </div>
data/doc/_index.html CHANGED
@@ -595,7 +595,7 @@
595
595
  </div>
596
596
 
597
597
  <div id="footer">
598
- Generated on Tue Apr 16 10:49:55 2013 by
598
+ Generated on Wed Apr 17 15:21:06 2013 by
599
599
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
600
600
  0.8.5 (ruby-1.9.3).
601
601
  </div>
data/doc/file.README.html CHANGED
@@ -722,7 +722,7 @@ emailAddress: &quot;optional&quot;
722
722
  </div></div>
723
723
 
724
724
  <div id="footer">
725
- Generated on Tue Apr 16 10:49:55 2013 by
725
+ Generated on Wed Apr 17 15:21:06 2013 by
726
726
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
727
727
  0.8.5 (ruby-1.9.3).
728
728
  </div>
data/doc/file.r509.html CHANGED
@@ -163,7 +163,7 @@
163
163
  </div></div>
164
164
 
165
165
  <div id="footer">
166
- Generated on Tue Apr 16 10:49:55 2013 by
166
+ Generated on Wed Apr 17 15:21:06 2013 by
167
167
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
168
168
  0.8.5 (ruby-1.9.3).
169
169
  </div>
data/doc/index.html CHANGED
@@ -722,7 +722,7 @@ emailAddress: &quot;optional&quot;
722
722
  </div></div>
723
723
 
724
724
  <div id="footer">
725
- Generated on Tue Apr 16 10:49:55 2013 by
725
+ Generated on Wed Apr 17 15:21:06 2013 by
726
726
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
727
727
  0.8.5 (ruby-1.9.3).
728
728
  </div>
@@ -103,7 +103,7 @@
103
103
  </div>
104
104
 
105
105
  <div id="footer">
106
- Generated on Tue Apr 16 10:49:55 2013 by
106
+ Generated on Wed Apr 17 15:21:06 2013 by
107
107
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
108
108
  0.8.5 (ruby-1.9.3).
109
109
  </div>
data/lib/r509/crl.rb CHANGED
@@ -199,7 +199,9 @@ module R509
199
199
  reason = 0
200
200
  end
201
201
  serial = serial.to_i
202
- reason = reason.to_i
202
+ if not reason.nil?
203
+ reason = reason.to_i
204
+ end
203
205
  revoke_time = revoke_time.to_i
204
206
  if revoked?(serial)
205
207
  raise R509::R509Error, "Cannot revoke a previously revoked certificate"
@@ -222,7 +224,7 @@ module R509
222
224
  nil
223
225
  end
224
226
 
225
- # Remove serial from revocation list
227
+ # Generate the CRL
226
228
  #
227
229
  # @return [String] PEM encoded signed CRL
228
230
  def generate_crl
@@ -237,7 +239,7 @@ module R509
237
239
  revoked = OpenSSL::X509::Revoked.new
238
240
  revoked.serial = OpenSSL::BN.new serial.to_s
239
241
  revoked.time = Time.at(revoke_time)
240
- if !reason.nil?
242
+ if not reason.nil?
241
243
  enum = OpenSSL::ASN1::Enumerated(reason) #see reason codes below
242
244
  ext = OpenSSL::X509::Extension.new("CRLReason", enum)
243
245
  revoked.add_extension(ext)
data/lib/r509/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module R509
2
2
  #The version of the r509 gem
3
- VERSION="0.9"
3
+ VERSION="0.9.1"
4
4
  end
data/spec/crl_spec.rb CHANGED
@@ -141,6 +141,17 @@ describe R509::CRL::Administrator do
141
141
  crl_admin.crl.crl.revoked[0].extensions[0].oid.should == "CRLReason"
142
142
  crl_admin.crl.crl.revoked[0].extensions[0].value.should == "Key Compromise"
143
143
  end
144
+ it "can revoke (without reason)" do
145
+ crl_admin = R509::CRL::Administrator.new(@test_ca_config)
146
+ crl_admin.revoked?(12345).should == false
147
+ crl_admin.revoke_cert(12345)
148
+ crl_admin.revoked?(12345).should == true
149
+ crl_admin.revoked_cert(12345)[:reason].should be_nil
150
+
151
+ crl_admin.crl.crl.revoked[0].serial.should == 12345
152
+ crl_admin.crl.crl.revoked[0].extensions.size.should == 0
153
+ puts crl_admin.crl_list_file.string
154
+ end
144
155
  it "cannot revoke the same serial twice" do
145
156
  crl = R509::CRL::Administrator.new(@test_ca_config)
146
157
  crl.revoked?(12345).should == false
@@ -175,7 +186,9 @@ describe R509::CRL::Administrator do
175
186
  crl.revoked?(12345).should == true
176
187
  crl.revoked_cert(12345)[:revoke_time].should == 1323983885
177
188
  crl.revoked_cert(12345)[:reason].should == 0
178
-
189
+ crl.revoked?(12346).should == true
190
+ crl.revoked_cert(12346)[:revoke_time].should == 1323983885
191
+ crl.revoked_cert(12346)[:reason].should == nil
179
192
  end
180
193
  it "when nil crl_list_file still call generate_crl" do
181
194
  config = R509::Config::CAConfig.new(
@@ -194,8 +207,7 @@ describe R509::CRL::Administrator do
194
207
  it "writes crl list" do
195
208
  crl = R509::CRL::Administrator.new(@test_ca_config)
196
209
  crl.revoke_cert(12345)
197
- crl.save_crl_list
198
- crl.crl_list_file.string.should match(/[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+/)
210
+ crl.crl_list_file.string.should match(/[0-9]+,[0-9]+,/)
199
211
  end
200
212
  it "doesn't write the crl_number_file when it is nil" do
201
213
  config = R509::Config::CAConfig.new(
@@ -1 +1,2 @@
1
- 12345,1323983885,0
1
+ 12345,1323983885,0
2
+ 12346,1323983885,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r509
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.9'
4
+ version: 0.9.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-16 00:00:00.000000000 Z
12
+ date: 2013-04-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: trollop
@@ -305,7 +305,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
305
305
  version: '0'
306
306
  segments:
307
307
  - 0
308
- hash: -3993533769790460718
308
+ hash: 2724354738993155579
309
309
  requirements: []
310
310
  rubyforge_project:
311
311
  rubygems_version: 1.8.23