Skip to content

Commit 6a0a3d6

Browse files
junarugamatzbot
authored andcommitted
[ruby/openssl] Fix test_digest.rb in FIPS.
ruby/openssl@27a9a92309
1 parent b722d37 commit 6a0a3d6

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

test/openssl/test_digest.rb

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
class 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

Comments
 (0)