Lines Matching refs:req
61 struct aead_request *req)
63 unsigned long align = crypto_aead_alignmask(crypto_aead_reqtfm(req));
65 return (void *)PTR_ALIGN((u8 *)aead_request_ctx(req), align + 1);
126 static int format_input(u8 *info, struct aead_request *req,
129 struct crypto_aead *aead = crypto_aead_reqtfm(req);
130 unsigned int lp = req->iv[0];
136 memcpy(info, req->iv, 16);
142 if (req->assoclen)
167 static int crypto_ccm_auth(struct aead_request *req, struct scatterlist *plain,
170 struct crypto_ccm_req_priv_ctx *pctx = crypto_ccm_reqctx(req);
171 struct crypto_aead *aead = crypto_aead_reqtfm(req);
174 unsigned int assoclen = req->assoclen;
181 err = format_input(odata, req, cryptlen);
192 sg_chain(sg, 3, req->src);
195 sg_chain(sg, 2, req->src);
228 struct aead_request *req = areq->data;
229 struct crypto_aead *aead = crypto_aead_reqtfm(req);
230 struct crypto_ccm_req_priv_ctx *pctx = crypto_ccm_reqctx(req);
234 scatterwalk_map_and_copy(odata, req->dst,
235 req->assoclen + req->cryptlen,
237 aead_request_complete(req, err);
249 static int crypto_ccm_init_crypt(struct aead_request *req, u8 *tag)
251 struct crypto_ccm_req_priv_ctx *pctx = crypto_ccm_reqctx(req);
253 u8 *iv = req->iv;
260 pctx->flags = aead_request_flags(req);
269 sg = scatterwalk_ffwd(pctx->src + 1, req->src, req->assoclen);
273 if (req->src != req->dst) {
276 sg = scatterwalk_ffwd(pctx->dst + 1, req->dst, req->assoclen);
284 static int crypto_ccm_encrypt(struct aead_request *req)
286 struct crypto_aead *aead = crypto_aead_reqtfm(req);
288 struct crypto_ccm_req_priv_ctx *pctx = crypto_ccm_reqctx(req);
291 unsigned int cryptlen = req->cryptlen;
293 u8 *iv = req->iv;
296 err = crypto_ccm_init_crypt(req, odata);
300 err = crypto_ccm_auth(req, sg_next(pctx->src), cryptlen);
305 if (req->src != req->dst)
310 crypto_ccm_encrypt_done, req);
325 struct aead_request *req = areq->data;
326 struct crypto_ccm_req_priv_ctx *pctx = crypto_ccm_reqctx(req);
327 struct crypto_aead *aead = crypto_aead_reqtfm(req);
329 unsigned int cryptlen = req->cryptlen - authsize;
334 dst = sg_next(req->src == req->dst ? pctx->src : pctx->dst);
337 err = crypto_ccm_auth(req, dst, cryptlen);
341 aead_request_complete(req, err);
344 static int crypto_ccm_decrypt(struct aead_request *req)
346 struct crypto_aead *aead = crypto_aead_reqtfm(req);
348 struct crypto_ccm_req_priv_ctx *pctx = crypto_ccm_reqctx(req);
352 unsigned int cryptlen = req->cryptlen;
360 err = crypto_ccm_init_crypt(req, authtag);
368 if (req->src != req->dst)
371 memcpy(iv, req->iv, 16);
375 crypto_ccm_decrypt_done, req);
381 err = crypto_ccm_auth(req, sg_next(dst), cryptlen);
603 static struct aead_request *crypto_rfc4309_crypt(struct aead_request *req)
605 struct crypto_rfc4309_req_ctx *rctx = aead_request_ctx(req);
607 struct crypto_aead *aead = crypto_aead_reqtfm(req);
618 memcpy(iv + 4, req->iv, 8);
620 scatterwalk_map_and_copy(iv + 16, req->src, 0, req->assoclen - 8, 0);
623 sg_set_buf(rctx->src, iv + 16, req->assoclen - 8);
624 sg = scatterwalk_ffwd(rctx->src + 1, req->src, req->assoclen);
628 if (req->src != req->dst) {
630 sg_set_buf(rctx->dst, iv + 16, req->assoclen - 8);
631 sg = scatterwalk_ffwd(rctx->dst + 1, req->dst, req->assoclen);
637 aead_request_set_callback(subreq, req->base.flags, req->base.complete,
638 req->base.data);
640 req->src == req->dst ? rctx->src : rctx->dst,
641 req->cryptlen, iv);
642 aead_request_set_ad(subreq, req->assoclen - 8);
647 static int crypto_rfc4309_encrypt(struct aead_request *req)
649 if (req->assoclen != 16 && req->assoclen != 20)
652 req = crypto_rfc4309_crypt(req);
654 return crypto_aead_encrypt(req);
657 static int crypto_rfc4309_decrypt(struct aead_request *req)
659 if (req->assoclen != 16 && req->assoclen != 20)
662 req = crypto_rfc4309_crypt(req);
664 return crypto_aead_decrypt(req);