Lines Matching defs:cse

288 	struct csession *cse;
382 struct csession *cse;
582 cse = csecreate(fcr, sid, crie.cri_key, crie.cri_klen,
586 if (cse == NULL) {
593 sop->ses = cse->ses;
600 SES2(sop)->crid = CRYPTO_SESID2HID(cse->sid);
634 cse = csefind(fcr, cop->ses);
635 if (cse == NULL) {
639 error = cryptodev_op(cse, cop, active_cred, td);
640 (void)csefree(cse);
701 cse = csefind(fcr, caead->ses);
702 if (cse == NULL) {
706 error = cryptodev_aead(cse, caead, active_cred, td);
707 (void)csefree(cse);
721 cod_alloc(struct csession *cse, size_t len, struct thread *td)
728 cod->cse = cse;
750 cryptodev_warn(struct csession *cse)
755 switch (cse->cipher) {
782 switch (cse->mac) {
792 struct csession *cse,
807 if (cse->txform) {
808 if (cop->len == 0 || (cop->len % cse->txform->blocksize) != 0) {
814 if (cse->thash)
815 cod = cod_alloc(cse, cop->len + cse->thash->hashsize, td);
817 cod = cod_alloc(cse, cop->len, td);
819 crp = crypto_getreq((cse->txform != NULL) + (cse->thash != NULL));
826 if (cse->thash && cse->txform) {
834 } else if (cse->thash) {
836 } else if (cse->txform) {
855 crda->crd_alg = cse->mac;
856 crda->crd_key = cse->mackey;
857 crda->crd_klen = cse->mackeylen * 8;
868 crde->crd_alg = cse->cipher;
869 crde->crd_key = cse->key;
870 crde->crd_klen = cse->keylen * 8;
878 crp->crp_sid = cse->sid;
887 if (cse->cipher == CRYPTO_ARC4) { /* XXX use flag? */
893 cse->txform->blocksize))) {
899 } else if (cse->cipher == CRYPTO_ARC4) { /* XXX use flag? */
903 crde->crd_skip = cse->txform->blocksize;
904 crde->crd_len -= cse->txform->blocksize;
912 cryptodev_warn(cse);
928 mtx_lock(&cse->lock);
930 mtx_sleep(cod, &cse->lock, PWAIT, "crydev", 0);
931 mtx_unlock(&cse->lock);
955 cop->mac, cse->thash->hashsize))) {
971 struct csession *cse,
986 if (cse->txform == NULL || cse->thash == NULL || caead->tag == NULL ||
987 (caead->len % cse->txform->blocksize) != 0) {
992 cod = cod_alloc(cse, caead->aadlen + caead->len + cse->thash->hashsize,
1028 if (cse->cipher == CRYPTO_AES_NIST_GCM_16)
1034 crda->crd_alg = cse->mac;
1035 crda->crd_key = cse->mackey;
1036 crda->crd_klen = cse->mackeylen * 8;
1046 crde->crd_alg = cse->cipher;
1047 crde->crd_key = cse->key;
1048 crde->crd_klen = cse->keylen * 8;
1055 crp->crp_sid = cse->sid;
1072 crde->crd_skip += cse->txform->blocksize;
1073 crde->crd_len -= cse->txform->blocksize;
1077 caead->len + caead->aadlen, cse->thash->hashsize))) {
1081 cryptodev_warn(cse);
1096 mtx_lock(&cse->lock);
1098 mtx_sleep(cod, &cse->lock, PWAIT, "crydev", 0);
1099 mtx_unlock(&cse->lock);
1122 caead->aadlen + caead->len, caead->tag, cse->thash->hashsize))) {
1145 mtx_lock(&cod->cse->lock);
1147 mtx_unlock(&cod->cse->lock);
1321 struct csession *cse;
1323 while ((cse = TAILQ_FIRST(&fcr->csessions))) {
1324 TAILQ_REMOVE(&fcr->csessions, cse, next);
1325 KASSERT(cse->refs == 1,
1326 ("%s: crypto session %p with %d refs", __func__, cse,
1327 cse->refs));
1328 (void)csefree(cse);
1346 struct csession *cse;
1349 TAILQ_FOREACH(cse, &fcr->csessions, next) {
1350 if (cse->ses == ses) {
1351 refcount_acquire(&cse->refs);
1353 return (cse);
1363 struct csession *cse;
1366 TAILQ_FOREACH(cse, &fcr->csessions, next) {
1367 if (cse->ses == ses) {
1368 TAILQ_REMOVE(&fcr->csessions, cse, next);
1370 return (csefree(cse));
1382 struct csession *cse;
1384 cse = malloc(sizeof(struct csession), M_XDATA, M_NOWAIT | M_ZERO);
1385 if (cse == NULL)
1387 mtx_init(&cse->lock, "cryptodev", "crypto session lock", MTX_DEF);
1388 refcount_init(&cse->refs, 1);
1389 cse->key = key;
1390 cse->keylen = keylen/8;
1391 cse->mackey = mackey;
1392 cse->mackeylen = mackeylen/8;
1393 cse->sid = sid;
1394 cse->cipher = cipher;
1395 cse->mac = mac;
1396 cse->txform = txform;
1397 cse->thash = thash;
1399 TAILQ_INSERT_TAIL(&fcr->csessions, cse, next);
1400 cse->ses = fcr->sesn++;
1402 return (cse);
1406 csefree(struct csession *cse)
1410 if (!refcount_release(&cse->refs))
1412 error = crypto_freesession(cse->sid);
1413 mtx_destroy(&cse->lock);
1414 if (cse->key)
1415 free(cse->key, M_XDATA);
1416 if (cse->mackey)
1417 free(cse->mackey, M_XDATA);
1418 free(cse, M_XDATA);