Lines Matching refs:S
41 static inline int blake2s_set_lastnode( blake2s_state *S ) in blake2s_set_lastnode() argument
43 S->f[1] = ~0U; in blake2s_set_lastnode()
47 static inline int blake2s_clear_lastnode( blake2s_state *S ) in blake2s_clear_lastnode() argument
49 S->f[1] = 0U; in blake2s_clear_lastnode()
54 static inline int blake2s_set_lastblock( blake2s_state *S ) in blake2s_set_lastblock() argument
56 if( S->last_node ) blake2s_set_lastnode( S ); in blake2s_set_lastblock()
58 S->f[0] = ~0U; in blake2s_set_lastblock()
62 static inline int blake2s_clear_lastblock( blake2s_state *S ) in blake2s_clear_lastblock() argument
64 if( S->last_node ) blake2s_clear_lastnode( S ); in blake2s_clear_lastblock()
66 S->f[0] = 0U; in blake2s_clear_lastblock()
70 static inline int blake2s_increment_counter( blake2s_state *S, const uint32_t inc ) in blake2s_increment_counter() argument
72 S->t[0] += inc; in blake2s_increment_counter()
73 S->t[1] += ( S->t[0] < inc ); in blake2s_increment_counter()
132 static inline int blake2s_init0( blake2s_state *S ) in blake2s_init0() argument
134 memset( S, 0, sizeof( blake2s_state ) ); in blake2s_init0()
136 for( int i = 0; i < 8; ++i ) S->h[i] = blake2s_IV[i]; in blake2s_init0()
151 int blake2s_init( blake2s_state *S, size_t outlen );
152 int blake2s_init_param( blake2s_state *S, const blake2s_param *P );
153 int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen );
154 int blake2s_update( blake2s_state *S, const uint8_t *in, size_t inlen );
155 int blake2s_final( blake2s_state *S, uint8_t *out, size_t outlen );
162 int blake2s_init_param( blake2s_state *S, const blake2s_param *P ) in blake2s_init_param() argument
164 blake2s_init0( S ); in blake2s_init_param()
169 S->h[i] ^= load32( &p[i] ); in blake2s_init_param()
171 S->outlen = P->digest_length; in blake2s_init_param()
177 int blake2s_init( blake2s_state *S, size_t outlen ) in blake2s_init() argument
195 return blake2s_init_param( S, P ); in blake2s_init()
198 int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen ) in blake2s_init_key() argument
218 if( blake2s_init_param( S, P ) < 0 ) return -1; in blake2s_init_key()
224 blake2s_update( S, block, BLAKE2S_BLOCKBYTES ); in blake2s_init_key()
230 static int blake2s_compress( blake2s_state *S, const uint8_t block[BLAKE2S_BLOCKBYTES] ) in blake2s_compress() argument
239 v[i] = S->h[i]; in blake2s_compress()
245 v[12] = S->t[0] ^ blake2s_IV[4]; in blake2s_compress()
246 v[13] = S->t[1] ^ blake2s_IV[5]; in blake2s_compress()
247 v[14] = S->f[0] ^ blake2s_IV[6]; in blake2s_compress()
248 v[15] = S->f[1] ^ blake2s_IV[7]; in blake2s_compress()
283 S->h[i] = S->h[i] ^ v[i] ^ v[i + 8]; in blake2s_compress()
291 int blake2s_update( blake2s_state *S, const uint8_t *in, size_t inlen ) in blake2s_update() argument
295 uint32_t left = S->buflen; in blake2s_update()
300 memcpy( S->buf + left, in, fill ); // Fill buffer in blake2s_update()
301 S->buflen += fill; in blake2s_update()
302 blake2s_increment_counter( S, BLAKE2S_BLOCKBYTES ); in blake2s_update()
303 blake2s_compress( S, S->buf ); // Compress in blake2s_update()
304 memcpy( S->buf, S->buf + BLAKE2S_BLOCKBYTES, BLAKE2S_BLOCKBYTES ); // Shift buffer left in blake2s_update()
305 S->buflen -= BLAKE2S_BLOCKBYTES; in blake2s_update()
311 memcpy( S->buf + left, in, inlen ); in blake2s_update()
312 S->buflen += ( uint32_t ) inlen; // Be lazy, do not compress in blake2s_update()
321 int blake2s_final( blake2s_state *S, uint8_t *out, size_t outlen ) in blake2s_final() argument
326 if(S->outlen != outlen) return -1; in blake2s_final()
328 if( S->buflen > BLAKE2S_BLOCKBYTES ) in blake2s_final()
330 blake2s_increment_counter( S, BLAKE2S_BLOCKBYTES ); in blake2s_final()
331 blake2s_compress( S, S->buf ); in blake2s_final()
332 S->buflen -= BLAKE2S_BLOCKBYTES; in blake2s_final()
333 memcpy( S->buf, S->buf + BLAKE2S_BLOCKBYTES, S->buflen ); in blake2s_final()
336 blake2s_increment_counter( S, ( uint32_t )S->buflen ); in blake2s_final()
337 blake2s_set_lastblock( S ); in blake2s_final()
338 memset( S->buf + S->buflen, 0, 2 * BLAKE2S_BLOCKBYTES - S->buflen ); /* Padding */ in blake2s_final()
339 blake2s_compress( S, S->buf ); in blake2s_final()
342 store32( buffer + sizeof( S->h[i] ) * i, S->h[i] ); in blake2s_final()
350 blake2s_state S[1]; in blake2s() local
365 if( blake2s_init_key( S, outlen, key, keylen ) < 0 ) return -1; in blake2s()
369 if( blake2s_init( S, outlen ) < 0 ) return -1; in blake2s()
372 if( blake2s_update( S, ( uint8_t * )in, inlen ) < 0) return -1; in blake2s()
373 return blake2s_final( S, out, outlen ); in blake2s()