Lines Matching defs:cc
191 cipher_ctx_is_plaintext(struct sshcipher_ctx *cc)
193 return cc->plaintext;
231 cipher_warning_message(const struct sshcipher_ctx *cc)
233 if (cc == NULL || cc->cipher == NULL)
244 struct sshcipher_ctx *cc = NULL;
252 if ((cc = calloc(1, sizeof(*cc))) == NULL)
255 cc->plaintext = (cipher->flags & CFLAG_NONE) != 0;
256 cc->encrypt = do_encrypt;
264 cc->cipher = cipher;
265 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) {
266 cc->cp_ctx = chachapoly_new(key, keylen);
267 ret = cc->cp_ctx != NULL ? 0 : SSH_ERR_INVALID_ARGUMENT;
270 if ((cc->cipher->flags & CFLAG_NONE) != 0) {
275 if ((cc->cipher->flags & CFLAG_AESCTR) != 0) {
276 aesctr_keysetup(&cc->ac_ctx, key, 8 * keylen, 8 * ivlen);
277 aesctr_ivsetup(&cc->ac_ctx, iv);
285 if ((cc->evp = EVP_CIPHER_CTX_new()) == NULL) {
289 if (EVP_CipherInit(cc->evp, type, NULL, (u_char *)iv,
295 !EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_SET_IV_FIXED,
300 klen = EVP_CIPHER_CTX_key_length(cc->evp);
302 if (EVP_CIPHER_CTX_set_key_length(cc->evp, keylen) == 0) {
307 if (EVP_CipherInit(cc->evp, NULL, (u_char *)key, NULL, -1) == 0) {
316 *ccp = cc;
318 if (cc != NULL) {
320 EVP_CIPHER_CTX_free(cc->evp);
322 freezero(cc, sizeof(*cc));
339 cipher_crypt(struct sshcipher_ctx *cc, u_int seqnr, u_char *dest,
342 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) {
343 return chachapoly_crypt(cc->cp_ctx, seqnr, dest, src,
344 len, aadlen, authlen, cc->encrypt);
346 if ((cc->cipher->flags & CFLAG_NONE) != 0) {
351 if ((cc->cipher->flags & CFLAG_AESCTR) != 0) {
354 aesctr_encrypt_bytes(&cc->ac_ctx, src + aadlen,
363 if (authlen != cipher_authlen(cc->cipher))
366 if (!EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_IV_GEN,
370 if (!cc->encrypt &&
371 !EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_SET_TAG,
377 EVP_Cipher(cc->evp, NULL, (u_char *)src, aadlen) < 0)
381 if (len % cc->cipher->block_size)
383 if (EVP_Cipher(cc->evp, dest + aadlen, (u_char *)src + aadlen,
388 if (EVP_Cipher(cc->evp, NULL, NULL, 0) < 0)
389 return cc->encrypt ?
391 if (cc->encrypt &&
392 !EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_GET_TAG,
402 cipher_get_length(struct sshcipher_ctx *cc, u_int *plenp, u_int seqnr,
405 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0)
406 return chachapoly_get_length(cc->cp_ctx, plenp, seqnr,
415 cipher_free(struct sshcipher_ctx *cc)
417 if (cc == NULL)
419 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) {
420 chachapoly_free(cc->cp_ctx);
421 cc->cp_ctx = NULL;
422 } else if ((cc->cipher->flags & CFLAG_AESCTR) != 0)
423 explicit_bzero(&cc->ac_ctx, sizeof(cc->ac_ctx));
425 EVP_CIPHER_CTX_free(cc->evp);
426 cc->evp = NULL;
428 freezero(cc, sizeof(*cc));
432 cipher_get_keyiv(struct sshcipher_ctx *cc, u_char *iv, size_t len)
435 const struct sshcipher *c = cc->cipher;
439 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) {
444 if ((cc->cipher->flags & CFLAG_AESCTR) != 0) {
445 if (len != sizeof(cc->ac_ctx.ctr))
447 memcpy(iv, cc->ac_ctx.ctr, len);
450 if ((cc->cipher->flags & CFLAG_NONE) != 0)
454 evplen = EVP_CIPHER_CTX_iv_length(cc->evp);
462 if (!EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_IV_GEN, len, iv))
464 } else if (!EVP_CIPHER_CTX_get_iv(cc->evp, iv, len))
471 cipher_set_keyiv(struct sshcipher_ctx *cc, const u_char *iv, size_t len)
474 const struct sshcipher *c = cc->cipher;
478 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0)
480 if ((cc->cipher->flags & CFLAG_NONE) != 0)
484 evplen = EVP_CIPHER_CTX_iv_length(cc->evp);
491 if (!EVP_CIPHER_CTX_ctrl(cc->evp,
494 } else if (!EVP_CIPHER_CTX_set_iv(cc->evp, iv, evplen))