crypto: omap-aes-gcm - add missing .setauthsize hooks

GCM only permits certain tag lengths, so populate the .setauthsize
hooks which ensure that only permitted sizes are accepted by the
implementation.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Tero Kristo <t-kristo@ti.com>
Tested-by: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
Ard Biesheuvel 2019-11-05 16:01:03 +02:00 committed by Herbert Xu
parent 46d57443ec
commit 12adf9d63e
3 changed files with 16 additions and 0 deletions

View File

@ -413,3 +413,14 @@ int omap_aes_4106gcm_setkey(struct crypto_aead *tfm, const u8 *key,
return 0; return 0;
} }
int omap_aes_gcm_setauthsize(struct crypto_aead *tfm, unsigned int authsize)
{
return crypto_gcm_check_authsize(authsize);
}
int omap_aes_4106gcm_setauthsize(struct crypto_aead *parent,
unsigned int authsize)
{
return crypto_rfc4106_check_authsize(authsize);
}

View File

@ -787,6 +787,7 @@ static struct aead_alg algs_aead_gcm[] = {
.ivsize = GCM_AES_IV_SIZE, .ivsize = GCM_AES_IV_SIZE,
.maxauthsize = AES_BLOCK_SIZE, .maxauthsize = AES_BLOCK_SIZE,
.setkey = omap_aes_gcm_setkey, .setkey = omap_aes_gcm_setkey,
.setauthsize = omap_aes_gcm_setauthsize,
.encrypt = omap_aes_gcm_encrypt, .encrypt = omap_aes_gcm_encrypt,
.decrypt = omap_aes_gcm_decrypt, .decrypt = omap_aes_gcm_decrypt,
}, },
@ -807,6 +808,7 @@ static struct aead_alg algs_aead_gcm[] = {
.maxauthsize = AES_BLOCK_SIZE, .maxauthsize = AES_BLOCK_SIZE,
.ivsize = GCM_RFC4106_IV_SIZE, .ivsize = GCM_RFC4106_IV_SIZE,
.setkey = omap_aes_4106gcm_setkey, .setkey = omap_aes_4106gcm_setkey,
.setauthsize = omap_aes_4106gcm_setauthsize,
.encrypt = omap_aes_4106gcm_encrypt, .encrypt = omap_aes_4106gcm_encrypt,
.decrypt = omap_aes_4106gcm_decrypt, .decrypt = omap_aes_4106gcm_decrypt,
}, },

View File

@ -202,8 +202,11 @@ int omap_aes_4106gcm_setkey(struct crypto_aead *tfm, const u8 *key,
unsigned int keylen); unsigned int keylen);
int omap_aes_gcm_encrypt(struct aead_request *req); int omap_aes_gcm_encrypt(struct aead_request *req);
int omap_aes_gcm_decrypt(struct aead_request *req); int omap_aes_gcm_decrypt(struct aead_request *req);
int omap_aes_gcm_setauthsize(struct crypto_aead *tfm, unsigned int authsize);
int omap_aes_4106gcm_encrypt(struct aead_request *req); int omap_aes_4106gcm_encrypt(struct aead_request *req);
int omap_aes_4106gcm_decrypt(struct aead_request *req); int omap_aes_4106gcm_decrypt(struct aead_request *req);
int omap_aes_4106gcm_setauthsize(struct crypto_aead *parent,
unsigned int authsize);
int omap_aes_write_ctrl(struct omap_aes_dev *dd); int omap_aes_write_ctrl(struct omap_aes_dev *dd);
int omap_aes_crypt_dma_start(struct omap_aes_dev *dd); int omap_aes_crypt_dma_start(struct omap_aes_dev *dd);
int omap_aes_crypt_dma_stop(struct omap_aes_dev *dd); int omap_aes_crypt_dma_stop(struct omap_aes_dev *dd);