Lines Matching +full:1 +full:- +full:v0
2 * Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
14 Copyright (c) 2012-2016 Jean-Philippe Aumasson
15 Copyright (c) 2012-2014 Daniel J. Bernstein
32 #define ROTL(x, b) (uint64_t)(((x) << (b)) | ((x) >> (64 - (b))))
36 (p)[1] = (uint8_t)((v) >> 8); \
45 (((uint64_t)((p)[0])) | ((uint64_t)((p)[1]) << 8) | \
52 v0 += v1; \
54 v1 ^= v0; \
55 v0 = ROTL(v0, 32); \
59 v0 += v3; \
61 v3 ^= v0; \
75 return ctx->hash_size; in SipHash_hash_size()
98 ctx->hash_size = siphash_adjust_hash_size(ctx->hash_size); in SipHash_set_hash_size()
100 /* Now, adjust ctx->v1 if the old and the new size differ */ in SipHash_set_hash_size()
101 if ((size_t)ctx->hash_size != hash_size) { in SipHash_set_hash_size()
102 ctx->v1 ^= 0xee; in SipHash_set_hash_size()
103 ctx->hash_size = hash_size; in SipHash_set_hash_size()
105 return 1; in SipHash_set_hash_size()
108 /* hash_size = crounds = drounds = 0 means SipHash24 with 16-byte output */
115 ctx->hash_size = siphash_adjust_hash_size(ctx->hash_size); in SipHash_Init()
122 ctx->crounds = crounds; in SipHash_Init()
123 ctx->drounds = drounds; in SipHash_Init()
125 ctx->len = 0; in SipHash_Init()
126 ctx->total_inlen = 0; in SipHash_Init()
128 ctx->v0 = 0x736f6d6570736575ULL ^ k0; in SipHash_Init()
129 ctx->v1 = 0x646f72616e646f6dULL ^ k1; in SipHash_Init()
130 ctx->v2 = 0x6c7967656e657261ULL ^ k0; in SipHash_Init()
131 ctx->v3 = 0x7465646279746573ULL ^ k1; in SipHash_Init()
133 if (ctx->hash_size == SIPHASH_MAX_DIGEST_SIZE) in SipHash_Init()
134 ctx->v1 ^= 0xee; in SipHash_Init()
136 return 1; in SipHash_Init()
145 uint64_t v0 = ctx->v0; in SipHash_Update() local
146 uint64_t v1 = ctx->v1; in SipHash_Update()
147 uint64_t v2 = ctx->v2; in SipHash_Update()
148 uint64_t v3 = ctx->v3; in SipHash_Update()
150 ctx->total_inlen += inlen; in SipHash_Update()
152 if (ctx->len) { in SipHash_Update()
154 size_t available = SIPHASH_BLOCK_SIZE - ctx->len; in SipHash_Update()
158 memcpy(&ctx->leavings[ctx->len], in, inlen); in SipHash_Update()
159 ctx->len += inlen; in SipHash_Update()
164 memcpy(&ctx->leavings[ctx->len], in, available); in SipHash_Update()
165 inlen -= available; in SipHash_Update()
169 m = U8TO64_LE(ctx->leavings); in SipHash_Update()
171 for (i = 0; i < ctx->crounds; ++i) in SipHash_Update()
173 v0 ^= m; in SipHash_Update()
175 left = inlen & (SIPHASH_BLOCK_SIZE-1); /* gets put into leavings */ in SipHash_Update()
176 end = in + inlen - left; in SipHash_Update()
181 for (i = 0; i < ctx->crounds; ++i) in SipHash_Update()
183 v0 ^= m; in SipHash_Update()
188 memcpy(ctx->leavings, end, left); in SipHash_Update()
189 ctx->len = left; in SipHash_Update()
191 ctx->v0 = v0; in SipHash_Update()
192 ctx->v1 = v1; in SipHash_Update()
193 ctx->v2 = v2; in SipHash_Update()
194 ctx->v3 = v3; in SipHash_Update()
201 uint64_t b = ctx->total_inlen << 56; in SipHash_Final()
202 uint64_t v0 = ctx->v0; in SipHash_Final() local
203 uint64_t v1 = ctx->v1; in SipHash_Final()
204 uint64_t v2 = ctx->v2; in SipHash_Final()
205 uint64_t v3 = ctx->v3; in SipHash_Final()
207 if (ctx->crounds == 0 || outlen == 0 || outlen != (size_t)ctx->hash_size) in SipHash_Final()
210 switch (ctx->len) { in SipHash_Final()
212 b |= ((uint64_t)ctx->leavings[6]) << 48; in SipHash_Final()
215 b |= ((uint64_t)ctx->leavings[5]) << 40; in SipHash_Final()
218 b |= ((uint64_t)ctx->leavings[4]) << 32; in SipHash_Final()
221 b |= ((uint64_t)ctx->leavings[3]) << 24; in SipHash_Final()
224 b |= ((uint64_t)ctx->leavings[2]) << 16; in SipHash_Final()
227 b |= ((uint64_t)ctx->leavings[1]) << 8; in SipHash_Final()
229 case 1: in SipHash_Final()
230 b |= ((uint64_t)ctx->leavings[0]); in SipHash_Final()
236 for (i = 0; i < ctx->crounds; ++i) in SipHash_Final()
238 v0 ^= b; in SipHash_Final()
239 if (ctx->hash_size == SIPHASH_MAX_DIGEST_SIZE) in SipHash_Final()
243 for (i = 0; i < ctx->drounds; ++i) in SipHash_Final()
245 b = v0 ^ v1 ^ v2 ^ v3; in SipHash_Final()
247 if (ctx->hash_size == SIPHASH_MIN_DIGEST_SIZE) in SipHash_Final()
248 return 1; in SipHash_Final()
250 for (i = 0; i < ctx->drounds; ++i) in SipHash_Final()
252 b = v0 ^ v1 ^ v2 ^ v3; in SipHash_Final()
254 return 1; in SipHash_Final()