iPXE
hmac_test.h
Go to the documentation of this file.
1#ifndef _HMAC_TEST_H
2#define _HMAC_TEST_H
3
4/** @file
5 *
6 * HMAC self-tests
7 *
8 */
9
10FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
11
12#include <stdint.h>
13#include <ipxe/crypto.h>
14#include <ipxe/test.h>
15
16/** Define inline key data */
17#define KEY(...) { __VA_ARGS__ }
18
19/** Define inline data */
20#define DATA(...) { __VA_ARGS__ }
21
22/** Define inline expected HMAC */
23#define EXPECTED(...) { __VA_ARGS__ }
24
25/** An HMAC test */
26struct hmac_test {
27 /** Digest algorithm */
29 /** Key */
30 const void *key;
31 /** Length of key */
32 size_t key_len;
33 /** Data */
34 const void *data;
35 /** Length of data */
36 size_t data_len;
37 /** Expected HMAC */
38 const void *expected;
39 /** Length of expected HMAC */
41};
42
43/**
44 * Define an HMAC test
45 *
46 * @v name Test name
47 * @v DIGEST Digest algorithm
48 * @v KEY Key
49 * @v DATA Data
50 * @v EXPECTED Expected HMAC
51 * @ret test HMAC test
52 */
53#define HMAC_TEST( name, DIGEST, KEY, DATA, EXPECTED ) \
54 static const uint8_t name ## _key[] = KEY; \
55 static const uint8_t name ## _data[] = DATA; \
56 static const uint8_t name ## _expected[] = EXPECTED; \
57 static struct hmac_test name = { \
58 .digest = DIGEST, \
59 .key = name ## _key, \
60 .key_len = sizeof ( name ## _key ), \
61 .data = name ## _data, \
62 .data_len = sizeof ( name ## _data ), \
63 .expected = name ## _expected, \
64 .expected_len = sizeof ( name ## _expected ), \
65 }
66
67extern void hmac_okx ( struct hmac_test *test, const char *file,
68 unsigned int line );
69
70/**
71 * Report an HMAC test result
72 *
73 * @v test HMAC test
74 */
75#define hmac_ok( test ) hmac_okx ( test, __FILE__, __LINE__ )
76
77#endif /* _HMAC_TEST_H */
static int test
Definition epic100.c:73
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition compiler.h:921
void hmac_okx(struct hmac_test *test, const char *file, unsigned int line)
Report an HMAC test result.
Definition hmac_test.c:50
Cryptographic API.
A message digest algorithm.
Definition crypto.h:19
An HMAC test.
Definition hmac_test.h:26
const void * key
Key.
Definition hmac_test.h:30
size_t expected_len
Length of expected HMAC.
Definition hmac_test.h:40
size_t data_len
Length of data.
Definition hmac_test.h:36
size_t key_len
Length of key.
Definition hmac_test.h:32
const void * expected
Expected HMAC.
Definition hmac_test.h:38
struct digest_algorithm * digest
Digest algorithm.
Definition hmac_test.h:28
const void * data
Data.
Definition hmac_test.h:34
Self-test infrastructure.