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

Function blake2sp_update

freebsd/contrib/libb2/blake2sp.c:116–163  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 2

blake2s_updateFunction · 0.70
memcpyFunction · 0.50

Tested by

no test coverage detected