Lines Matching full:cse
278 struct csession *cse; member
335 struct csession *cse; in cse_create() local
496 cse = malloc(sizeof(struct csession), M_CRYPTODEV, M_WAITOK | M_ZERO); in cse_create()
497 mtx_init(&cse->lock, "cryptodev", "crypto session lock", MTX_DEF); in cse_create()
498 refcount_init(&cse->refs, 1); in cse_create()
499 cse->key = key; in cse_create()
500 cse->mackey = mackey; in cse_create()
501 cse->cses = cses; in cse_create()
503 cse->hashsize = sop->maclen; in cse_create()
505 cse->hashsize = thash->hashsize; in cse_create()
507 cse->hashsize = txform->macsize; in cse_create()
508 cse->ivsize = csp.csp_ivlen; in cse_create()
516 cse->blocksize = txform->blocksize; in cse_create()
518 cse->blocksize = 1; in cse_create()
521 TAILQ_INSERT_TAIL(&fcr->csessions, cse, next); in cse_create()
522 cse->ses = fcr->sesn++; in cse_create()
525 sop->ses = cse->ses; in cse_create()
528 sop->crid = crypto_ses2hid(cse->cses); in cse_create()
540 struct csession *cse; in cse_find() local
543 TAILQ_FOREACH(cse, &fcr->csessions, next) { in cse_find()
544 if (cse->ses == ses) { in cse_find()
545 refcount_acquire(&cse->refs); in cse_find()
547 return (cse); in cse_find()
555 cse_free(struct csession *cse) in cse_free() argument
558 if (!refcount_release(&cse->refs)) in cse_free()
560 crypto_freesession(cse->cses); in cse_free()
561 mtx_destroy(&cse->lock); in cse_free()
562 if (cse->key) in cse_free()
563 free(cse->key, M_CRYPTODEV); in cse_free()
564 if (cse->mackey) in cse_free()
565 free(cse->mackey, M_CRYPTODEV); in cse_free()
566 free(cse, M_CRYPTODEV); in cse_free()
572 struct csession *cse; in cse_delete() local
575 TAILQ_FOREACH(cse, &fcr->csessions, next) { in cse_delete()
576 if (cse->ses == ses) { in cse_delete()
577 TAILQ_REMOVE(&fcr->csessions, cse, next); in cse_delete()
579 cse_free(cse); in cse_delete()
588 cod_alloc(struct csession *cse, size_t aad_len, size_t len) in cod_alloc() argument
595 cod->cse = cse; in cod_alloc()
596 if (crypto_get_params(cse->cses)->csp_flags & CSP_F_SEPARATE_AAD) { in cod_alloc()
602 if (crypto_get_params(cse->cses)->csp_flags & CSP_F_SEPARATE_OUTPUT) in cod_alloc()
627 mtx_lock(&cod->cse->lock); in cryptodev_cb()
629 mtx_unlock(&cod->cse->lock); in cryptodev_cb()
635 cryptodev_op(struct csession *cse, const struct crypt_op *cop) in cryptodev_op() argument
648 if ((cop->len % cse->blocksize) != 0) { in cryptodev_op()
653 if (cop->mac && cse->hashsize == 0) { in cryptodev_op()
670 cod = cod_alloc(cse, 0, cop->len + cse->hashsize); in cryptodev_op()
673 crp = crypto_getreq(cse->cses, M_WAITOK); in cryptodev_op()
682 if (cse->hashsize) in cryptodev_op()
685 csp = crypto_get_params(cse->cses); in cryptodev_op()
703 (cop->iv == NULL && cop->len == cse->ivsize)) { in cryptodev_op()
737 if (cse->ivsize != 0 && cop->iv == NULL) { in cryptodev_op()
766 crypto_use_buf(crp, cod->buf, cop->len + cse->hashsize); in cryptodev_op()
768 crypto_use_output_buf(crp, cod->obuf, cop->len + cse->hashsize); in cryptodev_op()
773 if (cse->ivsize == 0) { in cryptodev_op()
778 error = copyin(cop->iv, crp->crp_iv, cse->ivsize); in cryptodev_op()
784 } else if (cse->ivsize != 0) { in cryptodev_op()
785 if (crp->crp_payload_length < cse->ivsize) { in cryptodev_op()
791 crp->crp_payload_length -= cse->ivsize; in cryptodev_op()
793 crp->crp_payload_start = cse->ivsize; in cryptodev_op()
794 dst += cse->ivsize; in cryptodev_op()
799 cse->hashsize); in cryptodev_op()
819 mtx_lock(&cse->lock); in cryptodev_op()
821 mtx_sleep(cod, &cse->lock, PWAIT, "crydev", 0); in cryptodev_op()
822 mtx_unlock(&cse->lock); in cryptodev_op()
849 crp->crp_digest_start, cop->mac, cse->hashsize); in cryptodev_op()
864 cryptodev_aead(struct csession *cse, struct crypt_aead *caead) in cryptodev_aead() argument
877 if ((caead->len % cse->blocksize) != 0) { in cryptodev_aead()
882 if (cse->hashsize == 0 || caead->tag == NULL) { in cryptodev_aead()
899 cod = cod_alloc(cse, caead->aadlen, caead->len + cse->hashsize); in cryptodev_aead()
902 crp = crypto_getreq(cse->cses, M_WAITOK); in cryptodev_aead()
933 csp = crypto_get_params(cse->cses); in cryptodev_aead()
960 cse->hashsize); in cryptodev_aead()
963 cse->hashsize); in cryptodev_aead()
977 if (cse->ivsize == 0) { in cryptodev_aead()
982 if (caead->ivlen != cse->ivsize) { in cryptodev_aead()
988 error = copyin(caead->iv, crp->crp_iv, cse->ivsize); in cryptodev_aead()
1002 cse->hashsize); in cryptodev_aead()
1022 mtx_lock(&cse->lock); in cryptodev_aead()
1024 mtx_sleep(cod, &cse->lock, PWAIT, "crydev", 0); in cryptodev_aead()
1025 mtx_unlock(&cse->lock); in cryptodev_aead()
1052 crp->crp_digest_start, caead->tag, cse->hashsize); in cryptodev_aead()
1091 struct csession *cse; in fcrypt_dtor() local
1093 while ((cse = TAILQ_FIRST(&fcr->csessions))) { in fcrypt_dtor()
1094 TAILQ_REMOVE(&fcr->csessions, cse, next); in fcrypt_dtor()
1095 KASSERT(refcount_load(&cse->refs) == 1, in fcrypt_dtor()
1096 ("%s: crypto session %p with %d refs", __func__, cse, in fcrypt_dtor()
1097 refcount_load(&cse->refs))); in fcrypt_dtor()
1098 cse_free(cse); in fcrypt_dtor()
1124 struct csession *cse; in crypto_ioctl() local
1215 cse = cse_find(fcr, cop->ses); in crypto_ioctl()
1216 if (cse == NULL) { in crypto_ioctl()
1220 error = cryptodev_op(cse, cop); in crypto_ioctl()
1221 cse_free(cse); in crypto_ioctl()
1228 cse = cse_find(fcr, caead->ses); in crypto_ioctl()
1229 if (cse == NULL) { in crypto_ioctl()
1233 error = cryptodev_aead(cse, caead); in crypto_ioctl()
1234 cse_free(cse); in crypto_ioctl()