6
6
#include <crypto/algapi.h>
7
7
#include <crypto/internal/aead.h>
8
8
#include <crypto/authenc.h>
9
+ #include <crypto/gcm.h>
10
+ #include <linux/rtnetlink.h>
9
11
#include <crypto/internal/des.h>
10
12
#include <linux/rtnetlink.h>
11
13
#include "cc_driver.h"
@@ -60,11 +62,6 @@ struct cc_aead_ctx {
60
62
enum drv_hash_mode auth_mode ;
61
63
};
62
64
63
- static inline bool valid_assoclen (struct aead_request * req )
64
- {
65
- return ((req -> assoclen == 16 ) || (req -> assoclen == 20 ));
66
- }
67
-
68
65
static void cc_aead_exit (struct crypto_aead * tfm )
69
66
{
70
67
struct cc_aead_ctx * ctx = crypto_aead_ctx (tfm );
@@ -2050,15 +2047,11 @@ static int cc_rfc4309_ccm_encrypt(struct aead_request *req)
2050
2047
/* Very similar to cc_aead_encrypt() above. */
2051
2048
2052
2049
struct aead_req_ctx * areq_ctx = aead_request_ctx (req );
2053
- struct crypto_aead * tfm = crypto_aead_reqtfm (req );
2054
- struct cc_aead_ctx * ctx = crypto_aead_ctx (tfm );
2055
- struct device * dev = drvdata_to_dev (ctx -> drvdata );
2056
- int rc = - EINVAL ;
2050
+ int rc ;
2057
2051
2058
- if (! valid_assoclen ( req )) {
2059
- dev_dbg ( dev , "invalid Assoclen:%u\n" , req -> assoclen );
2052
+ rc = crypto_ipsec_check_assoclen ( req -> assoclen );
2053
+ if ( rc )
2060
2054
goto out ;
2061
- }
2062
2055
2063
2056
memset (areq_ctx , 0 , sizeof (* areq_ctx ));
2064
2057
@@ -2099,16 +2092,12 @@ static int cc_aead_decrypt(struct aead_request *req)
2099
2092
2100
2093
static int cc_rfc4309_ccm_decrypt (struct aead_request * req )
2101
2094
{
2102
- struct crypto_aead * tfm = crypto_aead_reqtfm (req );
2103
- struct cc_aead_ctx * ctx = crypto_aead_ctx (tfm );
2104
- struct device * dev = drvdata_to_dev (ctx -> drvdata );
2105
2095
struct aead_req_ctx * areq_ctx = aead_request_ctx (req );
2106
- int rc = - EINVAL ;
2096
+ int rc ;
2107
2097
2108
- if (! valid_assoclen ( req )) {
2109
- dev_dbg ( dev , "invalid Assoclen:%u\n" , req -> assoclen );
2098
+ rc = crypto_ipsec_check_assoclen ( req -> assoclen );
2099
+ if ( rc )
2110
2100
goto out ;
2111
- }
2112
2101
2113
2102
memset (areq_ctx , 0 , sizeof (* areq_ctx ));
2114
2103
@@ -2216,18 +2205,12 @@ static int cc_rfc4543_gcm_setauthsize(struct crypto_aead *authenc,
2216
2205
2217
2206
static int cc_rfc4106_gcm_encrypt (struct aead_request * req )
2218
2207
{
2219
- /* Very similar to cc_aead_encrypt() above. */
2220
-
2221
- struct crypto_aead * tfm = crypto_aead_reqtfm (req );
2222
- struct cc_aead_ctx * ctx = crypto_aead_ctx (tfm );
2223
- struct device * dev = drvdata_to_dev (ctx -> drvdata );
2224
2208
struct aead_req_ctx * areq_ctx = aead_request_ctx (req );
2225
- int rc = - EINVAL ;
2209
+ int rc ;
2226
2210
2227
- if (! valid_assoclen ( req )) {
2228
- dev_dbg ( dev , "invalid Assoclen:%u\n" , req -> assoclen );
2211
+ rc = crypto_ipsec_check_assoclen ( req -> assoclen );
2212
+ if ( rc )
2229
2213
goto out ;
2230
- }
2231
2214
2232
2215
memset (areq_ctx , 0 , sizeof (* areq_ctx ));
2233
2216
@@ -2248,17 +2231,12 @@ static int cc_rfc4106_gcm_encrypt(struct aead_request *req)
2248
2231
2249
2232
static int cc_rfc4543_gcm_encrypt (struct aead_request * req )
2250
2233
{
2251
- /* Very similar to cc_aead_encrypt() above. */
2252
- struct crypto_aead * tfm = crypto_aead_reqtfm (req );
2253
- struct cc_aead_ctx * ctx = crypto_aead_ctx (tfm );
2254
- struct device * dev = drvdata_to_dev (ctx -> drvdata );
2255
2234
struct aead_req_ctx * areq_ctx = aead_request_ctx (req );
2256
- int rc = - EINVAL ;
2235
+ int rc ;
2257
2236
2258
- if (! valid_assoclen ( req )) {
2259
- dev_dbg ( dev , "invalid Assoclen:%u\n" , req -> assoclen );
2237
+ rc = crypto_ipsec_check_assoclen ( req -> assoclen );
2238
+ if ( rc )
2260
2239
goto out ;
2261
- }
2262
2240
2263
2241
memset (areq_ctx , 0 , sizeof (* areq_ctx ));
2264
2242
@@ -2281,18 +2259,12 @@ static int cc_rfc4543_gcm_encrypt(struct aead_request *req)
2281
2259
2282
2260
static int cc_rfc4106_gcm_decrypt (struct aead_request * req )
2283
2261
{
2284
- /* Very similar to cc_aead_decrypt() above. */
2285
-
2286
- struct crypto_aead * tfm = crypto_aead_reqtfm (req );
2287
- struct cc_aead_ctx * ctx = crypto_aead_ctx (tfm );
2288
- struct device * dev = drvdata_to_dev (ctx -> drvdata );
2289
2262
struct aead_req_ctx * areq_ctx = aead_request_ctx (req );
2290
- int rc = - EINVAL ;
2263
+ int rc ;
2291
2264
2292
- if (! valid_assoclen ( req )) {
2293
- dev_dbg ( dev , "invalid Assoclen:%u\n" , req -> assoclen );
2265
+ rc = crypto_ipsec_check_assoclen ( req -> assoclen );
2266
+ if ( rc )
2294
2267
goto out ;
2295
- }
2296
2268
2297
2269
memset (areq_ctx , 0 , sizeof (* areq_ctx ));
2298
2270
@@ -2313,17 +2285,12 @@ static int cc_rfc4106_gcm_decrypt(struct aead_request *req)
2313
2285
2314
2286
static int cc_rfc4543_gcm_decrypt (struct aead_request * req )
2315
2287
{
2316
- /* Very similar to cc_aead_decrypt() above. */
2317
- struct crypto_aead * tfm = crypto_aead_reqtfm (req );
2318
- struct cc_aead_ctx * ctx = crypto_aead_ctx (tfm );
2319
- struct device * dev = drvdata_to_dev (ctx -> drvdata );
2320
2288
struct aead_req_ctx * areq_ctx = aead_request_ctx (req );
2321
- int rc = - EINVAL ;
2289
+ int rc ;
2322
2290
2323
- if (! valid_assoclen ( req )) {
2324
- dev_dbg ( dev , "invalid Assoclen:%u\n" , req -> assoclen );
2291
+ rc = crypto_ipsec_check_assoclen ( req -> assoclen );
2292
+ if ( rc )
2325
2293
goto out ;
2326
- }
2327
2294
2328
2295
memset (areq_ctx , 0 , sizeof (* areq_ctx ));
2329
2296
0 commit comments