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/Sha3512Test.lvt
namespace Livt.Crypto.Tests.Hash
using Livt.Crypto.Hash
// Tests for Sha3512 (NIST FIPS 202).
@Test component Sha3512Test
{
sha: Sha3512
new()
{
this.sha = new Sha3512()
}
// NIST FIPS 202 test vector: SHA3-512("") (empty message).
// Expected:
// a6 9f 73 cc a2 3a 9a c5 c8 b5 67 dc 18 5a 75 6e
// 97 c9 82 16 4f e2 58 59 e0 d1 dc c1 47 5c 80 a6
// 15 b2 12 3a f1 f5 f9 4c 11 e3 e9 40 2c 3a c5 58
// f5 00 19 9d 95 b6 d3 e3 01 75 85 86 28 1d cd 26
@Test fn TestEmptyMessage()
{
this.sha.Reset()
var emptyBlock: byte[72]
this.sha.Finalize(emptyBlock, 0)
var digest: byte[64] = this.sha.GetDigest()
assert digest[0] == 0xa6
assert digest[1] == 0x9f
assert digest[2] == 0x73
assert digest[3] == 0xcc
assert digest[4] == 0xa2
assert digest[5] == 0x3a
assert digest[6] == 0x9a
assert digest[7] == 0xc5
assert digest[8] == 0xc8
assert digest[9] == 0xb5
assert digest[10] == 0x67
assert digest[11] == 0xdc
assert digest[12] == 0x18
assert digest[13] == 0x5a
assert digest[14] == 0x75
assert digest[15] == 0x6e
assert digest[16] == 0x97
assert digest[17] == 0xc9
assert digest[18] == 0x82
assert digest[19] == 0x16
assert digest[20] == 0x4f
assert digest[21] == 0xe2
assert digest[22] == 0x58
assert digest[23] == 0x59
assert digest[24] == 0xe0
assert digest[25] == 0xd1
assert digest[26] == 0xdc
assert digest[27] == 0xc1
assert digest[28] == 0x47
assert digest[29] == 0x5c
assert digest[30] == 0x80
assert digest[31] == 0xa6
assert digest[32] == 0x15
assert digest[33] == 0xb2
assert digest[34] == 0x12
assert digest[35] == 0x3a
assert digest[36] == 0xf1
assert digest[37] == 0xf5
assert digest[38] == 0xf9
assert digest[39] == 0x4c
assert digest[40] == 0x11
assert digest[41] == 0xe3
assert digest[42] == 0xe9
assert digest[43] == 0x40
assert digest[44] == 0x2c
assert digest[45] == 0x3a
assert digest[46] == 0xc5
assert digest[47] == 0x58
assert digest[48] == 0xf5
assert digest[49] == 0x00
assert digest[50] == 0x19
assert digest[51] == 0x9d
assert digest[52] == 0x95
assert digest[53] == 0xb6
assert digest[54] == 0xd3
assert digest[55] == 0xe3
assert digest[56] == 0x01
assert digest[57] == 0x75
assert digest[58] == 0x85
assert digest[59] == 0x86
assert digest[60] == 0x28
assert digest[61] == 0x1d
assert digest[62] == 0xcd
assert digest[63] == 0x26
}
// NIST FIPS 202 test vector: SHA3-512("abc").
// Expected:
// b7 51 85 0b 1a 57 16 8a 56 93 cd 92 4b 6b 09 6e
// 08 f6 21 82 74 44 f7 0d 88 4f 5d 02 40 d2 71 2e
// 10 e1 16 e9 19 2a f3 c9 1a 7e c5 76 47 e3 93 40
// 57 34 0b 4c f4 08 d5 a5 65 92 f8 27 4e ec 53 f0
@Test fn TestAbcMessage()
{
this.sha.Reset()
var lastBlock: byte[72]
lastBlock[0] = 0x61
lastBlock[1] = 0x62
lastBlock[2] = 0x63
this.sha.Finalize(lastBlock, 3)
var digest: byte[64] = this.sha.GetDigest()
assert digest[0] == 0xb7
assert digest[1] == 0x51
assert digest[2] == 0x85
assert digest[3] == 0x0b
assert digest[4] == 0x1a
assert digest[5] == 0x57
assert digest[6] == 0x16
assert digest[7] == 0x8a
assert digest[8] == 0x56
assert digest[9] == 0x93
assert digest[10] == 0xcd
assert digest[11] == 0x92
assert digest[12] == 0x4b
assert digest[13] == 0x6b
assert digest[14] == 0x09
assert digest[15] == 0x6e
assert digest[16] == 0x08
assert digest[17] == 0xf6
assert digest[18] == 0x21
assert digest[19] == 0x82
assert digest[20] == 0x74
assert digest[21] == 0x44
assert digest[22] == 0xf7
assert digest[23] == 0x0d
assert digest[24] == 0x88
assert digest[25] == 0x4f
assert digest[26] == 0x5d
assert digest[27] == 0x02
assert digest[28] == 0x40
assert digest[29] == 0xd2
assert digest[30] == 0x71
assert digest[31] == 0x2e
assert digest[32] == 0x10
assert digest[33] == 0xe1
assert digest[34] == 0x16
assert digest[35] == 0xe9
assert digest[36] == 0x19
assert digest[37] == 0x2a
assert digest[38] == 0xf3
assert digest[39] == 0xc9
assert digest[40] == 0x1a
assert digest[41] == 0x7e
assert digest[42] == 0xc5
assert digest[43] == 0x76
assert digest[44] == 0x47
assert digest[45] == 0xe3
assert digest[46] == 0x93
assert digest[47] == 0x40
assert digest[48] == 0x57
assert digest[49] == 0x34
assert digest[50] == 0x0b
assert digest[51] == 0x4c
assert digest[52] == 0xf4
assert digest[53] == 0x08
assert digest[54] == 0xd5
assert digest[55] == 0xa5
assert digest[56] == 0x65
assert digest[57] == 0x92
assert digest[58] == 0xf8
assert digest[59] == 0x27
assert digest[60] == 0x4e
assert digest[61] == 0xec
assert digest[62] == 0x53
assert digest[63] == 0xf0
}
}