Lines Matching refs:S
46 static inline int blake2b_set_lastnode( blake2b_state *S ) in blake2b_set_lastnode() argument
48 S->f[1] = ~0ULL; in blake2b_set_lastnode()
52 static inline int blake2b_clear_lastnode( blake2b_state *S ) in blake2b_clear_lastnode() argument
54 S->f[1] = 0ULL; in blake2b_clear_lastnode()
59 static inline int blake2b_set_lastblock( blake2b_state *S ) in blake2b_set_lastblock() argument
61 if( S->last_node ) blake2b_set_lastnode( S ); in blake2b_set_lastblock()
63 S->f[0] = ~0ULL; in blake2b_set_lastblock()
67 static inline int blake2b_clear_lastblock( blake2b_state *S ) in blake2b_clear_lastblock() argument
69 if( S->last_node ) blake2b_clear_lastnode( S ); in blake2b_clear_lastblock()
71 S->f[0] = 0ULL; in blake2b_clear_lastblock()
75 static inline int blake2b_increment_counter( blake2b_state *S, const uint64_t inc ) in blake2b_increment_counter() argument
77 S->t[0] += inc; in blake2b_increment_counter()
78 S->t[1] += ( S->t[0] < inc ); in blake2b_increment_counter()
139 static inline int blake2b_init0( blake2b_state *S ) in blake2b_init0() argument
141 memset( S, 0, sizeof( blake2b_state ) ); in blake2b_init0()
143 for( int i = 0; i < 8; ++i ) S->h[i] = blake2b_IV[i]; in blake2b_init0()
158 int blake2b_init( blake2b_state *S, size_t outlen );
159 int blake2b_init_param( blake2b_state *S, const blake2b_param *P );
160 int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen );
161 int blake2b_update( blake2b_state *S, const uint8_t *in, size_t inlen );
162 int blake2b_final( blake2b_state *S, uint8_t *out, size_t outlen );
169 int blake2b_init_param( blake2b_state *S, const blake2b_param *P ) in blake2b_init_param() argument
171 blake2b_init0( S ); in blake2b_init_param()
176 S->h[i] ^= load64( p + sizeof( S->h[i] ) * i ); in blake2b_init_param()
178 S->outlen = P->digest_length; in blake2b_init_param()
184 int blake2b_init( blake2b_state *S, size_t outlen ) in blake2b_init() argument
201 return blake2b_init_param( S, P ); in blake2b_init()
205 int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen ) in blake2b_init_key() argument
225 if( blake2b_init_param( S, P ) < 0 ) return -1; in blake2b_init_key()
231 blake2b_update( S, block, BLAKE2B_BLOCKBYTES ); in blake2b_init_key()
237 static int blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] ) in blake2b_compress() argument
247 v[i] = S->h[i]; in blake2b_compress()
253 v[12] = S->t[0] ^ blake2b_IV[4]; in blake2b_compress()
254 v[13] = S->t[1] ^ blake2b_IV[5]; in blake2b_compress()
255 v[14] = S->f[0] ^ blake2b_IV[6]; in blake2b_compress()
256 v[15] = S->f[1] ^ blake2b_IV[7]; in blake2b_compress()
293 S->h[i] = S->h[i] ^ v[i] ^ v[i + 8]; in blake2b_compress()
301 int blake2b_update( blake2b_state *S, const uint8_t *in, size_t inlen ) in blake2b_update() argument
305 uint32_t left = S->buflen; in blake2b_update()
310 memcpy( S->buf + left, in, fill ); // Fill buffer in blake2b_update()
311 S->buflen += fill; in blake2b_update()
312 blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES ); in blake2b_update()
313 blake2b_compress( S, S->buf ); // Compress in blake2b_update()
314 memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); // Shift buffer left in blake2b_update()
315 S->buflen -= BLAKE2B_BLOCKBYTES; in blake2b_update()
321 memcpy( S->buf + left, in, inlen ); in blake2b_update()
322 S->buflen += ( uint32_t ) inlen; // Be lazy, do not compress in blake2b_update()
331 int blake2b_final( blake2b_state *S, uint8_t *out, size_t outlen ) in blake2b_final() argument
336 if(S->outlen != outlen) return -1; in blake2b_final()
338 if( S->buflen > BLAKE2B_BLOCKBYTES ) in blake2b_final()
340 blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES ); in blake2b_final()
341 blake2b_compress( S, S->buf ); in blake2b_final()
342 S->buflen -= BLAKE2B_BLOCKBYTES; in blake2b_final()
343 memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, S->buflen ); in blake2b_final()
346 blake2b_increment_counter( S, S->buflen ); in blake2b_final()
347 blake2b_set_lastblock( S ); in blake2b_final()
348 memset( S->buf + S->buflen, 0, 2 * BLAKE2B_BLOCKBYTES - S->buflen ); /* Padding */ in blake2b_final()
349 blake2b_compress( S, S->buf ); in blake2b_final()
352 store64( buffer + sizeof( S->h[i] ) * i, S->h[i] ); in blake2b_final()
360 blake2b_state S[1]; in blake2b() local
375 if( blake2b_init_key( S, outlen, key, keylen ) < 0 ) return -1; in blake2b()
379 if( blake2b_init( S, outlen ) < 0 ) return -1; in blake2b()
382 if( blake2b_update( S, ( uint8_t * )in, inlen ) < 0 ) return -1; in blake2b()
383 return blake2b_final( S, out, outlen ); in blake2b()