init2 xors IV with input parameter block */
| 198 | |
| 199 | /* init2 xors IV with input parameter block */ |
| 200 | int blake2s_init_param( blake2s_state *S, const blake2s_param *P ) |
| 201 | { |
| 202 | uint8_t *p, *h, *v; |
| 203 | //blake2s_init0( S ); |
| 204 | v = ( uint8_t * )( blake2s_IV ); |
| 205 | h = ( uint8_t * )( S->h ); |
| 206 | p = ( uint8_t * )( P ); |
| 207 | /* IV XOR ParamBlock */ |
| 208 | memset( S, 0, sizeof( blake2s_state ) ); |
| 209 | |
| 210 | for( int i = 0; i < BLAKE2S_OUTBYTES; ++i ) h[i] = v[i] ^ p[i]; |
| 211 | |
| 212 | S->outlen = P->digest_length; |
| 213 | return 0; |
| 214 | } |
| 215 | |
| 216 | |
| 217 | /* Some sort of default parameter block initialization, for sequential blake2s */ |
no test coverage detected