@@ -17,21 +17,21 @@ def issue_csr(ver, dn, key, digest)
17
17
req = OpenSSL ::X509 ::Request . new
18
18
req . version = ver
19
19
req . subject = dn
20
- req . public_key = key . public_key
20
+ req . public_key = key
21
21
req . sign ( key , digest )
22
22
req
23
23
end
24
24
25
25
def test_public_key
26
26
req = issue_csr ( 0 , @dn , @rsa1024 , OpenSSL ::Digest . new ( 'SHA256' ) )
27
- assert_equal ( @rsa1024 . public_key . to_der , req . public_key . to_der )
27
+ assert_equal ( @rsa1024 . public_to_der , req . public_key . public_to_der )
28
28
req = OpenSSL ::X509 ::Request . new ( req . to_der )
29
- assert_equal ( @rsa1024 . public_key . to_der , req . public_key . to_der )
29
+ assert_equal ( @rsa1024 . public_to_der , req . public_key . public_to_der )
30
30
31
31
req = issue_csr ( 0 , @dn , @dsa512 , OpenSSL ::Digest . new ( 'SHA256' ) )
32
- assert_equal ( @dsa512 . public_key . to_der , req . public_key . to_der )
32
+ assert_equal ( @dsa512 . public_to_der , req . public_key . public_to_der )
33
33
req = OpenSSL ::X509 ::Request . new ( req . to_der )
34
- assert_equal ( @dsa512 . public_key . to_der , req . public_key . to_der )
34
+ assert_equal ( @dsa512 . public_to_der , req . public_key . public_to_der )
35
35
end
36
36
37
37
def test_version
@@ -132,6 +132,21 @@ def test_sign_and_verify_dsa_md5
132
132
issue_csr ( 0 , @dn , @dsa512 , OpenSSL ::Digest . new ( 'MD5' ) ) }
133
133
end
134
134
135
+ def test_sign_and_verify_ed25519
136
+ # Ed25519 is not FIPS-approved.
137
+ omit_on_fips
138
+ # See ASN1_item_sign_ctx in ChangeLog for 3.8.1: https://github.com/libressl/portable/blob/master/ChangeLog
139
+ omit "Ed25519 not supported" unless openssl? ( 1 , 1 , 1 ) || libressl? ( 3 , 8 , 1 )
140
+ ed25519 = OpenSSL ::PKey ::generate_key ( "ED25519" )
141
+ req = issue_csr ( 0 , @dn , ed25519 , nil )
142
+ assert_equal ( false , request_error_returns_false { req . verify ( @rsa1024 ) } )
143
+ assert_equal ( false , request_error_returns_false { req . verify ( @rsa2048 ) } )
144
+ assert_equal ( false , req . verify ( OpenSSL ::PKey ::generate_key ( "ED25519" ) ) )
145
+ assert_equal ( true , req . verify ( ed25519 ) )
146
+ req . public_key = @rsa1024 . public_key
147
+ assert_equal ( false , req . verify ( ed25519 ) )
148
+ end
149
+
135
150
def test_dup
136
151
req = issue_csr ( 0 , @dn , @rsa1024 , OpenSSL ::Digest . new ( 'SHA256' ) )
137
152
assert_equal ( req . to_der , req . dup . to_der )
0 commit comments