Lines Matching refs:req
198 static int starfive_hash_copy_hash(struct ahash_request *req)
200 struct starfive_cryp_request_ctx *rctx = ahash_request_ctx(req);
201 struct starfive_cryp_ctx *ctx = crypto_ahash_ctx(crypto_ahash_reqtfm(req));
205 if (!req->result)
209 data = (u32 *)req->result;
223 err = starfive_hash_copy_hash(cryp->req.hreq);
228 crypto_finalize_hash_request(cryp->engine, cryp->req.hreq, err);
260 struct ahash_request *req = container_of(areq, struct ahash_request,
262 struct starfive_cryp_ctx *ctx = crypto_ahash_ctx(crypto_ahash_reqtfm(req));
271 static int starfive_hash_init(struct ahash_request *req)
273 struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
274 struct starfive_cryp_request_ctx *rctx = ahash_request_ctx(req);
279 req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP,
280 req->base.complete, req->base.data);
282 ahash_request_set_crypt(&rctx->ahash_fbk_req, req->src,
283 req->result, req->nbytes);
288 static int starfive_hash_update(struct ahash_request *req)
290 struct starfive_cryp_request_ctx *rctx = ahash_request_ctx(req);
291 struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
296 req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP,
297 req->base.complete, req->base.data);
299 ahash_request_set_crypt(&rctx->ahash_fbk_req, req->src,
300 req->result, req->nbytes);
305 static int starfive_hash_final(struct ahash_request *req)
307 struct starfive_cryp_request_ctx *rctx = ahash_request_ctx(req);
308 struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
313 req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP,
314 req->base.complete, req->base.data);
316 ahash_request_set_crypt(&rctx->ahash_fbk_req, req->src,
317 req->result, req->nbytes);
322 static int starfive_hash_finup(struct ahash_request *req)
324 struct starfive_cryp_request_ctx *rctx = ahash_request_ctx(req);
325 struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
330 req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP,
331 req->base.complete, req->base.data);
333 ahash_request_set_crypt(&rctx->ahash_fbk_req, req->src,
334 req->result, req->nbytes);
339 static int starfive_hash_digest_fb(struct ahash_request *req)
341 struct starfive_cryp_request_ctx *rctx = ahash_request_ctx(req);
342 struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
346 ahash_request_set_callback(&rctx->ahash_fbk_req, req->base.flags,
347 req->base.complete, req->base.data);
349 ahash_request_set_crypt(&rctx->ahash_fbk_req, req->src,
350 req->result, req->nbytes);
355 static int starfive_hash_digest(struct ahash_request *req)
357 struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
359 struct starfive_cryp_request_ctx *rctx = ahash_request_ctx(req);
364 cryp->req.hreq = req;
365 rctx->total = req->nbytes;
366 rctx->in_sg = req->src;
373 return starfive_hash_digest_fb(req);
375 return crypto_transfer_hash_request_to_engine(cryp->engine, req);
378 static int starfive_hash_export(struct ahash_request *req, void *out)
380 struct starfive_cryp_request_ctx *rctx = ahash_request_ctx(req);
381 struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
386 req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP,
387 req->base.complete, req->base.data);
392 static int starfive_hash_import(struct ahash_request *req, const void *in)
394 struct starfive_cryp_request_ctx *rctx = ahash_request_ctx(req);
395 struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
400 req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP,
401 req->base.complete, req->base.data);
446 struct ahash_request *req;
456 req = ahash_request_alloc(ahash_tfm, GFP_KERNEL);
457 if (!req) {
463 ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG,
475 ahash_request_set_crypt(req, &sg, ctx->key, keylen);
477 ret = crypto_wait_req(crypto_ahash_digest(req), &wait);
481 ahash_request_free(req);