Lines Matching refs:cse

335 	struct csession *cse;  member
395 struct csession *cse; in cse_create() local
668 cse = malloc(sizeof(struct csession), M_XDATA, M_WAITOK | M_ZERO); in cse_create()
669 mtx_init(&cse->lock, "cryptodev", "crypto session lock", MTX_DEF); in cse_create()
670 refcount_init(&cse->refs, 1); in cse_create()
671 cse->key = key; in cse_create()
672 cse->mackey = mackey; in cse_create()
673 cse->mode = csp.csp_mode; in cse_create()
674 cse->cses = cses; in cse_create()
675 cse->txform = txform; in cse_create()
677 cse->hashsize = thash->hashsize; in cse_create()
679 cse->hashsize = AES_GMAC_HASH_LEN; in cse_create()
681 cse->hashsize = AES_CBC_MAC_HASH_LEN; in cse_create()
682 cse->ivsize = csp.csp_ivlen; in cse_create()
685 TAILQ_INSERT_TAIL(&fcr->csessions, cse, next); in cse_create()
686 cse->ses = fcr->sesn++; in cse_create()
689 sop->ses = cse->ses; in cse_create()
692 sop->crid = crypto_ses2hid(cse->cses); in cse_create()
704 struct csession *cse; in cse_find() local
707 TAILQ_FOREACH(cse, &fcr->csessions, next) { in cse_find()
708 if (cse->ses == ses) { in cse_find()
709 refcount_acquire(&cse->refs); in cse_find()
711 return (cse); in cse_find()
719 cse_free(struct csession *cse) in cse_free() argument
722 if (!refcount_release(&cse->refs)) in cse_free()
724 crypto_freesession(cse->cses); in cse_free()
725 mtx_destroy(&cse->lock); in cse_free()
726 if (cse->key) in cse_free()
727 free(cse->key, M_XDATA); in cse_free()
728 if (cse->mackey) in cse_free()
729 free(cse->mackey, M_XDATA); in cse_free()
730 free(cse, M_XDATA); in cse_free()
736 struct csession *cse; in cse_delete() local
739 TAILQ_FOREACH(cse, &fcr->csessions, next) { in cse_delete()
740 if (cse->ses == ses) { in cse_delete()
741 TAILQ_REMOVE(&fcr->csessions, cse, next); in cse_delete()
743 cse_free(cse); in cse_delete()
752 cod_alloc(struct csession *cse, size_t aad_len, size_t len) in cod_alloc() argument
758 cod->cse = cse; in cod_alloc()
759 if (crypto_get_params(cse->cses)->csp_flags & CSP_F_SEPARATE_AAD) { in cod_alloc()
765 if (crypto_get_params(cse->cses)->csp_flags & CSP_F_SEPARATE_OUTPUT) in cod_alloc()
790 mtx_lock(&cod->cse->lock); in cryptodev_cb()
792 mtx_unlock(&cod->cse->lock); in cryptodev_cb()
798 cryptodev_op(struct csession *cse, const struct crypt_op *cop) in cryptodev_op() argument
810 if (cse->txform) { in cryptodev_op()
811 if (cop->len == 0 || (cop->len % cse->txform->blocksize) != 0) { in cryptodev_op()
817 if (cop->mac && cse->hashsize == 0) { in cryptodev_op()
834 cod = cod_alloc(cse, 0, cop->len + cse->hashsize); in cryptodev_op()
837 crp = crypto_getreq(cse->cses, M_WAITOK); in cryptodev_op()
846 if (cse->hashsize) in cryptodev_op()
849 switch (cse->mode) { in cryptodev_op()
916 crypto_use_buf(crp, cod->buf, cop->len + cse->hashsize); in cryptodev_op()
918 crypto_use_output_buf(crp, cod->obuf, cop->len + cse->hashsize); in cryptodev_op()
923 if (cse->ivsize == 0) { in cryptodev_op()
928 error = copyin(cop->iv, crp->crp_iv, cse->ivsize); in cryptodev_op()
934 } else if (cse->ivsize != 0) { in cryptodev_op()
936 crp->crp_payload_start += cse->ivsize; in cryptodev_op()
937 crp->crp_payload_length -= cse->ivsize; in cryptodev_op()
938 dst += cse->ivsize; in cryptodev_op()
943 cse->hashsize); in cryptodev_op()
963 mtx_lock(&cse->lock); in cryptodev_op()
965 mtx_sleep(cod, &cse->lock, PWAIT, "crydev", 0); in cryptodev_op()
966 mtx_unlock(&cse->lock); in cryptodev_op()
993 crp->crp_digest_start, cop->mac, cse->hashsize); in cryptodev_op()
1008 cryptodev_aead(struct csession *cse, struct crypt_aead *caead) in cryptodev_aead() argument
1020 if (cse->txform == NULL || cse->hashsize == 0 || caead->tag == NULL || in cryptodev_aead()
1021 (caead->len % cse->txform->blocksize) != 0) { in cryptodev_aead()
1038 cod = cod_alloc(cse, caead->aadlen, caead->len + cse->hashsize); in cryptodev_aead()
1041 crp = crypto_getreq(cse->cses, M_WAITOK); in cryptodev_aead()
1072 switch (cse->mode) { in cryptodev_aead()
1098 cse->hashsize); in cryptodev_aead()
1101 cse->hashsize); in cryptodev_aead()
1110 if (cse->mode == CSP_MODE_ETA && in cryptodev_aead()
1112 cse->ivsize == AES_XTS_IV_LEN) in cryptodev_aead()
1115 if (caead->ivlen != cse->ivsize) { in cryptodev_aead()
1121 error = copyin(caead->iv, crp->crp_iv, cse->ivsize); in cryptodev_aead()
1129 crp->crp_payload_start += cse->ivsize; in cryptodev_aead()
1130 crp->crp_payload_length -= cse->ivsize; in cryptodev_aead()
1131 dst += cse->ivsize; in cryptodev_aead()
1136 cse->hashsize); in cryptodev_aead()
1156 mtx_lock(&cse->lock); in cryptodev_aead()
1158 mtx_sleep(cod, &cse->lock, PWAIT, "crydev", 0); in cryptodev_aead()
1159 mtx_unlock(&cse->lock); in cryptodev_aead()
1186 crp->crp_digest_start, caead->tag, cse->hashsize); in cryptodev_aead()
1350 struct csession *cse; in fcrypt_dtor() local
1352 while ((cse = TAILQ_FIRST(&fcr->csessions))) { in fcrypt_dtor()
1353 TAILQ_REMOVE(&fcr->csessions, cse, next); in fcrypt_dtor()
1354 KASSERT(refcount_load(&cse->refs) == 1, in fcrypt_dtor()
1355 ("%s: crypto session %p with %d refs", __func__, cse, in fcrypt_dtor()
1356 refcount_load(&cse->refs))); in fcrypt_dtor()
1357 cse_free(cse); in fcrypt_dtor()
1384 struct csession *cse; in crypto_ioctl() local
1488 cse = cse_find(fcr, cop->ses); in crypto_ioctl()
1489 if (cse == NULL) { in crypto_ioctl()
1493 error = cryptodev_op(cse, cop); in crypto_ioctl()
1494 cse_free(cse); in crypto_ioctl()
1541 cse = cse_find(fcr, caead->ses); in crypto_ioctl()
1542 if (cse == NULL) { in crypto_ioctl()
1546 error = cryptodev_aead(cse, caead); in crypto_ioctl()
1547 cse_free(cse); in crypto_ioctl()