Lines Matching refs:S
54 static void blake2b_set_lastnode( blake2b_state *S ) in blake2b_set_lastnode() argument
56 S->f[1] = (uint64_t)-1; in blake2b_set_lastnode()
60 static int blake2b_is_lastblock( const blake2b_state *S ) in blake2b_is_lastblock() argument
62 return S->f[0] != 0; in blake2b_is_lastblock()
65 static void blake2b_set_lastblock( blake2b_state *S ) in blake2b_set_lastblock() argument
67 if( S->last_node ) blake2b_set_lastnode( S ); in blake2b_set_lastblock()
69 S->f[0] = (uint64_t)-1; in blake2b_set_lastblock()
72 static void blake2b_increment_counter( blake2b_state *S, const uint64_t inc ) in blake2b_increment_counter() argument
74 S->t[0] += inc; in blake2b_increment_counter()
75 S->t[1] += ( S->t[0] < inc ); in blake2b_increment_counter()
78 static void blake2b_init0( blake2b_state *S ) in blake2b_init0() argument
81 memset( S, 0, sizeof( blake2b_state ) ); in blake2b_init0()
83 for( i = 0; i < 8; ++i ) S->h[i] = blake2b_IV[i]; in blake2b_init0()
87 int blake2b_init_param( blake2b_state *S, const blake2b_param *P ) in blake2b_init_param() argument
92 blake2b_init0( S ); in blake2b_init_param()
96 S->h[i] ^= load64( p + sizeof( S->h[i] ) * i ); in blake2b_init_param()
98 S->outlen = P->digest_length; in blake2b_init_param()
102 int blake2b_init( blake2b_state *S, size_t outlen ) in blake2b_init() argument
120 return blake2b_init_param( S, P ); in blake2b_init()
123 int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen ) in blake2b_init_key() argument
144 if( blake2b_init_param( S, P ) < 0 ) return -1; in blake2b_init_key()
150 blake2b_update( S, block, BLAKE2B_BLOCKBYTES ); in blake2b_init_key()
180 static void blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] ) in blake2b_compress() argument
191 v[i] = S->h[i]; in blake2b_compress()
198 v[12] = blake2b_IV[4] ^ S->t[0]; in blake2b_compress()
199 v[13] = blake2b_IV[5] ^ S->t[1]; in blake2b_compress()
200 v[14] = blake2b_IV[6] ^ S->f[0]; in blake2b_compress()
201 v[15] = blake2b_IV[7] ^ S->f[1]; in blake2b_compress()
217 S->h[i] = S->h[i] ^ v[i] ^ v[i + 8]; in blake2b_compress()
224 int blake2b_update( blake2b_state *S, const void *pin, size_t inlen ) in blake2b_update() argument
229 size_t left = S->buflen; in blake2b_update()
233 S->buflen = 0; in blake2b_update()
234 memcpy( S->buf + left, in, fill ); /* Fill buffer */ in blake2b_update()
235 blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES ); in blake2b_update()
236 blake2b_compress( S, S->buf ); /* Compress */ in blake2b_update()
239 blake2b_increment_counter(S, BLAKE2B_BLOCKBYTES); in blake2b_update()
240 blake2b_compress( S, in ); in blake2b_update()
245 memcpy( S->buf + S->buflen, in, inlen ); in blake2b_update()
246 S->buflen += inlen; in blake2b_update()
251 int blake2b_final( blake2b_state *S, void *out, size_t outlen ) in blake2b_final() argument
256 if( out == NULL || outlen < S->outlen ) in blake2b_final()
259 if( blake2b_is_lastblock( S ) ) in blake2b_final()
262 blake2b_increment_counter( S, S->buflen ); in blake2b_final()
263 blake2b_set_lastblock( S ); in blake2b_final()
264 memset( S->buf + S->buflen, 0, BLAKE2B_BLOCKBYTES - S->buflen ); /* Padding */ in blake2b_final()
265 blake2b_compress( S, S->buf ); in blake2b_final()
268 store64( buffer + sizeof( S->h[i] ) * i, S->h[i] ); in blake2b_final()
270 memcpy( out, buffer, S->outlen ); in blake2b_final()
278 blake2b_state S[1]; in blake2b() local
293 if( blake2b_init_key( S, outlen, key, keylen ) < 0 ) return -1; in blake2b()
297 if( blake2b_init( S, outlen ) < 0 ) return -1; in blake2b()
300 blake2b_update( S, ( const uint8_t * )in, inlen ); in blake2b()
301 blake2b_final( S, out, outlen ); in blake2b()