Lines Matching refs:req
870 static void cc_proc_digest_desc(struct aead_request *req,
874 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
876 struct aead_req_ctx *req_ctx = aead_request_ctx_dma(req);
920 static void cc_set_cipher_desc(struct aead_request *req,
924 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
926 struct aead_req_ctx *req_ctx = aead_request_ctx_dma(req);
965 static void cc_proc_cipher(struct aead_request *req, struct cc_hw_desc desc[],
968 struct aead_req_ctx *req_ctx = aead_request_ctx_dma(req);
975 cc_set_cipher_desc(req, desc, &idx);
976 cc_proc_cipher_desc(req, data_flow_mode, desc, &idx);
988 static void cc_set_hmac_desc(struct aead_request *req, struct cc_hw_desc desc[],
991 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1021 static void cc_set_xcbc_desc(struct aead_request *req, struct cc_hw_desc desc[],
1024 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1081 static void cc_proc_header_desc(struct aead_request *req,
1085 struct aead_req_ctx *areq_ctx = aead_request_ctx_dma(req);
1090 cc_set_assoc_desc(req, DIN_HASH, desc, &idx);
1096 static void cc_proc_scheme_desc(struct aead_request *req,
1100 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1158 static void cc_mlli_to_sram(struct aead_request *req,
1161 struct aead_req_ctx *req_ctx = aead_request_ctx_dma(req);
1162 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1210 static void cc_hmac_authenc(struct aead_request *req, struct cc_hw_desc desc[],
1213 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1215 struct aead_req_ctx *req_ctx = aead_request_ctx_dma(req);
1225 cc_set_hmac_desc(req, desc, seq_size);
1226 cc_set_cipher_desc(req, desc, seq_size);
1227 cc_proc_header_desc(req, desc, seq_size);
1228 cc_proc_cipher_desc(req, data_flow_mode, desc, seq_size);
1229 cc_proc_scheme_desc(req, desc, seq_size);
1230 cc_proc_digest_desc(req, desc, seq_size);
1241 cc_proc_cipher(req, desc, seq_size, data_flow_mode);
1243 cc_set_hmac_desc(req, desc, seq_size);
1244 cc_proc_authen_desc(req, DIN_HASH, desc, seq_size, direct);
1245 cc_proc_scheme_desc(req, desc, seq_size);
1246 cc_proc_digest_desc(req, desc, seq_size);
1250 cc_set_hmac_desc(req, desc, seq_size);
1251 cc_proc_authen_desc(req, DIN_HASH, desc, seq_size, direct);
1252 cc_proc_scheme_desc(req, desc, seq_size);
1254 cc_proc_cipher(req, desc, seq_size, data_flow_mode);
1258 cc_proc_digest_desc(req, desc, seq_size);
1263 cc_xcbc_authenc(struct aead_request *req, struct cc_hw_desc desc[],
1266 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1268 struct aead_req_ctx *req_ctx = aead_request_ctx_dma(req);
1278 cc_set_xcbc_desc(req, desc, seq_size);
1279 cc_set_cipher_desc(req, desc, seq_size);
1280 cc_proc_header_desc(req, desc, seq_size);
1281 cc_proc_cipher_desc(req, data_flow_mode, desc, seq_size);
1282 cc_proc_digest_desc(req, desc, seq_size);
1293 cc_proc_cipher(req, desc, seq_size, data_flow_mode);
1295 cc_set_xcbc_desc(req, desc, seq_size);
1296 cc_proc_authen_desc(req, DIN_HASH, desc, seq_size, direct);
1297 cc_proc_digest_desc(req, desc, seq_size);
1300 cc_set_xcbc_desc(req, desc, seq_size);
1301 cc_proc_authen_desc(req, DIN_HASH, desc, seq_size, direct);
1303 cc_proc_cipher(req, desc, seq_size, data_flow_mode);
1307 cc_proc_digest_desc(req, desc, seq_size);
1313 struct aead_request *req)
1315 struct aead_req_ctx *areq_ctx = aead_request_ctx_dma(req);
1319 (req->cryptlen - ctx->authsize) : req->cryptlen;
1322 req->cryptlen < ctx->authsize)
1409 static int cc_ccm(struct aead_request *req, struct cc_hw_desc desc[],
1412 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1414 struct aead_req_ctx *req_ctx = aead_request_ctx_dma(req);
1477 cc_set_assoc_desc(req, DIN_HASH, desc, &idx);
1489 cc_proc_cipher_desc(req, cipher_flow_mode, desc, &idx);
1531 static int config_ccm_adata(struct aead_request *req)
1533 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1536 struct aead_req_ctx *req_ctx = aead_request_ctx_dma(req);
1538 unsigned int lp = req->iv[0];
1539 /* Note: The code assume that req->iv[0] already contains the value
1549 req->cryptlen :
1550 (req->cryptlen - ctx->authsize);
1559 dev_dbg(dev, "illegal iv value %X\n", req->iv[0]);
1562 memcpy(b0, req->iv, AES_BLOCK_SIZE);
1581 memset(req->iv + 15 - req->iv[0], 0, req->iv[0] + 1);
1582 req->iv[15] = 1;
1584 memcpy(ctr_count_0, req->iv, AES_BLOCK_SIZE);
1590 static void cc_proc_rfc4309_ccm(struct aead_request *req)
1592 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1594 struct aead_req_ctx *areq_ctx = aead_request_ctx_dma(req);
1608 memcpy(areq_ctx->ctr_iv + CCM_BLOCK_IV_OFFSET, req->iv,
1610 req->iv = areq_ctx->ctr_iv;
1613 static void cc_set_ghash_desc(struct aead_request *req,
1616 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1618 struct aead_req_ctx *req_ctx = aead_request_ctx_dma(req);
1691 static void cc_set_gctr_desc(struct aead_request *req, struct cc_hw_desc desc[],
1694 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1696 struct aead_req_ctx *req_ctx = aead_request_ctx_dma(req);
1727 static void cc_proc_gcm_result(struct aead_request *req,
1731 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1733 struct aead_req_ctx *req_ctx = aead_request_ctx_dma(req);
1792 static int cc_gcm(struct aead_request *req, struct cc_hw_desc desc[],
1795 struct aead_req_ctx *req_ctx = aead_request_ctx_dma(req);
1800 cc_proc_cipher_desc(req, BYPASS, desc, seq_size);
1801 cc_set_ghash_desc(req, desc, seq_size);
1803 cc_set_assoc_desc(req, DIN_HASH, desc, seq_size);
1804 cc_set_gctr_desc(req, desc, seq_size);
1805 cc_proc_gcm_result(req, desc, seq_size);
1816 cc_set_ghash_desc(req, desc, seq_size);
1819 cc_set_assoc_desc(req, DIN_HASH, desc, seq_size);
1820 cc_set_gctr_desc(req, desc, seq_size);
1823 cc_proc_cipher_desc(req, cipher_flow_mode, desc, seq_size);
1824 cc_proc_gcm_result(req, desc, seq_size);
1829 static int config_gcm_context(struct aead_request *req)
1831 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1833 struct aead_req_ctx *req_ctx = aead_request_ctx_dma(req);
1838 req->cryptlen :
1839 (req->cryptlen - ctx->authsize);
1849 memcpy(req->iv + 12, &counter, 4);
1850 memcpy(req_ctx->gcm_iv_inc2, req->iv, 16);
1853 memcpy(req->iv + 12, &counter, 4);
1854 memcpy(req_ctx->gcm_iv_inc1, req->iv, 16);
1878 static void cc_proc_rfc4_gcm(struct aead_request *req)
1880 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1882 struct aead_req_ctx *areq_ctx = aead_request_ctx_dma(req);
1886 memcpy(areq_ctx->ctr_iv + GCM_BLOCK_RFC4_IV_OFFSET, req->iv,
1888 req->iv = areq_ctx->ctr_iv;
1891 static int cc_proc_aead(struct aead_request *req,
1897 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
1899 struct aead_req_ctx *areq_ctx = aead_request_ctx_dma(req);
1903 dev_dbg(dev, "%s context=%p req=%p iv=%p src=%p src_ofs=%d dst=%p dst_ofs=%d cryptolen=%d\n",
1905 ctx, req, req->iv, sg_virt(req->src), req->src->offset,
1906 sg_virt(req->dst), req->dst->offset, req->cryptlen);
1911 if (validate_data_size(ctx, direct, req)) {
1913 req->cryptlen, areq_ctx->assoclen);
1919 cc_req.user_arg = req;
1934 memcpy(areq_ctx->ctr_iv + CTR_RFC3686_NONCE_SIZE, req->iv,
1941 req->iv = areq_ctx->ctr_iv;
1946 if (areq_ctx->ctr_iv != req->iv) {
1947 memcpy(areq_ctx->ctr_iv, req->iv,
1949 req->iv = areq_ctx->ctr_iv;
1956 rc = config_ccm_adata(req);
1967 rc = config_gcm_context(req);
1975 rc = cc_map_aead_request(ctx->drvdata, req);
1984 cc_mlli_to_sram(req, desc, &seq_len);
1989 cc_hmac_authenc(req, desc, &seq_len);
1992 cc_xcbc_authenc(req, desc, &seq_len);
1996 cc_ccm(req, desc, &seq_len);
1998 cc_gcm(req, desc, &seq_len);
2002 cc_unmap_aead_request(dev, req);
2009 rc = cc_send_request(ctx->drvdata, &cc_req, desc, seq_len, &req->base);
2013 cc_unmap_aead_request(dev, req);
2020 static int cc_aead_encrypt(struct aead_request *req)
2022 struct aead_req_ctx *areq_ctx = aead_request_ctx_dma(req);
2028 areq_ctx->backup_iv = req->iv;
2029 areq_ctx->assoclen = req->assoclen;
2031 rc = cc_proc_aead(req, DRV_CRYPTO_DIRECTION_ENCRYPT);
2033 req->iv = areq_ctx->backup_iv;
2038 static int cc_rfc4309_ccm_encrypt(struct aead_request *req)
2042 struct aead_req_ctx *areq_ctx = aead_request_ctx_dma(req);
2045 rc = crypto_ipsec_check_assoclen(req->assoclen);
2052 areq_ctx->backup_iv = req->iv;
2053 areq_ctx->assoclen = req->assoclen - CCM_BLOCK_IV_SIZE;
2055 cc_proc_rfc4309_ccm(req);
2057 rc = cc_proc_aead(req, DRV_CRYPTO_DIRECTION_ENCRYPT);
2059 req->iv = areq_ctx->backup_iv;
2064 static int cc_aead_decrypt(struct aead_request *req)
2066 struct aead_req_ctx *areq_ctx = aead_request_ctx_dma(req);
2072 areq_ctx->backup_iv = req->iv;
2073 areq_ctx->assoclen = req->assoclen;
2075 rc = cc_proc_aead(req, DRV_CRYPTO_DIRECTION_DECRYPT);
2077 req->iv = areq_ctx->backup_iv;
2082 static int cc_rfc4309_ccm_decrypt(struct aead_request *req)
2084 struct aead_req_ctx *areq_ctx = aead_request_ctx_dma(req);
2087 rc = crypto_ipsec_check_assoclen(req->assoclen);
2094 areq_ctx->backup_iv = req->iv;
2095 areq_ctx->assoclen = req->assoclen - CCM_BLOCK_IV_SIZE;
2097 cc_proc_rfc4309_ccm(req);
2099 rc = cc_proc_aead(req, DRV_CRYPTO_DIRECTION_DECRYPT);
2101 req->iv = areq_ctx->backup_iv;
2194 static int cc_rfc4106_gcm_encrypt(struct aead_request *req)
2196 struct aead_req_ctx *areq_ctx = aead_request_ctx_dma(req);
2199 rc = crypto_ipsec_check_assoclen(req->assoclen);
2206 areq_ctx->backup_iv = req->iv;
2207 areq_ctx->assoclen = req->assoclen - GCM_BLOCK_RFC4_IV_SIZE;
2209 cc_proc_rfc4_gcm(req);
2211 rc = cc_proc_aead(req, DRV_CRYPTO_DIRECTION_ENCRYPT);
2213 req->iv = areq_ctx->backup_iv;
2218 static int cc_rfc4543_gcm_encrypt(struct aead_request *req)
2220 struct aead_req_ctx *areq_ctx = aead_request_ctx_dma(req);
2223 rc = crypto_ipsec_check_assoclen(req->assoclen);
2233 areq_ctx->backup_iv = req->iv;
2234 areq_ctx->assoclen = req->assoclen;
2236 cc_proc_rfc4_gcm(req);
2238 rc = cc_proc_aead(req, DRV_CRYPTO_DIRECTION_ENCRYPT);
2240 req->iv = areq_ctx->backup_iv;
2245 static int cc_rfc4106_gcm_decrypt(struct aead_request *req)
2247 struct aead_req_ctx *areq_ctx = aead_request_ctx_dma(req);
2250 rc = crypto_ipsec_check_assoclen(req->assoclen);
2257 areq_ctx->backup_iv = req->iv;
2258 areq_ctx->assoclen = req->assoclen - GCM_BLOCK_RFC4_IV_SIZE;
2260 cc_proc_rfc4_gcm(req);
2262 rc = cc_proc_aead(req, DRV_CRYPTO_DIRECTION_DECRYPT);
2264 req->iv = areq_ctx->backup_iv;
2269 static int cc_rfc4543_gcm_decrypt(struct aead_request *req)
2271 struct aead_req_ctx *areq_ctx = aead_request_ctx_dma(req);
2274 rc = crypto_ipsec_check_assoclen(req->assoclen);
2284 areq_ctx->backup_iv = req->iv;
2285 areq_ctx->assoclen = req->assoclen;
2287 cc_proc_rfc4_gcm(req);
2289 rc = cc_proc_aead(req, DRV_CRYPTO_DIRECTION_DECRYPT);
2291 req->iv = areq_ctx->backup_iv;