diff --git a/spec/std/digest/md5_spec.cr b/spec/std/digest/md5_spec.cr index 136b36cf5eb9..2f6afb8f4e3f 100644 --- a/spec/std/digest/md5_spec.cr +++ b/spec/std/digest/md5_spec.cr @@ -10,6 +10,10 @@ describe Digest::MD5 do Digest::MD5.hexdigest("foo").should eq("acbd18db4cc2f85cedef654fccc4a4d8") end + it "calculates hash from unicode string" do + Digest::MD5.hexdigest("fooø").should eq("d841c4eb31535db11faab98d10316b29") + end + it "calculates hash from UInt8 slices" do s = Bytes[0x66, 0x6f, 0x6f] # f,o,o Digest::MD5.hexdigest(s).should eq("acbd18db4cc2f85cedef654fccc4a4d8") diff --git a/spec/std/digest/sha1_spec.cr b/spec/std/digest/sha1_spec.cr index 0b6df6d37edf..99a13e1548fe 100644 --- a/spec/std/digest/sha1_spec.cr +++ b/spec/std/digest/sha1_spec.cr @@ -9,6 +9,7 @@ describe Digest::SHA1 do {"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", "84983e441c3bd26ebaae4aa1f95129e5e54670f1", "hJg+RBw70m66rkqh+VEp5eVGcPE="}, {"a", "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8", "hvfkN/qlp/zhXR3cuerq6jd2Z7g="}, {"0123456701234567012345670123456701234567012345670123456701234567", "e0c094e867ef46c350ef54a7f59dd60bed92ae83", "4MCU6GfvRsNQ71Sn9Z3WC+2SroM="}, + {"fooø", "dcf4a1e3542b1a40a4ac2a3f7c92ffdb2d19812f", "3PSh41QrGkCkrCo/fJL/2y0ZgS8="}, ].each do |(string, hexdigest, base64digest)| it "does digest for #{string.inspect}" do bytes = Digest::SHA1.digest(string) diff --git a/spec/std/openssl/digest_spec.cr b/spec/std/openssl/digest_spec.cr index 5a9c94a1830c..d247e6aaa981 100644 --- a/spec/std/openssl/digest_spec.cr +++ b/spec/std/openssl/digest_spec.cr @@ -3,13 +3,13 @@ require "../../../src/openssl" describe OpenSSL::Digest do [ - {"SHA1", "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"}, - {"SHA256", "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"}, - {"SHA512", "f7fbba6e0636f890e56fbbf3283e524c6fa3204ae298382d624741d0dc6638326e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7"}, + {"SHA1", "dcf4a1e3542b1a40a4ac2a3f7c92ffdb2d19812f"}, + {"SHA256", "df81eea14671ce970fb1052e9f5dd6dbda652ed37423ed3624120ec1534784a7"}, + {"SHA512", "082907b85fe25c33bba4765185b52993a493cfd24454edf4b977ccd9301a890659c52592456cbd8aeb5215055d9dd4a7d50a4db9961715fb764fb6c393a83192"}, ].each do |(algorithm, expected)| it "should be able to calculate #{algorithm}" do digest = OpenSSL::Digest.new(algorithm) - digest << "foo" + digest << "fooø" digest.hexdigest.should eq(expected) end end diff --git a/src/openssl/digest/digest.cr b/src/openssl/digest/digest.cr index de063ecf95a3..c1cb2504c1b5 100644 --- a/src/openssl/digest/digest.cr +++ b/src/openssl/digest/digest.cr @@ -55,7 +55,7 @@ module OpenSSL end def update(data : String | Slice) - LibCrypto.evp_digestupdate(self, data, data.size) + LibCrypto.evp_digestupdate(self, data, data.bytesize) self end