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/aes/AesCmac192Test.lvt
namespace Livt.Crypto.Tests.Aes
using Livt.Crypto.Aes
// Tests for Cmac192 — NIST SP 800-38B vectors.
// Key: 8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b
@Test
component AesCmac192Test
{
cmac: Cmac192
new()
{
this.cmac = new Cmac192()
}
// -----------------------------------------------------------------------
// NIST SP 800-38B, AES-192, zero-length message.
// Input: (empty)
// Padded: 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
// Tag: d17ddf46adaacde531cac483de7a9367
// -----------------------------------------------------------------------
@Test
fn TestNistEmptyMessage()
{
var key: byte[24] = [
0x8e, 0x73, 0xb0, 0xf7, 0xda, 0x0e, 0x64, 0x52,
0xc8, 0x10, 0xf3, 0x2b, 0x80, 0x90, 0x79, 0xe5,
0x62, 0xf8, 0xea, 0xd2, 0x52, 0x2c, 0x6b, 0x7b]
var padded: byte[16] = [
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
this.cmac.SetKey(key)
this.cmac.Reset()
this.cmac.FinalizePaddedBlock(padded)
var tag: byte[16] = this.cmac.GetTag()
assert tag[0] == 0xd1
assert tag[1] == 0x7d
assert tag[2] == 0xdf
assert tag[3] == 0x46
assert tag[4] == 0xad
assert tag[5] == 0xaa
assert tag[6] == 0xcd
assert tag[7] == 0xe5
assert tag[8] == 0x31
assert tag[9] == 0xca
assert tag[10] == 0xc4
assert tag[11] == 0x83
assert tag[12] == 0xde
assert tag[13] == 0x7a
assert tag[14] == 0x93
assert tag[15] == 0x67
}
// -----------------------------------------------------------------------
// NIST SP 800-38B, AES-192, one-block message.
// Message: 6bc1bee22e409f96e93d7e117393172a
// Tag: 9e99a7bf31e710900662f65e617c5184
// -----------------------------------------------------------------------
@Test
fn TestNistOneBlock()
{
var key: byte[24] = [
0x8e, 0x73, 0xb0, 0xf7, 0xda, 0x0e, 0x64, 0x52,
0xc8, 0x10, 0xf3, 0x2b, 0x80, 0x90, 0x79, 0xe5,
0x62, 0xf8, 0xea, 0xd2, 0x52, 0x2c, 0x6b, 0x7b]
var msg: byte[16] = [
0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96,
0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a]
this.cmac.SetKey(key)
this.cmac.Reset()
this.cmac.FinalizeBlock(msg)
var tag: byte[16] = this.cmac.GetTag()
assert tag[0] == 0x9e
assert tag[1] == 0x99
assert tag[2] == 0xa7
assert tag[3] == 0xbf
assert tag[4] == 0x31
assert tag[5] == 0xe7
assert tag[6] == 0x10
assert tag[7] == 0x90
assert tag[8] == 0x06
assert tag[9] == 0x62
assert tag[10] == 0xf6
assert tag[11] == 0x5e
assert tag[12] == 0x61
assert tag[13] == 0x7c
assert tag[14] == 0x51
assert tag[15] == 0x84
}
// -----------------------------------------------------------------------
// Determinism: same key + message → identical tags on two consecutive runs.
// -----------------------------------------------------------------------
@Test
fn TestDeterminism()
{
var key: byte[24] = [
0x8e, 0x73, 0xb0, 0xf7, 0xda, 0x0e, 0x64, 0x52,
0xc8, 0x10, 0xf3, 0x2b, 0x80, 0x90, 0x79, 0xe5,
0x62, 0xf8, 0xea, 0xd2, 0x52, 0x2c, 0x6b, 0x7b]
var msg: byte[16] = [
0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96,
0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a]
this.cmac.SetKey(key)
// First run.
this.cmac.Reset()
this.cmac.FinalizeBlock(msg)
var tag1: byte[16] = this.cmac.GetTag()
var t0: byte = tag1[0]
var t1: byte = tag1[1]
var t2: byte = tag1[2]
var t3: byte = tag1[3]
var t4: byte = tag1[4]
var t5: byte = tag1[5]
var t6: byte = tag1[6]
var t7: byte = tag1[7]
var t8: byte = tag1[8]
var t9: byte = tag1[9]
var t10: byte = tag1[10]
var t11: byte = tag1[11]
var t12: byte = tag1[12]
var t13: byte = tag1[13]
var t14: byte = tag1[14]
var t15: byte = tag1[15]
// Second run.
this.cmac.Reset()
this.cmac.FinalizeBlock(msg)
var tag2: byte[16] = this.cmac.GetTag()
assert tag2[0] == t0
assert tag2[1] == t1
assert tag2[2] == t2
assert tag2[3] == t3
assert tag2[4] == t4
assert tag2[5] == t5
assert tag2[6] == t6
assert tag2[7] == t7
assert tag2[8] == t8
assert tag2[9] == t9
assert tag2[10] == t10
assert tag2[11] == t11
assert tag2[12] == t12
assert tag2[13] == t13
assert tag2[14] == t14
assert tag2[15] == t15
}
}