Lines Matching refs:cc

270 cipher_init(CipherContext *cc, const Cipher *cipher,
292 cc->plaintext = (cipher->number == SSH_CIPHER_NONE);
293 cc->encrypt = do_encrypt;
301 cc->cipher = cipher;
303 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) {
304 chachapoly_init(&cc->cp_ctx, key, keylen);
308 EVP_CIPHER_CTX_init(&cc->evp);
315 EVP_CipherInit(&cc->evp, type, (u_char *)key, (u_char *)iv,
318 if (EVP_CipherInit(&cc->evp, type, NULL, (u_char *)iv,
323 !EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_SET_IV_FIXED,
327 klen = EVP_CIPHER_CTX_key_length(&cc->evp);
330 if (EVP_CIPHER_CTX_set_key_length(&cc->evp, keylen) == 0)
334 if (EVP_CipherInit(&cc->evp, NULL, (u_char *)key, NULL, -1) == 0)
342 if (EVP_Cipher(&cc->evp, discard, junk,
364 cipher_crypt(CipherContext *cc, u_int seqnr, u_char *dest, const u_char *src,
367 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0)
368 return chachapoly_crypt(&cc->cp_ctx, seqnr, dest, src, len,
369 aadlen, authlen, cc->encrypt);
373 if (authlen != cipher_authlen(cc->cipher))
376 if (!EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_IV_GEN,
380 if (!cc->encrypt &&
381 !EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_SET_TAG,
387 EVP_Cipher(&cc->evp, NULL, (u_char *)src, aadlen) < 0)
391 if (len % cc->cipher->block_size)
393 if (EVP_Cipher(&cc->evp, dest + aadlen, (u_char *)src + aadlen,
398 if (EVP_Cipher(&cc->evp, NULL, NULL, 0) < 0) {
399 if (cc->encrypt)
404 if (cc->encrypt &&
405 !EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_GET_TAG,
414 cipher_get_length(CipherContext *cc, u_int *plenp, u_int seqnr,
417 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0)
418 return chachapoly_get_length(&cc->cp_ctx, plenp, seqnr,
427 cipher_cleanup(CipherContext *cc)
429 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0)
430 explicit_bzero(&cc->cp_ctx, sizeof(cc->cp_ctx));
431 else if (EVP_CIPHER_CTX_cleanup(&cc->evp) == 0)
441 cipher_set_key_string(CipherContext *cc, const Cipher *cipher,
450 cipher_init(cc, cipher, digest, 16, NULL, 0, do_encrypt);
462 cipher_get_keyiv_len(const CipherContext *cc)
464 const Cipher *c = cc->cipher;
469 else if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0)
472 ivlen = EVP_CIPHER_CTX_iv_length(&cc->evp);
477 cipher_get_keyiv(CipherContext *cc, u_char *iv, u_int len)
479 const Cipher *c = cc->cipher;
482 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) {
495 evplen = EVP_CIPHER_CTX_iv_length(&cc->evp);
503 ssh_rijndael_iv(&cc->evp, 0, iv, len);
508 ssh_aes_ctr_iv(&cc->evp, 0, iv, len);
511 memcpy(iv, cc->evp.iv, len);
514 ssh1_3des_iv(&cc->evp, 0, iv, 24);
522 cipher_set_keyiv(CipherContext *cc, u_char *iv)
524 const Cipher *c = cc->cipher;
527 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0)
537 evplen = EVP_CIPHER_CTX_iv_length(&cc->evp);
542 ssh_rijndael_iv(&cc->evp, 1, iv, evplen);
547 ssh_aes_ctr_iv(&cc->evp, 1, iv, evplen);
550 memcpy(cc->evp.iv, iv, evplen);
553 ssh1_3des_iv(&cc->evp, 1, iv, 24);
561 cipher_get_keycontext(const CipherContext *cc, u_char *dat)
563 const Cipher *c = cc->cipher;
567 plen = EVP_X_STATE_LEN(cc->evp);
570 memcpy(dat, EVP_X_STATE(cc->evp), plen);
576 cipher_set_keycontext(CipherContext *cc, u_char *dat)
578 const Cipher *c = cc->cipher;
582 plen = EVP_X_STATE_LEN(cc->evp);
583 memcpy(EVP_X_STATE(cc->evp), dat, plen);