Lines Matching refs:cc
187 cipher_ctx_is_plaintext(struct sshcipher_ctx *cc) in cipher_ctx_is_plaintext() argument
189 return cc->plaintext; in cipher_ctx_is_plaintext()
227 cipher_warning_message(const struct sshcipher_ctx *cc) in cipher_warning_message() argument
229 if (cc == NULL || cc->cipher == NULL) in cipher_warning_message()
240 struct sshcipher_ctx *cc = NULL; in cipher_init() local
248 if ((cc = calloc(sizeof(*cc), 1)) == NULL) in cipher_init()
251 cc->plaintext = (cipher->flags & CFLAG_NONE) != 0; in cipher_init()
252 cc->encrypt = do_encrypt; in cipher_init()
260 cc->cipher = cipher; in cipher_init()
261 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) { in cipher_init()
262 ret = chachapoly_init(&cc->cp_ctx, key, keylen); in cipher_init()
265 if ((cc->cipher->flags & CFLAG_NONE) != 0) { in cipher_init()
270 if ((cc->cipher->flags & CFLAG_AESCTR) != 0) { in cipher_init()
271 aesctr_keysetup(&cc->ac_ctx, key, 8 * keylen, 8 * ivlen); in cipher_init()
272 aesctr_ivsetup(&cc->ac_ctx, iv); in cipher_init()
280 if ((cc->evp = EVP_CIPHER_CTX_new()) == NULL) { in cipher_init()
284 if (EVP_CipherInit(cc->evp, type, NULL, (u_char *)iv, in cipher_init()
290 !EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_SET_IV_FIXED, in cipher_init()
295 klen = EVP_CIPHER_CTX_key_length(cc->evp); in cipher_init()
297 if (EVP_CIPHER_CTX_set_key_length(cc->evp, keylen) == 0) { in cipher_init()
302 if (EVP_CipherInit(cc->evp, NULL, (u_char *)key, NULL, -1) == 0) { in cipher_init()
311 *ccp = cc; in cipher_init()
313 if (cc != NULL) { in cipher_init()
315 EVP_CIPHER_CTX_free(cc->evp); in cipher_init()
317 explicit_bzero(cc, sizeof(*cc)); in cipher_init()
318 free(cc); in cipher_init()
335 cipher_crypt(struct sshcipher_ctx *cc, u_int seqnr, u_char *dest, in cipher_crypt() argument
338 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) { in cipher_crypt()
339 return chachapoly_crypt(&cc->cp_ctx, seqnr, dest, src, in cipher_crypt()
340 len, aadlen, authlen, cc->encrypt); in cipher_crypt()
342 if ((cc->cipher->flags & CFLAG_NONE) != 0) { in cipher_crypt()
347 if ((cc->cipher->flags & CFLAG_AESCTR) != 0) { in cipher_crypt()
350 aesctr_encrypt_bytes(&cc->ac_ctx, src + aadlen, in cipher_crypt()
359 if (authlen != cipher_authlen(cc->cipher)) in cipher_crypt()
362 if (!EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_IV_GEN, in cipher_crypt()
366 if (!cc->encrypt && in cipher_crypt()
367 !EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_SET_TAG, in cipher_crypt()
373 EVP_Cipher(cc->evp, NULL, (u_char *)src, aadlen) < 0) in cipher_crypt()
377 if (len % cc->cipher->block_size) in cipher_crypt()
379 if (EVP_Cipher(cc->evp, dest + aadlen, (u_char *)src + aadlen, in cipher_crypt()
384 if (EVP_Cipher(cc->evp, NULL, NULL, 0) < 0) in cipher_crypt()
385 return cc->encrypt ? in cipher_crypt()
387 if (cc->encrypt && in cipher_crypt()
388 !EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_GET_TAG, in cipher_crypt()
398 cipher_get_length(struct sshcipher_ctx *cc, u_int *plenp, u_int seqnr, in cipher_get_length() argument
401 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) in cipher_get_length()
402 return chachapoly_get_length(&cc->cp_ctx, plenp, seqnr, in cipher_get_length()
411 cipher_free(struct sshcipher_ctx *cc) in cipher_free() argument
413 if (cc == NULL) in cipher_free()
415 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) in cipher_free()
416 explicit_bzero(&cc->cp_ctx, sizeof(cc->cp_ctx)); in cipher_free()
417 else if ((cc->cipher->flags & CFLAG_AESCTR) != 0) in cipher_free()
418 explicit_bzero(&cc->ac_ctx, sizeof(cc->ac_ctx)); in cipher_free()
420 EVP_CIPHER_CTX_free(cc->evp); in cipher_free()
421 cc->evp = NULL; in cipher_free()
423 explicit_bzero(cc, sizeof(*cc)); in cipher_free()
424 free(cc); in cipher_free()
433 cipher_get_keyiv_len(const struct sshcipher_ctx *cc) in cipher_get_keyiv_len() argument
435 const struct sshcipher *c = cc->cipher; in cipher_get_keyiv_len()
440 return sizeof(cc->ac_ctx.ctr); in cipher_get_keyiv_len()
442 return EVP_CIPHER_CTX_iv_length(cc->evp); in cipher_get_keyiv_len()
449 cipher_get_keyiv(struct sshcipher_ctx *cc, u_char *iv, size_t len) in cipher_get_keyiv() argument
452 const struct sshcipher *c = cc->cipher; in cipher_get_keyiv()
456 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) { in cipher_get_keyiv()
461 if ((cc->cipher->flags & CFLAG_AESCTR) != 0) { in cipher_get_keyiv()
462 if (len != sizeof(cc->ac_ctx.ctr)) in cipher_get_keyiv()
464 memcpy(iv, cc->ac_ctx.ctr, len); in cipher_get_keyiv()
467 if ((cc->cipher->flags & CFLAG_NONE) != 0) in cipher_get_keyiv()
471 evplen = EVP_CIPHER_CTX_iv_length(cc->evp); in cipher_get_keyiv()
480 ssh_aes_ctr_iv(cc->evp, 0, iv, len); in cipher_get_keyiv()
484 if (!EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_IV_GEN, in cipher_get_keyiv()
487 } else if (!EVP_CIPHER_CTX_get_iv(cc->evp, iv, len)) in cipher_get_keyiv()
494 cipher_set_keyiv(struct sshcipher_ctx *cc, const u_char *iv, size_t len) in cipher_set_keyiv() argument
497 const struct sshcipher *c = cc->cipher; in cipher_set_keyiv()
501 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) in cipher_set_keyiv()
503 if ((cc->cipher->flags & CFLAG_NONE) != 0) in cipher_set_keyiv()
507 evplen = EVP_CIPHER_CTX_iv_length(cc->evp); in cipher_set_keyiv()
515 ssh_aes_ctr_iv(cc->evp, 1, (u_char *)iv, evplen); in cipher_set_keyiv()
520 if (!EVP_CIPHER_CTX_ctrl(cc->evp, in cipher_set_keyiv()
523 } else if (!EVP_CIPHER_CTX_set_iv(cc->evp, iv, evplen)) in cipher_set_keyiv()