@@ -204,6 +204,36 @@ def test_sign_and_verify
204204 assert_equal ( false , crl . verify ( @dsa512 ) )
205205 end
206206
207+ def test_sign_and_verify_ed25519
208+ # See test_ed25519 in test_pkey.rb
209+
210+ # Ed25519 is not FIPS-approved.
211+ omit_on_fips
212+
213+ begin
214+ ed25519 = OpenSSL ::PKey ::generate_key ( "ED25519" )
215+ rescue OpenSSL ::PKey ::PKeyError => e
216+ # OpenSSL < 1.1.1
217+ #
218+ pend "Ed25519 is not implemented" unless openssl? ( 1 , 1 , 1 )
219+
220+ raise e
221+ end
222+
223+ # See ASN1_item_sign_ctx in ChangeLog for 3.8.1: https://github.com/libressl/portable/blob/master/ChangeLog
224+ pend 'ASN1 signing with Ed25519 not yet working' unless openssl? or libressl? ( 3 , 8 , 1 )
225+
226+ cert = issue_cert ( @ca , ed25519 , 1 , [ ] , nil , nil , digest : nil )
227+ crl = issue_crl ( [ ] , 1 , Time . now , Time . now +1600 , [ ] ,
228+ cert , ed25519 , nil )
229+ assert_equal ( false , crl_error_returns_false { crl . verify ( @rsa1024 ) } )
230+ assert_equal ( false , crl_error_returns_false { crl . verify ( @rsa2048 ) } )
231+ assert_equal ( false , crl . verify ( OpenSSL ::PKey ::generate_key ( "ED25519" ) ) )
232+ assert_equal ( true , crl . verify ( ed25519 ) )
233+ crl . version = 0
234+ assert_equal ( false , crl . verify ( ed25519 ) )
235+ end
236+
207237 def test_revoked_to_der
208238 # revokedCertificates SEQUENCE OF SEQUENCE {
209239 # userCertificate CertificateSerialNumber,
0 commit comments