Lines Matching refs:cc

269 cipher_init(CipherContext *cc, const Cipher *cipher,
291 cc->plaintext = (cipher->number == SSH_CIPHER_NONE);
292 cc->encrypt = do_encrypt;
300 cc->cipher = cipher;
302 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) {
303 chachapoly_init(&cc->cp_ctx, key, keylen);
307 EVP_CIPHER_CTX_init(&cc->evp);
314 EVP_CipherInit(&cc->evp, type, (u_char *)key, (u_char *)iv,
317 if (EVP_CipherInit(&cc->evp, type, NULL, (u_char *)iv,
322 !EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_SET_IV_FIXED,
326 klen = EVP_CIPHER_CTX_key_length(&cc->evp);
329 if (EVP_CIPHER_CTX_set_key_length(&cc->evp, keylen) == 0)
333 if (EVP_CipherInit(&cc->evp, NULL, (u_char *)key, NULL, -1) == 0)
341 if (EVP_Cipher(&cc->evp, discard, junk,
363 cipher_crypt(CipherContext *cc, u_int seqnr, u_char *dest, const u_char *src,
366 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0)
367 return chachapoly_crypt(&cc->cp_ctx, seqnr, dest, src, len,
368 aadlen, authlen, cc->encrypt);
372 if (authlen != cipher_authlen(cc->cipher))
375 if (!EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_IV_GEN,
379 if (!cc->encrypt &&
380 !EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_SET_TAG,
386 EVP_Cipher(&cc->evp, NULL, (u_char *)src, aadlen) < 0)
390 if (len % cc->cipher->block_size)
392 if (EVP_Cipher(&cc->evp, dest + aadlen, (u_char *)src + aadlen,
397 if (EVP_Cipher(&cc->evp, NULL, NULL, 0) < 0) {
398 if (cc->encrypt)
403 if (cc->encrypt &&
404 !EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_GET_TAG,
413 cipher_get_length(CipherContext *cc, u_int *plenp, u_int seqnr,
416 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0)
417 return chachapoly_get_length(&cc->cp_ctx, plenp, seqnr,
426 cipher_cleanup(CipherContext *cc)
428 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0)
429 explicit_bzero(&cc->cp_ctx, sizeof(cc->cp_ctx));
430 else if (EVP_CIPHER_CTX_cleanup(&cc->evp) == 0)
440 cipher_set_key_string(CipherContext *cc, const Cipher *cipher,
449 cipher_init(cc, cipher, digest, 16, NULL, 0, do_encrypt);
461 cipher_get_keyiv_len(const CipherContext *cc)
463 const Cipher *c = cc->cipher;
468 else if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0)
471 ivlen = EVP_CIPHER_CTX_iv_length(&cc->evp);
476 cipher_get_keyiv(CipherContext *cc, u_char *iv, u_int len)
478 const Cipher *c = cc->cipher;
481 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) {
494 evplen = EVP_CIPHER_CTX_iv_length(&cc->evp);
502 ssh_rijndael_iv(&cc->evp, 0, iv, len);
507 ssh_aes_ctr_iv(&cc->evp, 0, iv, len);
510 memcpy(iv, cc->evp.iv, len);
513 ssh1_3des_iv(&cc->evp, 0, iv, 24);
521 cipher_set_keyiv(CipherContext *cc, u_char *iv)
523 const Cipher *c = cc->cipher;
526 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0)
536 evplen = EVP_CIPHER_CTX_iv_length(&cc->evp);
541 ssh_rijndael_iv(&cc->evp, 1, iv, evplen);
546 ssh_aes_ctr_iv(&cc->evp, 1, iv, evplen);
549 memcpy(cc->evp.iv, iv, evplen);
552 ssh1_3des_iv(&cc->evp, 1, iv, 24);
560 cipher_get_keycontext(const CipherContext *cc, u_char *dat)
562 const Cipher *c = cc->cipher;
566 plen = EVP_X_STATE_LEN(cc->evp);
569 memcpy(dat, EVP_X_STATE(cc->evp), plen);
575 cipher_set_keycontext(CipherContext *cc, u_char *dat)
577 const Cipher *c = cc->cipher;
581 plen = EVP_X_STATE_LEN(cc->evp);
582 memcpy(EVP_X_STATE(cc->evp), dat, plen);