Lines Matching refs:ctx

59 	struct aead_ctx *ctx = ask->private;  in aead_sndbuf()  local
62 ctx->used, 0); in aead_sndbuf()
70 static inline bool aead_sufficient_data(struct aead_ctx *ctx) in aead_sufficient_data() argument
72 unsigned as = crypto_aead_authsize(crypto_aead_reqtfm(&ctx->aead_req)); in aead_sufficient_data()
74 return (ctx->used >= (ctx->aead_assoclen + (ctx->enc ? 0 : as))); in aead_sufficient_data()
80 struct aead_ctx *ctx = ask->private; in aead_put_sgl() local
81 struct aead_sg_list *sgl = &ctx->tsgl; in aead_put_sgl()
93 ctx->used = 0; in aead_put_sgl()
94 ctx->more = 0; in aead_put_sgl()
95 ctx->merge = 0; in aead_put_sgl()
118 struct aead_ctx *ctx = ask->private; in aead_wait_for_data() local
133 if (sk_wait_event(sk, &timeout, !ctx->more)) { in aead_wait_for_data()
148 struct aead_ctx *ctx = ask->private; in aead_data_wakeup() local
151 if (ctx->more) in aead_data_wakeup()
153 if (!ctx->used) in aead_data_wakeup()
170 struct aead_ctx *ctx = ask->private; in aead_sendmsg() local
172 crypto_aead_ivsize(crypto_aead_reqtfm(&ctx->aead_req)); in aead_sendmsg()
173 struct aead_sg_list *sgl = &ctx->tsgl; in aead_sendmsg()
202 if (!ctx->more && ctx->used) in aead_sendmsg()
206 ctx->enc = enc; in aead_sendmsg()
208 memcpy(ctx->iv, con.iv->iv, ivsize); in aead_sendmsg()
210 ctx->aead_assoclen = con.aead_assoclen; in aead_sendmsg()
218 if (ctx->merge) { in aead_sendmsg()
229 ctx->merge = (sg->offset + sg->length) & in aead_sendmsg()
232 ctx->used += len; in aead_sendmsg()
275 ctx->used += plen; in aead_sendmsg()
279 ctx->merge = plen & (PAGE_SIZE - 1); in aead_sendmsg()
285 ctx->more = msg->msg_flags & MSG_MORE; in aead_sendmsg()
286 if (!ctx->more && !aead_sufficient_data(ctx)) { in aead_sendmsg()
303 struct aead_ctx *ctx = ask->private; in aead_sendpage() local
304 struct aead_sg_list *sgl = &ctx->tsgl; in aead_sendpage()
314 if (!ctx->more && ctx->used) in aead_sendpage()
327 ctx->merge = 0; in aead_sendpage()
332 ctx->used += size; in aead_sendpage()
337 ctx->more = flags & MSG_MORE; in aead_sendpage()
338 if (!ctx->more && !aead_sufficient_data(ctx)) { in aead_sendpage()
354 struct aead_ctx *ctx = ask->private; in aead_recvmsg() local
355 unsigned bs = crypto_aead_blocksize(crypto_aead_reqtfm(&ctx->aead_req)); in aead_recvmsg()
356 unsigned as = crypto_aead_authsize(crypto_aead_reqtfm(&ctx->aead_req)); in aead_recvmsg()
357 struct aead_sg_list *sgl = &ctx->tsgl; in aead_recvmsg()
389 if (ctx->more) { in aead_recvmsg()
395 used = ctx->used; in aead_recvmsg()
406 if (!aead_sufficient_data(ctx)) in aead_recvmsg()
413 used -= ctx->aead_assoclen; in aead_recvmsg()
415 if (ctx->enc) { in aead_recvmsg()
433 err = af_alg_make_sg(&ctx->rsgl[cnt], &msg->msg_iter, in aead_recvmsg()
440 af_alg_link_sg(&ctx->rsgl[cnt-1], &ctx->rsgl[cnt]); in aead_recvmsg()
455 assoclen = ctx->aead_assoclen; in aead_recvmsg()
462 for (i = 0; i < ctx->tsgl.cur; i++) { in aead_recvmsg()
469 if (i >= ctx->tsgl.cur) in aead_recvmsg()
492 aead_request_set_assoc(&ctx->aead_req, assoc, ctx->aead_assoclen); in aead_recvmsg()
493 aead_request_set_crypt(&ctx->aead_req, sg, ctx->rsgl[0].sg, used, in aead_recvmsg()
494 ctx->iv); in aead_recvmsg()
496 err = af_alg_wait_for_completion(ctx->enc ? in aead_recvmsg()
497 crypto_aead_encrypt(&ctx->aead_req) : in aead_recvmsg()
498 crypto_aead_decrypt(&ctx->aead_req), in aead_recvmsg()
499 &ctx->completion); in aead_recvmsg()
514 af_alg_free_sg(&ctx->rsgl[i]); in aead_recvmsg()
527 struct aead_ctx *ctx = ask->private; in aead_poll() local
533 if (!ctx->more) in aead_poll()
587 struct aead_ctx *ctx = ask->private; in aead_sock_destruct() local
589 crypto_aead_reqtfm(&ctx->aead_req)); in aead_sock_destruct()
592 sock_kzfree_s(sk, ctx->iv, ivlen); in aead_sock_destruct()
593 sock_kfree_s(sk, ctx, ctx->len); in aead_sock_destruct()
599 struct aead_ctx *ctx; in aead_accept_parent() local
601 unsigned int len = sizeof(*ctx) + crypto_aead_reqsize(private); in aead_accept_parent()
604 ctx = sock_kmalloc(sk, len, GFP_KERNEL); in aead_accept_parent()
605 if (!ctx) in aead_accept_parent()
607 memset(ctx, 0, len); in aead_accept_parent()
609 ctx->iv = sock_kmalloc(sk, ivlen, GFP_KERNEL); in aead_accept_parent()
610 if (!ctx->iv) { in aead_accept_parent()
611 sock_kfree_s(sk, ctx, len); in aead_accept_parent()
614 memset(ctx->iv, 0, ivlen); in aead_accept_parent()
616 ctx->len = len; in aead_accept_parent()
617 ctx->used = 0; in aead_accept_parent()
618 ctx->more = 0; in aead_accept_parent()
619 ctx->merge = 0; in aead_accept_parent()
620 ctx->enc = 0; in aead_accept_parent()
621 ctx->tsgl.cur = 0; in aead_accept_parent()
622 ctx->aead_assoclen = 0; in aead_accept_parent()
623 af_alg_init_completion(&ctx->completion); in aead_accept_parent()
624 sg_init_table(ctx->tsgl.sg, ALG_MAX_PAGES); in aead_accept_parent()
626 ask->private = ctx; in aead_accept_parent()
628 aead_request_set_tfm(&ctx->aead_req, private); in aead_accept_parent()
629 aead_request_set_callback(&ctx->aead_req, CRYPTO_TFM_REQ_MAY_BACKLOG, in aead_accept_parent()
630 af_alg_complete, &ctx->completion); in aead_accept_parent()