MCPcopy Create free account
hub / github.com/F-Stack/f-stack / blake2bp_update

Function blake2bp_update

freebsd/contrib/libb2/blake2bp.c:119–166  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

117
118
119int blake2bp_update( blake2bp_state *S, const uint8_t *in, size_t inlen )
120{
121 size_t left = S->buflen;
122 size_t fill = sizeof( S->buf ) - left;
123
124 if( left && inlen >= fill )
125 {
126 memcpy( S->buf + left, in, fill );
127
128 for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
129 blake2b_update( S->S[i], S->buf + i * BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES );
130
131 in += fill;
132 inlen -= fill;
133 left = 0;
134 }
135
136#if defined(_OPENMP)
137 omp_set_num_threads(PARALLELISM_DEGREE);
138 #pragma omp parallel shared(S)
139#else
140 for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )
141#endif
142 {
143#if defined(_OPENMP)
144 size_t id__ = ( size_t ) omp_get_thread_num();
145#endif
146 size_t inlen__ = inlen;
147 const uint8_t *in__ = ( const uint8_t * )in;
148 in__ += id__ * BLAKE2B_BLOCKBYTES;
149
150 while( inlen__ >= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES )
151 {
152 blake2b_update( S->S[id__], in__, BLAKE2B_BLOCKBYTES );
153 in__ += PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES;
154 inlen__ -= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES;
155 }
156 }
157
158 in += inlen - inlen % ( PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES );
159 inlen %= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES;
160
161 if( inlen > 0 )
162 memcpy( S->buf + left, in, inlen );
163
164 S->buflen = ( uint32_t ) left + ( uint32_t ) inlen;
165 return 0;
166}
167
168
169

Callers

nothing calls this directly

Calls 2

blake2b_updateFunction · 0.70
memcpyFunction · 0.50

Tested by

no test coverage detected