root/tests/sys/geom/class/eli/hmac_test.c
/*
 */

#include <sys/param.h>
#include <atf-c.h>

#include <geom/eli/pkcs5v2.h>

const struct {
        char    *salt;
        size_t  saltlen;
        char    *passwd;
        int     iterations;
        char    *hmacout;
        size_t  hmaclen;
} testdata[] = {
#include "testvect.h"
};

ATF_TC_WITHOUT_HEAD(hmactest);
ATF_TC_BODY(hmactest, tc)
{
        size_t i;
        uint8_t hmacout[64];

        for (i = 0; i < nitems(testdata); i++) {
                pkcs5v2_genkey(hmacout, testdata[i].hmaclen,
                    (uint8_t *)testdata[i].salt, testdata[i].saltlen,
                    testdata[i].passwd, testdata[i].iterations);
                ATF_REQUIRE(bcmp(hmacout, testdata[i].hmacout,
                    testdata[i].hmaclen) == 0);
        }
}

ATF_TP_ADD_TCS(tp)
{
        ATF_TP_ADD_TC(tp, hmactest);

        return (atf_no_error());
}