local testimony = require("testimony") local litls = require("litls.core") local hex = litls.hex_encode local testify = testimony.new("== LITLS SHA-2 ==") -- SHA-256 NIST FIPS 180-4 test vectors testify:that("SHA-256 empty string", function() testimony.assert_equal("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", hex(litls.sha256(""))) end) testify:that("SHA-256 'abc'", function() testimony.assert_equal("ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad", hex(litls.sha256("abc"))) end) testify:that("SHA-256 448-bit message", function() testimony.assert_equal( "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1", hex(litls.sha256("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq")) ) end) testify:that("SHA-256 896-bit message", function() testimony.assert_equal( "cf5b16a778af8380036ce59e7b0492370b249b11e8f07a51afac45037afee9d1", hex( litls.sha256( "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu" ) ) ) end) -- SHA-512 NIST FIPS 180-4 test vectors testify:that("SHA-512 empty string", function() testimony.assert_equal( "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e", hex(litls.sha512("")) ) end) testify:that("SHA-512 'abc'", function() testimony.assert_equal( "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f", hex(litls.sha512("abc")) ) end) testify:that("SHA-512 896-bit message", function() testimony.assert_equal( "8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909", hex( litls.sha512( "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu" ) ) ) end) -- SHA-384 NIST FIPS 180-4 test vectors testify:that("SHA-384 empty string", function() testimony.assert_equal( "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b", hex(litls.sha384("")) ) end) testify:that("SHA-384 'abc'", function() testimony.assert_equal( "cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7", hex(litls.sha384("abc")) ) end) testify:that("SHA-384 896-bit message", function() testimony.assert_equal( "09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039", hex( litls.sha384( "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu" ) ) ) end) testify:conclude()