Lines Matching refs:req

174 static int pkcs1pad_encrypt_sign_complete(struct akcipher_request *req, int err)
176 struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req);
178 struct pkcs1pad_request *req_ctx = akcipher_request_ctx(req);
198 sg_copy_to_buffer(req->dst, sg_nents_for_len(req->dst, len),
200 sg_copy_from_buffer(req->dst,
201 sg_nents_for_len(req->dst, ctx->key_size),
206 req->dst_len = ctx->key_size;
215 struct akcipher_request *req = data;
220 err = pkcs1pad_encrypt_sign_complete(req, err);
223 akcipher_request_complete(req, err);
226 static int pkcs1pad_encrypt(struct akcipher_request *req)
228 struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req);
230 struct pkcs1pad_request *req_ctx = akcipher_request_ctx(req);
237 if (req->src_len > ctx->key_size - 11)
240 if (req->dst_len < ctx->key_size) {
241 req->dst_len = ctx->key_size;
245 req_ctx->in_buf = kmalloc(ctx->key_size - 1 - req->src_len,
250 ps_end = ctx->key_size - req->src_len - 2;
257 ctx->key_size - 1 - req->src_len, req->src);
260 akcipher_request_set_callback(&req_ctx->child_req, req->base.flags,
261 pkcs1pad_encrypt_sign_complete_cb, req);
265 req->dst, ctx->key_size - 1, req->dst_len);
269 return pkcs1pad_encrypt_sign_complete(req, err);
274 static int pkcs1pad_decrypt_complete(struct akcipher_request *req, int err)
276 struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req);
278 struct pkcs1pad_request *req_ctx = akcipher_request_ctx(req);
313 if (req->dst_len < dst_len - pos)
315 req->dst_len = dst_len - pos;
318 sg_copy_from_buffer(req->dst,
319 sg_nents_for_len(req->dst, req->dst_len),
320 out_buf + pos, req->dst_len);
330 struct akcipher_request *req = data;
335 err = pkcs1pad_decrypt_complete(req, err);
338 akcipher_request_complete(req, err);
341 static int pkcs1pad_decrypt(struct akcipher_request *req)
343 struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req);
345 struct pkcs1pad_request *req_ctx = akcipher_request_ctx(req);
348 if (!ctx->key_size || req->src_len != ctx->key_size)
359 akcipher_request_set_callback(&req_ctx->child_req, req->base.flags,
360 pkcs1pad_decrypt_complete_cb, req);
363 akcipher_request_set_crypt(&req_ctx->child_req, req->src,
364 req_ctx->out_sg, req->src_len,
369 return pkcs1pad_decrypt_complete(req, err);
374 static int pkcs1pad_sign(struct akcipher_request *req)
376 struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req);
378 struct pkcs1pad_request *req_ctx = akcipher_request_ctx(req);
391 if (req->src_len + digest_info_size > ctx->key_size - 11)
394 if (req->dst_len < ctx->key_size) {
395 req->dst_len = ctx->key_size;
399 req_ctx->in_buf = kmalloc(ctx->key_size - 1 - req->src_len,
404 ps_end = ctx->key_size - digest_info_size - req->src_len - 2;
414 ctx->key_size - 1 - req->src_len, req->src);
417 akcipher_request_set_callback(&req_ctx->child_req, req->base.flags,
418 pkcs1pad_encrypt_sign_complete_cb, req);
422 req->dst, ctx->key_size - 1, req->dst_len);
426 return pkcs1pad_encrypt_sign_complete(req, err);
431 static int pkcs1pad_verify_complete(struct akcipher_request *req, int err)
433 struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req);
435 struct pkcs1pad_request *req_ctx = akcipher_request_ctx(req);
439 const unsigned int sig_size = req->src_len;
440 const unsigned int digest_size = req->dst_len;
489 req->dst_len = dst_len - pos;
493 sg_pcopy_to_buffer(req->src,
494 sg_nents_for_len(req->src, sig_size + digest_size),
509 struct akcipher_request *req = data;
514 err = pkcs1pad_verify_complete(req, err);
517 akcipher_request_complete(req, err);
528 static int pkcs1pad_verify(struct akcipher_request *req)
530 struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req);
532 struct pkcs1pad_request *req_ctx = akcipher_request_ctx(req);
533 const unsigned int sig_size = req->src_len;
534 const unsigned int digest_size = req->dst_len;
537 if (WARN_ON(req->dst) || WARN_ON(!digest_size) ||
549 akcipher_request_set_callback(&req_ctx->child_req, req->base.flags,
550 pkcs1pad_verify_complete_cb, req);
553 akcipher_request_set_crypt(&req_ctx->child_req, req->src,
558 return pkcs1pad_verify_complete(req, err);