66class OpenSSL ::TestDigest < OpenSSL ::TestCase
77 def setup
88 super
9- @d1 = OpenSSL ::Digest . new ( "MD5 " )
10- @d2 = OpenSSL ::Digest ::MD5 . new
9+ @d1 = OpenSSL ::Digest . new ( "SHA256 " )
10+ @d2 = OpenSSL ::Digest ::SHA256 . new
1111 end
1212
1313 def test_initialize
@@ -17,18 +17,20 @@ def test_initialize
1717 end
1818
1919 def test_digest
20- null_hex = "d41d8cd98f00b204e9800998ecf8427e"
20+ # SHA256 null value calculated by `echo -n "" | sha256sum`
21+ null_hex = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
2122 null_bin = [ null_hex ] . pack ( "H*" )
2223 data = "DATA"
23- hex = "e44f9e348e41cb272efa87387728571b"
24+ # SHA256 DATA value calculated by `echo -n "DATA" | sha256sum`
25+ hex = "c97c29c7a71b392b437ee03fd17f09bb10b75e879466fc0eb757b2c4a78ac938"
2426 bin = [ hex ] . pack ( "H*" )
2527 assert_equal ( null_bin , @d1 . digest )
2628 assert_equal ( null_hex , @d1 . hexdigest )
2729 @d1 << data
2830 assert_equal ( bin , @d1 . digest )
2931 assert_equal ( hex , @d1 . hexdigest )
30- assert_equal ( bin , OpenSSL ::Digest . digest ( 'MD5 ' , data ) )
31- assert_equal ( hex , OpenSSL ::Digest . hexdigest ( 'MD5 ' , data ) )
32+ assert_equal ( bin , OpenSSL ::Digest . digest ( 'SHA256 ' , data ) )
33+ assert_equal ( hex , OpenSSL ::Digest . hexdigest ( 'SHA256 ' , data ) )
3234 end
3335
3436 def test_eql
@@ -38,9 +40,9 @@ def test_eql
3840 end
3941
4042 def test_info
41- assert_equal ( "MD5 " , @d1 . name , "name" )
42- assert_equal ( "MD5 " , @d2 . name , "name" )
43- assert_equal ( 16 , @d1 . size , "size" )
43+ assert_equal ( "SHA256 " , @d1 . name , "name" )
44+ assert_equal ( "SHA256 " , @d2 . name , "name" )
45+ assert_equal ( 32 , @d1 . size , "size" )
4446 end
4547
4648 def test_dup
@@ -60,7 +62,10 @@ def test_reset
6062 end
6163
6264 def test_digest_constants
63- %w{ MD5 SHA1 SHA224 SHA256 SHA384 SHA512 } . each do |name |
65+ non_fips_names = %w{ MD5 }
66+ names = %w{ SHA1 SHA224 SHA256 SHA384 SHA512 }
67+ names = non_fips_names + names unless OpenSSL . fips_mode
68+ names . each do |name |
6469 assert_not_nil ( OpenSSL ::Digest . new ( name ) )
6570 klass = OpenSSL ::Digest . const_get ( name . tr ( '-' , '_' ) )
6671 assert_not_nil ( klass . new )
@@ -125,6 +130,9 @@ def test_sha3
125130 end
126131
127132 def test_fetched_evp_md
133+ # KECCAK-256 is not FIPS-approved.
134+ omit_on_fips
135+
128136 # Pre-NIST Keccak is an example of a digest algorithm that doesn't have an
129137 # NID and requires dynamic allocation of EVP_MD
130138 hex = "c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
0 commit comments