1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
require "../spec_helper"
require "./spec_helper"
require "digest/sha512"
describe Digest::SHA512 do
it_acts_as_digest_algorithm Digest::SHA512
[
{"", "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e", "z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg=="},
{"The quick brown fox jumps over the lazy dog", "07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6", "B+VH2VhvanP3P7rAQ17XaVEhj7fQyNeIownXhUNru2Quk6JSqVTyORJUfR6KO17W4b/XCXghIz+gU489uFT+5g=="},
{"abc", "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f", "3a81oZNherrMQXNJriBBMRLm+k6JqX6iCp7u5ktV05ohkpkqJ0/BqDa6PCOj/uu9RU1EI2Q86A4qmslPpUyknw=="},
{"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", "204a8fc6dda82f0a0ced7beb8e08a41657c16ef468b228a8279be331a703c33596fd15c13b1b07f9aa1d3bea57789ca031ad85c7a71dd70354ec631238ca3445", "IEqPxt2oLwoM7XvrjgikFlfBbvRosiioJ5vjMacDwzWW/RXBOxsH+aodO+pXeJygMa2Fx6cd1wNU7GMSOMo0RQ=="},
{"a", "1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75", "H0D8ktokFpR1CXnubPWC8tXX0o4YM13gWrxU0FYOD1MChgxlK/CNVgJSql50IQVG82n7u86MEs/HlXsmUv6adQ=="},
{"0123456701234567012345670123456701234567012345670123456701234567", "846e0ef73436438a4acb0ba7078cfe381f10a0f5edebcb985b3790086ef5e7ac5992ac9c23c77761c764bb3b1c25702d06b99955eb197d45b82fb3d124699d78", "hG4O9zQ2Q4pKywunB4z+OB8QoPXt68uYWzeQCG7156xZkqycI8d3YcdkuzscJXAtBrmZVesZfUW4L7PRJGmdeA=="},
{"fooø", "082907b85fe25c33bba4765185b52993a493cfd24454edf4b977ccd9301a890659c52592456cbd8aeb5215055d9dd4a7d50a4db9961715fb764fb6c393a83192", "CCkHuF/iXDO7pHZRhbUpk6STz9JEVO30uXfM2TAaiQZZxSWSRWy9iutSFQVdndSn1QpNuZYXFft2T7bDk6gxkg=="},
].each do |(string, hexstring, base64digest)|
it "does digest for #{string.inspect}" do
bytes = Digest::SHA512.digest(string)
bytes.hexstring.should eq(hexstring)
end
it "resets" do
digest = Digest::SHA512.new
digest.update string
digest.final.hexstring.should eq(hexstring)
digest.reset
digest.update string
digest.final.hexstring.should eq(hexstring)
end
it "can't call #final more than once" do
digest = Digest::SHA512.new
digest.final
expect_raises(Digest::FinalizedError) do
digest.final
end
end
it "does digest for #{string.inspect} in a block" do
bytes = Digest::SHA512.digest do |ctx|
string.each_char do |chr|
ctx.update chr.to_s
end
end
bytes.hexstring.should eq(hexstring)
end
it "does .hexdigest for #{string.inspect}" do
Digest::SHA512.hexdigest(string).should eq(hexstring)
end
it "does #hexdigest for #{string.inspect}" do
digest = Digest::SHA512.new
hdst = Bytes.new digest.digest_size * 2
digest.update string
digest.dup.hexfinal.should eq(hexstring)
digest.hexfinal(hdst)
String.new(hdst).should eq(hexstring)
expect_raises(Digest::FinalizedError) do
digest.final
end
end
it "does base64digest for #{string.inspect}" do
Digest::SHA512.base64digest(string).should eq(base64digest)
end
end
it "returns the digest_size" do
Digest::SHA512.new.digest_size.should eq(64)
end
end
|