18 lines
776 B
TypeScript
18 lines
776 B
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { bytesToHex, parseHex } from '../src/lib/bytes'
|
|
import { aes128Cmac } from '../src/lib/cmac'
|
|
|
|
describe('AES-128-CMAC RFC 4493 vectors', () => {
|
|
const key = parseHex('2B7E151628AED2A6ABF7158809CF4F3C')
|
|
const vectors = [
|
|
['', 'BB1D6929E95937287FA37D129B756746'],
|
|
['6BC1BEE22E409F96E93D7E117393172A', '070A16B46B4D4144F79BDD9DD04A287C'],
|
|
['6BC1BEE22E409F96E93D7E117393172AAE2D8A57', '7D85449EA6EA19C823A7BF78837DFADE'],
|
|
['6BC1BEE22E409F96E93D7E117393172AAE2D8A571E03AC9C9EB76FAC45AF8E5130C81C46A35CE411', 'DFA66747DE9AE63030CA32611497C827'],
|
|
]
|
|
|
|
it.each(vectors)('matches the expected tag', (message, expected) => {
|
|
expect(bytesToHex(aes128Cmac(key, parseHex(message)), '')).toBe(expected)
|
|
})
|
|
})
|