siphash
ret = SipHash_Init(&ctx->siphash, key, crounds(ctx), drounds(ctx));
ctx->sipcopy = ctx->siphash;
ctx->siphash = ctx->sipcopy;
SipHash_Update(&ctx->siphash, data, datalen);
return SipHash_Final(&ctx->siphash, out, hlen);
|| !SipHash_set_hash_size(&ctx->siphash, size)
SIPHASH siphash; /* Siphash data */
return SipHash_hash_size(&ctx->siphash);
MAC_SETTABLE_CTX_PARAMS(siphash, "SIPHASH")
MAC_SIGNATURE_FUNCTIONS(siphash)
MAC_NEWCTX(siphash, "SIPHASH")
SIPHASH siphash = {
if (!SipHash_set_hash_size(&siphash, SIPHASH_MIN_DIGEST_SIZE))
if (!SipHash_Init(&siphash, (uint8_t *)lcid_obj->hash_key, 0, 0))
SipHash_Update(&siphash, lcid_obj->cid.id, lcid_obj->cid.id_len);
if (!SipHash_Final(&siphash, digest, SIPHASH_MIN_DIGEST_SIZE))
SIPHASH siphash = {
if (!TEST_true(SipHash_set_hash_size(&siphash, expectedlen))
|| !TEST_true(SipHash_Init(&siphash, key, 0, 0)))
SipHash_Update(&siphash, in, inlen);
if (!TEST_true(SipHash_Final(&siphash, out, expectedlen))
if (!TEST_true(SipHash_set_hash_size(&siphash, expectedlen))
|| !TEST_true(SipHash_Init(&siphash, key, 0, 0)))
SipHash_Update(&siphash, in, 1);
SipHash_Update(&siphash, in + 1, inlen - 1);
if (!TEST_true(SipHash_Final(&siphash, out, expectedlen)))
if (!TEST_true(SipHash_set_hash_size(&siphash, expectedlen))
|| !TEST_true(SipHash_Init(&siphash, key, 0, 0)))
SipHash_Update(&siphash, in, half);
SipHash_Update(&siphash, in + half, inlen - half);
if (!TEST_true(SipHash_Final(&siphash, out, expectedlen)))
if (!TEST_true(SipHash_set_hash_size(&siphash, expectedlen))
|| !TEST_true(SipHash_Init(&siphash, key, 0, 0)))
SipHash_Update(&siphash, in, half);
SipHash_Update(&siphash, in + half, inlen - half);
if (!TEST_true(SipHash_Final(&siphash, out, expectedlen)))
SIPHASH siphash = {
return TEST_int_eq(SipHash_set_hash_size(&siphash, 4), 0)
&& TEST_false(SipHash_Final(&siphash, output, 0))
&& TEST_true(SipHash_set_hash_size(&siphash, 8))
&& TEST_false(SipHash_Final(&siphash, output, 8))
&& TEST_true(SipHash_Init(&siphash, key, 0, 0))
&& TEST_true(SipHash_Final(&siphash, output, 8))
&& TEST_int_eq(SipHash_Final(&siphash, output, 16), 0)
&& TEST_true(SipHash_set_hash_size(&siphash, 16))
&& TEST_true(SipHash_Init(&siphash, key, 0, 0))
&& TEST_int_eq(SipHash_Final(&siphash, output, 8), 0)
&& TEST_true(SipHash_Final(&siphash, output, 16))
&& TEST_true(SipHash_set_hash_size(&siphash, 0))
&& TEST_true(SipHash_Init(&siphash, key, 0, 0))
&& TEST_int_eq(SipHash_Final(&siphash, output, 8), 0)
&& TEST_true(SipHash_Final(&siphash, output, 16));
uint64_t siphash;
SipHash_Final((u_int8_t *)&siphash, &ctx);
return (siphash);
uint32_t siphash[2];
SipHash_Final((u_int8_t *)&siphash, &ctx);
return (siphash[0] ^ siphash[1]);
uint32_t siphash[2];
SipHash_Final((uint8_t *)&siphash, &ctx);
return (siphash[0] ^ siphash[1]);