| 270 | } |
| 271 | |
| 272 | static int |
| 273 | blake2_cipher_setup(struct blake2_session *ses, |
| 274 | const struct crypto_session_params *csp) |
| 275 | { |
| 276 | int hashlen; |
| 277 | |
| 278 | CTASSERT((size_t)BLAKE2S_OUTBYTES <= (size_t)BLAKE2B_OUTBYTES); |
| 279 | |
| 280 | if (!blake2_check_klen(csp, csp->csp_auth_klen)) |
| 281 | return (EINVAL); |
| 282 | |
| 283 | if (csp->csp_auth_mlen < 0) |
| 284 | return (EINVAL); |
| 285 | |
| 286 | switch (csp->csp_auth_alg) { |
| 287 | case CRYPTO_BLAKE2S: |
| 288 | hashlen = BLAKE2S_OUTBYTES; |
| 289 | break; |
| 290 | case CRYPTO_BLAKE2B: |
| 291 | hashlen = BLAKE2B_OUTBYTES; |
| 292 | break; |
| 293 | default: |
| 294 | return (EINVAL); |
| 295 | } |
| 296 | |
| 297 | if (csp->csp_auth_mlen > hashlen) |
| 298 | return (EINVAL); |
| 299 | |
| 300 | if (csp->csp_auth_mlen == 0) |
| 301 | ses->mlen = hashlen; |
| 302 | else |
| 303 | ses->mlen = csp->csp_auth_mlen; |
| 304 | return (0); |
| 305 | } |
| 306 | |
| 307 | static int |
| 308 | blake2b_applicator(void *state, const void *buf, u_int len) |
no test coverage detected