1313962Sallanjude/*
2313962Sallanjude * $FreeBSD: stable/11/tests/sys/geom/class/eli/hmac_test.c 327856 2018-01-12 00:31:07Z asomers $
3313962Sallanjude */
4313962Sallanjude
5313962Sallanjude#include <sys/param.h>
6313962Sallanjude#include <atf-c.h>
7313962Sallanjude
8313962Sallanjude#include <geom/eli/pkcs5v2.h>
9313962Sallanjude
10313962Sallanjudeconst struct {
11313962Sallanjude	char	*salt;
12313962Sallanjude	size_t	saltlen;
13313962Sallanjude	char	*passwd;
14313962Sallanjude	int	iterations;
15313962Sallanjude	char	*hmacout;
16313962Sallanjude	size_t	hmaclen;
17313962Sallanjude} testdata[] = {
18313962Sallanjude#include "testvect.h"
19313962Sallanjude};
20313962Sallanjude
21313962SallanjudeATF_TC_WITHOUT_HEAD(hmactest);
22313962SallanjudeATF_TC_BODY(hmactest, tc)
23313962Sallanjude{
24313962Sallanjude	size_t i;
25313962Sallanjude	uint8_t hmacout[64];
26313962Sallanjude
27313962Sallanjude	for (i = 0; i < nitems(testdata); i++) {
28313962Sallanjude		pkcs5v2_genkey(hmacout, testdata[i].hmaclen,
29313962Sallanjude		    (uint8_t *)testdata[i].salt, testdata[i].saltlen,
30313962Sallanjude		    testdata[i].passwd, testdata[i].iterations);
31313962Sallanjude		ATF_REQUIRE(bcmp(hmacout, testdata[i].hmacout,
32313962Sallanjude		    testdata[i].hmaclen) == 0);
33313962Sallanjude	}
34313962Sallanjude}
35313962Sallanjude
36313962SallanjudeATF_TP_ADD_TCS(tp)
37313962Sallanjude{
38313962Sallanjude	ATF_TP_ADD_TC(tp, hmactest);
39313962Sallanjude
40313962Sallanjude	return (atf_no_error());
41313962Sallanjude}
42