Lines Matching refs:req
155 static int ecb_encrypt(struct skcipher_request *req) in ecb_encrypt() argument
157 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); in ecb_encrypt()
163 err = skcipher_walk_virt(&walk, req, false); in ecb_encrypt()
177 static int ecb_decrypt(struct skcipher_request *req) in ecb_decrypt() argument
179 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); in ecb_decrypt()
185 err = skcipher_walk_virt(&walk, req, false); in ecb_decrypt()
199 static int cbc_encrypt(struct skcipher_request *req) in cbc_encrypt() argument
201 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); in cbc_encrypt()
207 err = skcipher_walk_virt(&walk, req, false); in cbc_encrypt()
221 static int cbc_decrypt(struct skcipher_request *req) in cbc_decrypt() argument
223 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); in cbc_decrypt()
229 err = skcipher_walk_virt(&walk, req, false); in cbc_decrypt()
243 static int cts_cbc_encrypt(struct skcipher_request *req) in cts_cbc_encrypt() argument
245 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); in cts_cbc_encrypt()
247 int cbc_blocks = DIV_ROUND_UP(req->cryptlen, AES_BLOCK_SIZE) - 2; in cts_cbc_encrypt()
248 struct scatterlist *src = req->src, *dst = req->dst; in cts_cbc_encrypt()
255 skcipher_request_set_callback(&subreq, skcipher_request_flags(req), in cts_cbc_encrypt()
258 if (req->cryptlen <= AES_BLOCK_SIZE) { in cts_cbc_encrypt()
259 if (req->cryptlen < AES_BLOCK_SIZE) in cts_cbc_encrypt()
265 skcipher_request_set_crypt(&subreq, req->src, req->dst, in cts_cbc_encrypt()
267 req->iv); in cts_cbc_encrypt()
273 if (req->cryptlen == AES_BLOCK_SIZE) in cts_cbc_encrypt()
276 dst = src = scatterwalk_ffwd(sg_src, req->src, subreq.cryptlen); in cts_cbc_encrypt()
277 if (req->dst != req->src) in cts_cbc_encrypt()
278 dst = scatterwalk_ffwd(sg_dst, req->dst, in cts_cbc_encrypt()
284 req->cryptlen - cbc_blocks * AES_BLOCK_SIZE, in cts_cbc_encrypt()
285 req->iv); in cts_cbc_encrypt()
299 static int cts_cbc_decrypt(struct skcipher_request *req) in cts_cbc_decrypt() argument
301 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); in cts_cbc_decrypt()
303 int cbc_blocks = DIV_ROUND_UP(req->cryptlen, AES_BLOCK_SIZE) - 2; in cts_cbc_decrypt()
304 struct scatterlist *src = req->src, *dst = req->dst; in cts_cbc_decrypt()
311 skcipher_request_set_callback(&subreq, skcipher_request_flags(req), in cts_cbc_decrypt()
314 if (req->cryptlen <= AES_BLOCK_SIZE) { in cts_cbc_decrypt()
315 if (req->cryptlen < AES_BLOCK_SIZE) in cts_cbc_decrypt()
321 skcipher_request_set_crypt(&subreq, req->src, req->dst, in cts_cbc_decrypt()
323 req->iv); in cts_cbc_decrypt()
329 if (req->cryptlen == AES_BLOCK_SIZE) in cts_cbc_decrypt()
332 dst = src = scatterwalk_ffwd(sg_src, req->src, subreq.cryptlen); in cts_cbc_decrypt()
333 if (req->dst != req->src) in cts_cbc_decrypt()
334 dst = scatterwalk_ffwd(sg_dst, req->dst, in cts_cbc_decrypt()
340 req->cryptlen - cbc_blocks * AES_BLOCK_SIZE, in cts_cbc_decrypt()
341 req->iv); in cts_cbc_decrypt()
357 static int ctr_crypt_aesni(struct skcipher_request *req) in ctr_crypt_aesni() argument
359 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); in ctr_crypt_aesni()
366 err = skcipher_walk_virt(&walk, req, false); in ctr_crypt_aesni()
420 xts_crypt_slowpath(struct skcipher_request *req, xts_crypt_func crypt_func) in xts_crypt_slowpath() argument
422 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); in xts_crypt_slowpath()
424 int tail = req->cryptlen % AES_BLOCK_SIZE; in xts_crypt_slowpath()
440 skcipher_request_flags(req), in xts_crypt_slowpath()
442 skcipher_request_set_crypt(&subreq, req->src, req->dst, in xts_crypt_slowpath()
443 req->cryptlen - tail - AES_BLOCK_SIZE, in xts_crypt_slowpath()
444 req->iv); in xts_crypt_slowpath()
445 req = &subreq; in xts_crypt_slowpath()
448 err = skcipher_walk_virt(&walk, req, false); in xts_crypt_slowpath()
454 walk.nbytes & ~(AES_BLOCK_SIZE - 1), req->iv); in xts_crypt_slowpath()
465 dst = src = scatterwalk_ffwd(sg_src, req->src, req->cryptlen); in xts_crypt_slowpath()
466 if (req->dst != req->src) in xts_crypt_slowpath()
467 dst = scatterwalk_ffwd(sg_dst, req->dst, req->cryptlen); in xts_crypt_slowpath()
469 skcipher_request_set_crypt(req, src, dst, AES_BLOCK_SIZE + tail, in xts_crypt_slowpath()
470 req->iv); in xts_crypt_slowpath()
472 err = skcipher_walk_virt(&walk, req, false); in xts_crypt_slowpath()
478 walk.nbytes, req->iv); in xts_crypt_slowpath()
486 xts_crypt(struct skcipher_request *req, xts_encrypt_iv_func encrypt_iv, in xts_crypt() argument
489 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); in xts_crypt()
492 if (unlikely(req->cryptlen < AES_BLOCK_SIZE)) in xts_crypt()
496 (*encrypt_iv)(&ctx->tweak_ctx, req->iv); in xts_crypt()
506 likely(req->src->length >= req->cryptlen && in xts_crypt()
507 req->dst->length >= req->cryptlen)) { in xts_crypt()
508 (*crypt_func)(&ctx->crypt_ctx, sg_virt(req->src), in xts_crypt()
509 sg_virt(req->dst), req->cryptlen, req->iv); in xts_crypt()
514 return xts_crypt_slowpath(req, crypt_func); in xts_crypt()
537 static int xts_encrypt_aesni(struct skcipher_request *req) in xts_encrypt_aesni() argument
539 return xts_crypt(req, aesni_xts_encrypt_iv, aesni_xts_encrypt); in xts_encrypt_aesni()
542 static int xts_decrypt_aesni(struct skcipher_request *req) in xts_decrypt_aesni() argument
544 return xts_crypt(req, aesni_xts_encrypt_iv, aesni_xts_decrypt); in xts_decrypt_aesni()
655 ctr_crypt(struct skcipher_request *req, in ctr_crypt() argument
660 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); in ctr_crypt()
668 ctr64 = le_ctr[0] = get_unaligned_be64(&req->iv[8]); in ctr_crypt()
669 le_ctr[1] = get_unaligned_be64(&req->iv[0]); in ctr_crypt()
671 err = skcipher_walk_virt(&walk, req, false); in ctr_crypt()
712 put_unaligned_be64(ctr64, &req->iv[8]); in ctr_crypt()
713 put_unaligned_be64(le_ctr[1], &req->iv[0]); in ctr_crypt()
720 xctr_crypt(struct skcipher_request *req, in xctr_crypt() argument
725 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); in xctr_crypt()
732 err = skcipher_walk_virt(&walk, req, false); in xctr_crypt()
739 nbytes, req->iv, ctr); in xctr_crypt()
757 static int xts_encrypt_##suffix(struct skcipher_request *req) \
759 return xts_crypt(req, aes_xts_encrypt_iv, aes_xts_encrypt_##suffix); \
762 static int xts_decrypt_##suffix(struct skcipher_request *req) \
764 return xts_crypt(req, aes_xts_encrypt_iv, aes_xts_decrypt_##suffix); \
771 static int ctr_crypt_##suffix(struct skcipher_request *req) \
773 return ctr_crypt(req, aes_ctr64_crypt_##suffix); \
781 static int xctr_crypt_##suffix(struct skcipher_request *req) \
783 return xctr_crypt(req, aes_xctr_crypt_##suffix); \
1336 gcm_crypt(struct aead_request *req, int flags) in gcm_crypt() argument
1338 struct crypto_aead *tfm = crypto_aead_reqtfm(req); in gcm_crypt()
1340 unsigned int assoclen = req->assoclen; in gcm_crypt()
1354 le_ctr[1] = get_unaligned_be32(req->iv + 4); in gcm_crypt()
1355 le_ctr[2] = get_unaligned_be32(req->iv + 0); in gcm_crypt()
1358 le_ctr[1] = get_unaligned_be32(req->iv + 8); in gcm_crypt()
1359 le_ctr[2] = get_unaligned_be32(req->iv + 4); in gcm_crypt()
1360 le_ctr[3] = get_unaligned_be32(req->iv + 0); in gcm_crypt()
1365 err = skcipher_walk_aead_encrypt(&walk, req, false); in gcm_crypt()
1367 err = skcipher_walk_aead_decrypt(&walk, req, false); in gcm_crypt()
1382 gcm_process_assoc(key, ghash_acc, req->src, assoclen, flags); in gcm_crypt()
1416 req->cryptlen, flags); in gcm_crypt()
1419 scatterwalk_map_and_copy(ghash_acc, req->dst, req->assoclen + in gcm_crypt()
1420 req->cryptlen, taglen, 1); in gcm_crypt()
1422 unsigned int datalen = req->cryptlen - taglen; in gcm_crypt()
1426 scatterwalk_map_and_copy(tag, req->src, req->assoclen + datalen, in gcm_crypt()
1452 static int gcm_encrypt_##suffix(struct aead_request *req) \
1454 return gcm_crypt(req, (flags) | FLAG_ENC); \
1457 static int gcm_decrypt_##suffix(struct aead_request *req) \
1459 return gcm_crypt(req, (flags)); \
1468 static int rfc4106_encrypt_##suffix(struct aead_request *req) \
1470 return gcm_crypt(req, (flags) | FLAG_RFC4106 | FLAG_ENC); \
1473 static int rfc4106_decrypt_##suffix(struct aead_request *req) \
1475 return gcm_crypt(req, (flags) | FLAG_RFC4106); \