void blake256_update( state *S, const u8 *data, u64 datalen ) { int left=S->buflen >> 3; int fill=64 - left; if( left && ( ((datalen >> 3) & 0x3F) >= fill ) ) { memcpy( (void*) (S->buf + left), (void*) data, fill ); S->t[0] += 512; if (S->t[0] == 0) S->t[1]++; blake256_compress( S, S->buf ); data += fill; datalen -= (fill << 3); left = 0; } while( datalen >= 512 ) { S->t[0] += 512; if (S->t[0] == 0) S->t[1]++; blake256_compress( S, data ); data += 64; datalen -= 512; } if( datalen > 0 ) { memcpy( (void*) (S->buf + left), (void*) data, datalen>>3 ); S->buflen = (left<<3) + datalen; }
void blake256_update( state256 *S, const uint8_t *in, uint64_t inlen ) { int left = S->buflen; int fill = 64 - left; /* data left and data received fill a block */ if( left && ( inlen >= fill ) ) { memcpy( ( void * ) ( S->buf + left ), ( void * ) in, fill ); S->t[0] += 512; if ( S->t[0] == 0 ) S->t[1]++; blake256_compress( S, S->buf ); in += fill; inlen -= fill; left = 0; } /* compress blocks of data received */ while( inlen >= 64 ) { S->t[0] += 512; if ( S->t[0] == 0 ) S->t[1]++; blake256_compress( S, in ); in += 64; inlen -= 64; } /* store any data left */ if( inlen > 0 ) { memcpy( ( void * ) ( S->buf + left ), \ ( void * ) in, ( size_t ) inlen ); S->buflen = left + ( int )inlen; } else S->buflen = 0; }