Lines Matching refs:cse

227 	struct csession *cse;  in cryptof_ioctl()  local
313 cse = csefind(fcr, ses); in cryptof_ioctl()
314 if (cse == NULL) { in cryptof_ioctl()
318 csedelete(fcr, cse); in cryptof_ioctl()
320 csefree(cse); in cryptof_ioctl()
345 cse = csefind(fcr, cop->ses); in cryptof_ioctl()
347 if (cse == NULL) { in cryptof_ioctl()
351 error = cryptodev_op(cse, cop, curlwp); in cryptof_ioctl()
454 cryptodev_op(struct csession *cse, struct crypt_op *cop, struct lwp *l) in cryptodev_op() argument
466 if (cse->txform) { in cryptodev_op()
467 if (cop->len < cse->txform->blocksize in cryptodev_op()
468 + (cop->iv ? 0 : cse->txform->ivsize) || in cryptodev_op()
469 (cop->len - (cop->iv ? 0 : cse->txform->ivsize)) in cryptodev_op()
470 % cse->txform->blocksize != 0) in cryptodev_op()
474 if (cse->tcomp == NULL && cse->txform == NULL && cse->thash == NULL) in cryptodev_op()
478 CRYPTO_SESID2LID(cse->sid), iov_len); in cryptodev_op()
479 if ((cse->tcomp) && cop->dst_len) { in cryptodev_op()
487 (void)memset(&cse->uio, 0, sizeof(cse->uio)); in cryptodev_op()
488 cse->uio.uio_iovcnt = 1; in cryptodev_op()
489 cse->uio.uio_resid = 0; in cryptodev_op()
490 cse->uio.uio_rw = UIO_WRITE; in cryptodev_op()
491 cse->uio.uio_iov = cse->iovec; in cryptodev_op()
492 UIO_SETUP_SYSSPACE(&cse->uio); in cryptodev_op()
493 memset(&cse->iovec, 0, sizeof(cse->iovec)); in cryptodev_op()
497 cse->uio.uio_iov[0].iov_len = iov_len; in cryptodev_op()
499 cse->uio.uio_iov[0].iov_base = kmem_alloc(iov_len, KM_SLEEP); in cryptodev_op()
500 cse->uio.uio_resid = cse->uio.uio_iov[0].iov_len; in cryptodev_op()
502 CRYPTO_SESID2LID(cse->sid), in cryptodev_op()
503 cse->uio.uio_iov[0].iov_base, iov_len); in cryptodev_op()
505 crp = crypto_getreq((cse->tcomp != NULL) + (cse->txform != NULL) + (cse->thash != NULL)); in cryptodev_op()
510 DPRINTF("lid[%u]: crp %p\n", CRYPTO_SESID2LID(cse->sid), crp); in cryptodev_op()
519 if (cse->tcomp) { in cryptodev_op()
523 if (cse->thash) { in cryptodev_op()
525 if (cse->txform && crda) in cryptodev_op()
528 if (cse->txform) { in cryptodev_op()
530 } else if (!cse->tcomp) { in cryptodev_op()
537 CRYPTO_SESID2LID(cse->sid), in cryptodev_op()
538 cse->uio.uio_iov[0].iov_len, in cryptodev_op()
541 if ((error = copyin(cop->src, cse->uio.uio_iov[0].iov_base, cop->len))) in cryptodev_op()
565 crdc->crd_alg = cse->comp_alg; in cryptodev_op()
569 CRYPTO_SESID2LID(cse->sid), crdc->crd_alg); in cryptodev_op()
577 crda->crd_alg = cse->mac; in cryptodev_op()
578 crda->crd_key = cse->mackey; in cryptodev_op()
579 crda->crd_klen = cse->mackeylen * 8; in cryptodev_op()
597 if (cse->cipher == CRYPTO_AES_GCM_16 && crda) in cryptodev_op()
599 else if (cse->cipher == CRYPTO_AES_GMAC) in cryptodev_op()
602 crde->crd_alg = cse->cipher; in cryptodev_op()
603 crde->crd_key = cse->key; in cryptodev_op()
604 crde->crd_klen = cse->keylen * 8; in cryptodev_op()
611 crp->crp_buf = (void *)&cse->uio; in cryptodev_op()
613 crp->crp_sid = cse->sid; in cryptodev_op()
614 crp->crp_opaque = cse; in cryptodev_op()
621 if (cse->txform->ivsize == 0) { in cryptodev_op()
625 if ((error = copyin(cop->iv, cse->tmp_iv, in cryptodev_op()
626 cse->txform->ivsize))) in cryptodev_op()
628 (void)memcpy(crde->crd_iv, cse->tmp_iv, cse->txform->ivsize); in cryptodev_op()
632 if (cse->txform->ivsize == 0) { in cryptodev_op()
637 crde->crd_skip = cse->txform->ivsize; in cryptodev_op()
638 crde->crd_len -= cse->txform->ivsize; in cryptodev_op()
647 crp->crp_mac = cse->tmp_mac; in cryptodev_op()
655 (uint32_t)cse->sid, &crp->crp_cv, crp); in cryptodev_op()
667 if (cse->error) { in cryptodev_op()
668 DPRINTF("cse->error %d\n", cse->error); in cryptodev_op()
669 error = cse->error; in cryptodev_op()
687 (error = copyout(cse->uio.uio_iov[0].iov_base, cop->dst, dst_len))) in cryptodev_op()
694 (error = copyout(crp->crp_mac, cop->mac, cse->thash->authsize))) { in cryptodev_op()
704 if (cse->uio.uio_iov[0].iov_base) { in cryptodev_op()
705 kmem_free(cse->uio.uio_iov[0].iov_base,iov_len); in cryptodev_op()
714 struct csession *cse = crp->crp_opaque; in cryptodev_cb() local
717 cse->error = crp->crp_etype; in cryptodev_cb()
726 struct csession *cse = crp->crp_opaque; in cryptodev_mcb() local
729 cse->error = crp->crp_etype; in cryptodev_mcb()
896 struct csession *cse; in cryptof_close() local
899 while ((cse = TAILQ_FIRST(&fcr->csessions))) { in cryptof_close()
900 TAILQ_REMOVE(&fcr->csessions, cse, next); in cryptof_close()
902 csefree(cse); in cryptof_close()
924 struct csession *cse, *cnext, *ret = NULL; in csefind() local
927 TAILQ_FOREACH_SAFE(cse, &fcr->csessions, next, cnext) in csefind()
928 if (cse->ses == ses) in csefind()
929 ret = cse; in csefind()
938 struct csession *cse, *cnext; in csedelete() local
942 TAILQ_FOREACH_SAFE(cse, &fcr->csessions, next, cnext) { in csedelete()
943 if (cse == cse_del) { in csedelete()
944 TAILQ_REMOVE(&fcr->csessions, cse, next); in csedelete()
952 cseadd(struct fcrypt *fcr, struct csession *cse) in cseadd() argument
957 TAILQ_INSERT_TAIL(&fcr->csessions, cse, next); in cseadd()
958 cse->ses = fcr->sesn++; in cseadd()
960 return cse; in cseadd()
969 struct csession *cse; in csecreate() local
971 cse = pool_get(&csepl, PR_NOWAIT); in csecreate()
972 if (cse == NULL) in csecreate()
974 cse->key = key; in csecreate()
975 cse->keylen = keylen/8; in csecreate()
976 cse->mackey = mackey; in csecreate()
977 cse->mackeylen = mackeylen/8; in csecreate()
978 cse->sid = sid; in csecreate()
979 cse->cipher = cipher; in csecreate()
980 cse->mac = mac; in csecreate()
981 cse->comp_alg = comp_alg; in csecreate()
982 cse->txform = txform; in csecreate()
983 cse->thash = thash; in csecreate()
984 cse->tcomp = tcomp; in csecreate()
985 cse->error = 0; in csecreate()
986 if (cseadd(fcr, cse)) in csecreate()
987 return cse; in csecreate()
989 pool_put(&csepl, cse); in csecreate()
995 csefree(struct csession *cse) in csefree() argument
998 crypto_freesession(cse->sid); in csefree()
999 if (cse->key) in csefree()
1000 free(cse->key, M_XDATA); in csefree()
1001 if (cse->mackey) in csefree()
1002 free(cse->mackey, M_XDATA); in csefree()
1003 pool_put(&csepl, cse); in csefree()
1081 struct csession *cse; in cryptodev_mop() local
1087 cse = csefind(fcr, cnop[req].ses); in cryptodev_mop()
1088 if (cse == NULL) { in cryptodev_mop()
1101 if (cse->txform) { in cryptodev_mop()
1102 if (cnop[req].len < cse->txform->blocksize - in cryptodev_mop()
1103 (cnop[req].iv ? 0 : cse->txform->ivsize) || in cryptodev_mop()
1105 (cnop[req].iv ? 0 : cse->txform->ivsize)) in cryptodev_mop()
1106 % cse->txform->blocksize) { in cryptodev_mop()
1112 if (cse->txform == NULL && in cryptodev_mop()
1113 cse->thash == NULL && in cryptodev_mop()
1114 cse->tcomp == NULL) { in cryptodev_mop()
1125 crp = crypto_getreq((cse->txform != NULL) + in cryptodev_mop()
1126 (cse->thash != NULL) + in cryptodev_mop()
1127 (cse->tcomp != NULL)); in cryptodev_mop()
1135 if ((cse->tcomp) && cnop[req].dst_len) { in cryptodev_mop()
1155 if (cse->tcomp) { in cryptodev_mop()
1159 if (cse->thash) { in cryptodev_mop()
1161 if (cse->txform && crda) in cryptodev_mop()
1164 if (cse->txform) { in cryptodev_mop()
1166 } else if (!cse->tcomp) { in cryptodev_mop()
1196 crdc->crd_alg = cse->comp_alg; in cryptodev_mop()
1201 (uint32_t)cse->sid, crdc->crd_alg, in cryptodev_mop()
1210 crda->crd_alg = cse->mac; in cryptodev_mop()
1211 crda->crd_key = cse->mackey; in cryptodev_mop()
1212 crda->crd_klen = cse->mackeylen * 8; in cryptodev_mop()
1223 crde->crd_alg = cse->cipher; in cryptodev_mop()
1236 crde->crd_key = cse->key; in cryptodev_mop()
1237 crde->crd_klen = cse->keylen * 8; in cryptodev_mop()
1245 crp->crp_sid = cse->sid; in cryptodev_mop()
1246 crp->crp_opaque = cse; in cryptodev_mop()
1260 if (cse->cipher == CRYPTO_ARC4) { /* XXX use flag? */ in cryptodev_mop()
1265 cse->txform->ivsize))) { in cryptodev_mop()
1270 cse->txform->ivsize); in cryptodev_mop()
1274 if (cse->cipher == CRYPTO_ARC4) { /* XXX use flag? */ in cryptodev_mop()
1279 crde->crd_skip = cse->txform->ivsize; in cryptodev_mop()
1280 crde->crd_len -= cse->txform->ivsize; in cryptodev_mop()
1289 crp->crp_mac=cse->tmp_mac; in cryptodev_mop()
1463 struct csession *cse; in cryptodev_session() local
1658 cse = csecreate(fcr, sid, crie.cri_key, crie.cri_klen, in cryptodev_session()
1661 if (cse != NULL) { in cryptodev_session()
1662 sop->ses = cse->ses; in cryptodev_session()
1713 struct csession *cse; in cryptodev_msessionfin() local
1718 cse = csefind(fcr, sesid[req]); in cryptodev_msessionfin()
1719 if (cse == NULL) in cryptodev_msessionfin()
1721 csedelete(fcr, cse); in cryptodev_msessionfin()
1723 csefree(cse); in cryptodev_msessionfin()
1740 struct csession *cse; in cryptodev_getmstatus() local
1763 cse = (struct csession *)crp->crp_opaque; in cryptodev_getmstatus()
1766 cse = csefind(fcr, cse->ses); in cryptodev_getmstatus()
1767 if (cse != NULL) { in cryptodev_getmstatus()
1795 cse = (struct csession *)crp->crp_opaque; in cryptodev_getmstatus()
1805 if (cse->error) { in cryptodev_getmstatus()
1806 crypt_res[req].status = cse->error; in cryptodev_getmstatus()
1817 cse->thash->authsize))) in cryptodev_getmstatus()
1886 struct csession *cse; in cryptodev_getstatus() local
1894 cse = (struct csession *)crp->crp_opaque; in cryptodev_getstatus()
1896 cse = csefind(fcr, cse->ses); in cryptodev_getstatus()
1897 if (cse == NULL) { in cryptodev_getstatus()
1908 if (cse->error) { in cryptodev_getstatus()
1909 crypt_res->status = cse->error; in cryptodev_getstatus()
1920 cse->thash->authsize))) in cryptodev_getstatus()