Lines Matching full:cc

197 cipher_ctx_is_plaintext(struct sshcipher_ctx *cc)  in cipher_ctx_is_plaintext()  argument
199 return cc->plaintext; in cipher_ctx_is_plaintext()
237 cipher_warning_message(const struct sshcipher_ctx *cc) in cipher_warning_message() argument
239 if (cc == NULL || cc->cipher == NULL) in cipher_warning_message()
250 struct sshcipher_ctx *cc = NULL; in cipher_init() local
258 if ((cc = calloc(sizeof(*cc), 1)) == NULL) in cipher_init()
261 cc->plaintext = (cipher->flags & CFLAG_NONE) != 0; in cipher_init()
262 cc->encrypt = do_encrypt; in cipher_init()
270 cc->cipher = cipher; in cipher_init()
271 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) { in cipher_init()
272 cc->cp_ctx = chachapoly_new(key, keylen); in cipher_init()
273 ret = cc->cp_ctx != NULL ? 0 : SSH_ERR_INVALID_ARGUMENT; in cipher_init()
276 if ((cc->cipher->flags & CFLAG_NONE) != 0) { in cipher_init()
281 if ((cc->cipher->flags & CFLAG_AESCTR) != 0) { in cipher_init()
282 aesctr_keysetup(&cc->ac_ctx, key, 8 * keylen, 8 * ivlen); in cipher_init()
283 aesctr_ivsetup(&cc->ac_ctx, iv); in cipher_init()
291 if ((cc->evp = EVP_CIPHER_CTX_new()) == NULL) { in cipher_init()
295 if (EVP_CipherInit(cc->evp, type, NULL, (u_char *)iv, in cipher_init()
301 !EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_SET_IV_FIXED, in cipher_init()
306 klen = EVP_CIPHER_CTX_key_length(cc->evp); in cipher_init()
308 if (EVP_CIPHER_CTX_set_key_length(cc->evp, keylen) == 0) { in cipher_init()
313 if (EVP_CipherInit(cc->evp, NULL, (u_char *)key, NULL, -1) == 0) { in cipher_init()
322 *ccp = cc; in cipher_init()
324 if (cc != NULL) { in cipher_init()
326 EVP_CIPHER_CTX_free(cc->evp); in cipher_init()
328 freezero(cc, sizeof(*cc)); in cipher_init()
345 cipher_crypt(struct sshcipher_ctx *cc, u_int seqnr, u_char *dest, in cipher_crypt() argument
348 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) { in cipher_crypt()
349 return chachapoly_crypt(cc->cp_ctx, seqnr, dest, src, in cipher_crypt()
350 len, aadlen, authlen, cc->encrypt); in cipher_crypt()
352 if ((cc->cipher->flags & CFLAG_NONE) != 0) { in cipher_crypt()
357 if ((cc->cipher->flags & CFLAG_AESCTR) != 0) { in cipher_crypt()
360 aesctr_encrypt_bytes(&cc->ac_ctx, src + aadlen, in cipher_crypt()
369 if (authlen != cipher_authlen(cc->cipher)) in cipher_crypt()
372 if (!EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_IV_GEN, in cipher_crypt()
376 if (!cc->encrypt && in cipher_crypt()
377 !EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_SET_TAG, in cipher_crypt()
383 EVP_Cipher(cc->evp, NULL, (u_char *)src, aadlen) < 0) in cipher_crypt()
387 if (len % cc->cipher->block_size) in cipher_crypt()
389 if (EVP_Cipher(cc->evp, dest + aadlen, (u_char *)src + aadlen, in cipher_crypt()
394 if (EVP_Cipher(cc->evp, NULL, NULL, 0) < 0) in cipher_crypt()
395 return cc->encrypt ? in cipher_crypt()
397 if (cc->encrypt && in cipher_crypt()
398 !EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_GET_TAG, in cipher_crypt()
408 cipher_get_length(struct sshcipher_ctx *cc, u_int *plenp, u_int seqnr, in cipher_get_length() argument
411 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) in cipher_get_length()
412 return chachapoly_get_length(cc->cp_ctx, plenp, seqnr, in cipher_get_length()
421 cipher_free(struct sshcipher_ctx *cc) in cipher_free() argument
423 if (cc == NULL) in cipher_free()
425 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) { in cipher_free()
426 chachapoly_free(cc->cp_ctx); in cipher_free()
427 cc->cp_ctx = NULL; in cipher_free()
428 } else if ((cc->cipher->flags & CFLAG_AESCTR) != 0) in cipher_free()
429 explicit_bzero(&cc->ac_ctx, sizeof(cc->ac_ctx)); in cipher_free()
431 EVP_CIPHER_CTX_free(cc->evp); in cipher_free()
432 cc->evp = NULL; in cipher_free()
434 freezero(cc, sizeof(*cc)); in cipher_free()
438 cipher_get_keyiv(struct sshcipher_ctx *cc, u_char *iv, size_t len) in cipher_get_keyiv() argument
441 const struct sshcipher *c = cc->cipher; in cipher_get_keyiv()
445 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) { in cipher_get_keyiv()
450 if ((cc->cipher->flags & CFLAG_AESCTR) != 0) { in cipher_get_keyiv()
451 if (len != sizeof(cc->ac_ctx.ctr)) in cipher_get_keyiv()
453 memcpy(iv, cc->ac_ctx.ctr, len); in cipher_get_keyiv()
456 if ((cc->cipher->flags & CFLAG_NONE) != 0) in cipher_get_keyiv()
460 evplen = EVP_CIPHER_CTX_iv_length(cc->evp); in cipher_get_keyiv()
468 if (!EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_IV_GEN, in cipher_get_keyiv()
471 } else if (!EVP_CIPHER_CTX_get_iv(cc->evp, iv, len)) in cipher_get_keyiv()
478 cipher_set_keyiv(struct sshcipher_ctx *cc, const u_char *iv, size_t len) in cipher_set_keyiv() argument
481 const struct sshcipher *c = cc->cipher; in cipher_set_keyiv()
485 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) in cipher_set_keyiv()
487 if ((cc->cipher->flags & CFLAG_NONE) != 0) in cipher_set_keyiv()
491 evplen = EVP_CIPHER_CTX_iv_length(cc->evp); in cipher_set_keyiv()
498 if (!EVP_CIPHER_CTX_ctrl(cc->evp, in cipher_set_keyiv()
501 } else if (!EVP_CIPHER_CTX_set_iv(cc->evp, iv, evplen)) in cipher_set_keyiv()