@@ -197,6 +197,56 @@ def test_sign_and_verify
197197 assert_equal ( false , crl . verify ( @dsa512 ) )
198198 end
199199
200+ def test_revoked_to_der
201+ # revokedCertificates SEQUENCE OF SEQUENCE {
202+ # userCertificate CertificateSerialNumber,
203+ # revocationDate Time,
204+ # crlEntryExtensions Extensions OPTIONAL
205+ # -- if present, version MUST be v2
206+ # } OPTIONAL,
207+
208+ now = Time . utc ( 2000 , 1 , 1 )
209+ rev1 = OpenSSL ::X509 ::Revoked . new
210+ rev1 . serial = 123
211+ rev1 . time = now
212+ ext = OpenSSL ::X509 ::Extension . new ( "CRLReason" , OpenSSL ::ASN1 ::Enumerated ( 1 ) )
213+ rev1 . extensions = [ ext ]
214+ asn1 = OpenSSL ::ASN1 ::Sequence ( [
215+ OpenSSL ::ASN1 ::Integer ( 123 ) ,
216+ OpenSSL ::ASN1 ::UTCTime ( now ) ,
217+ OpenSSL ::ASN1 ::Sequence ( [ ext . to_der ] )
218+ ] )
219+
220+ assert_equal asn1 . to_der , rev1 . to_der
221+ end
222+
223+ def test_eq
224+ cacert = issue_cert ( @ca , @rsa1024 , 1 , [ ] , nil , nil )
225+ crl1 = issue_crl ( [ ] , 1 , Time . now , Time . now + 3600 , [ ] , cacert , @rsa1024 , "sha256" )
226+ rev1 = OpenSSL ::X509 ::Revoked . new . tap { |rev |
227+ rev . serial = 1
228+ rev . time = Time . now
229+ }
230+ crl1 . add_revoked ( rev1 )
231+ crl2 = OpenSSL ::X509 ::CRL . new ( crl1 . to_der )
232+
233+ # CRL
234+ assert_equal false , crl1 == 12345
235+ assert_equal true , crl1 == crl2
236+ rev2 = OpenSSL ::X509 ::Revoked . new . tap { |rev |
237+ rev . serial = 2
238+ rev . time = Time . now
239+ }
240+ crl2 . add_revoked ( rev2 )
241+ assert_equal false , crl1 == crl2
242+
243+ # Revoked
244+ assert_equal false , rev1 == 12345
245+ assert_equal true , rev1 == crl2 . revoked [ 0 ]
246+ assert_equal false , rev1 == crl2 . revoked [ 1 ]
247+ assert_equal true , rev2 == crl2 . revoked [ 1 ]
248+ end
249+
200250 private
201251
202252 def crl_error_returns_false
0 commit comments