Livt packages
Livt.Crypto
Version 1.0.5
Fixed-size cryptographic components for Livt, including AES, ChaCha20, SHA, MACs, and key derivation.
Published files (69)
tests/hash/Sha3256Test.lvt
namespace Livt.Crypto.Tests.Hash
using Livt.Crypto.Hash
// Tests for Sha3256 (NIST FIPS 202).
@Test component Sha3256Test
{
sha: Sha3256
new()
{
this.sha = new Sha3256()
}
// NIST FIPS 202 test vector: SHA3-256("") (empty message).
// Expected:
// a7 ff c6 f8 bf 1e d7 66 51 c1 47 56 a0 61 d6 62
// f5 80 ff 4d e4 3b 49 fa 82 d8 0a 4b 80 f8 43 4a
@Test fn TestEmptyMessage()
{
this.sha.Reset()
var emptyBlock: byte[136]
this.sha.Finalize(emptyBlock, 0)
var digest: byte[32] = this.sha.GetDigest()
assert digest[0] == 0xa7
assert digest[1] == 0xff
assert digest[2] == 0xc6
assert digest[3] == 0xf8
assert digest[4] == 0xbf
assert digest[5] == 0x1e
assert digest[6] == 0xd7
assert digest[7] == 0x66
assert digest[8] == 0x51
assert digest[9] == 0xc1
assert digest[10] == 0x47
assert digest[11] == 0x56
assert digest[12] == 0xa0
assert digest[13] == 0x61
assert digest[14] == 0xd6
assert digest[15] == 0x62
assert digest[16] == 0xf5
assert digest[17] == 0x80
assert digest[18] == 0xff
assert digest[19] == 0x4d
assert digest[20] == 0xe4
assert digest[21] == 0x3b
assert digest[22] == 0x49
assert digest[23] == 0xfa
assert digest[24] == 0x82
assert digest[25] == 0xd8
assert digest[26] == 0x0a
assert digest[27] == 0x4b
assert digest[28] == 0x80
assert digest[29] == 0xf8
assert digest[30] == 0x43
assert digest[31] == 0x4a
}
// NIST FIPS 202 test vector: SHA3-256("abc").
// Expected:
// 3a 98 5d a7 4f e2 25 b2 04 5c 17 2d 6b d3 90 bd
// 85 5f 08 6e 3e 9d 52 5b 46 bf e2 45 11 43 15 32
@Test fn TestAbcMessage()
{
this.sha.Reset()
var lastBlock: byte[136]
lastBlock[0] = 0x61
lastBlock[1] = 0x62
lastBlock[2] = 0x63
this.sha.Finalize(lastBlock, 3)
var digest: byte[32] = this.sha.GetDigest()
assert digest[0] == 0x3a
assert digest[1] == 0x98
assert digest[2] == 0x5d
assert digest[3] == 0xa7
assert digest[4] == 0x4f
assert digest[5] == 0xe2
assert digest[6] == 0x25
assert digest[7] == 0xb2
assert digest[8] == 0x04
assert digest[9] == 0x5c
assert digest[10] == 0x17
assert digest[11] == 0x2d
assert digest[12] == 0x6b
assert digest[13] == 0xd3
assert digest[14] == 0x90
assert digest[15] == 0xbd
assert digest[16] == 0x85
assert digest[17] == 0x5f
assert digest[18] == 0x08
assert digest[19] == 0x6e
assert digest[20] == 0x3e
assert digest[21] == 0x9d
assert digest[22] == 0x52
assert digest[23] == 0x5b
assert digest[24] == 0x46
assert digest[25] == 0xbf
assert digest[26] == 0xe2
assert digest[27] == 0x45
assert digest[28] == 0x11
assert digest[29] == 0x43
assert digest[30] == 0x15
assert digest[31] == 0x32
}
}