diff mbox

crypto: mediatek - Add empty messages check in GCM mode

Message ID 018d5b804a22b0aa2e4d759749884b0e15c25de4.1502861307.git.ryder.lee@mediatek.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ryder Lee Aug. 16, 2017, 11:19 a.m. UTC
Currently, empty messages are not supported in GCM mode, hence add
a check to prevent producing incorrect results.

Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
---
 drivers/crypto/mediatek/mtk-aes.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Stephan Mueller Aug. 16, 2017, 12:18 p.m. UTC | #1
Am Mittwoch, 16. August 2017, 13:19:48 CEST schrieb Ryder Lee:

Hi Ryder,

> Currently, empty messages are not supported in GCM mode, hence add
> a check to prevent producing incorrect results.

In case the caller would provide empty messages, would there be just wrong 
data or a real problem? Note, unprivileged user space can make such requests.

If there would be a real problem (like crash), this should also go to stable.

Ciao
Stephan
Ryder Lee Aug. 16, 2017, 12:50 p.m. UTC | #2
Hi,

On Wed, 2017-08-16 at 14:18 +0200, Stephan Mueller wrote:
> Am Mittwoch, 16. August 2017, 13:19:48 CEST schrieb Ryder Lee:
> 
> Hi Ryder,
> 
> > Currently, empty messages are not supported in GCM mode, hence add
> > a check to prevent producing incorrect results.
> 
> In case the caller would provide empty messages, would there be just wrong 
> data or a real problem? Note, unprivileged user space can make such requests.
> 
> If there would be a real problem (like crash), this should also go to stable.
> 
> Ciao
> Stephan

This does not cause any problem and it just returns a wrong result. 

Ryder
Herbert Xu Aug. 22, 2017, 7:01 a.m. UTC | #3
On Wed, Aug 16, 2017 at 07:19:48PM +0800, Ryder Lee wrote:
> Currently, empty messages are not supported in GCM mode, hence add
> a check to prevent producing incorrect results.
> 
> Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
> ---
>  drivers/crypto/mediatek/mtk-aes.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/crypto/mediatek/mtk-aes.c b/drivers/crypto/mediatek/mtk-aes.c
> index 9e845e8..efe4e63 100644
> --- a/drivers/crypto/mediatek/mtk-aes.c
> +++ b/drivers/crypto/mediatek/mtk-aes.c
> @@ -928,8 +928,13 @@ static int mtk_aes_gcm_start(struct mtk_cryp *cryp, struct mtk_aes_rec *aes)
>  static int mtk_aes_gcm_crypt(struct aead_request *req, u64 mode)
>  {
>  	struct mtk_aes_base_ctx *ctx = crypto_aead_ctx(crypto_aead_reqtfm(req));
> +	struct mtk_aes_gcm_ctx *gctx = mtk_aes_gcm_ctx_cast(ctx);
>  	struct mtk_aes_reqctx *rctx = aead_request_ctx(req);
>  
> +	/* Empty messages are not supported yet */
> +	if (!gctx->textlen && !req->assoclen)
> +		return -EINVAL

Your patch does not compile.
Ryder Lee Aug. 22, 2017, 7:25 a.m. UTC | #4
Hi,
On Tue, 2017-08-22 at 15:01 +0800, Herbert Xu wrote:
> On Wed, Aug 16, 2017 at 07:19:48PM +0800, Ryder Lee wrote:
> > Currently, empty messages are not supported in GCM mode, hence add
> > a check to prevent producing incorrect results.
> > 
> > Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
> > ---
> >  drivers/crypto/mediatek/mtk-aes.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> > 
> > diff --git a/drivers/crypto/mediatek/mtk-aes.c b/drivers/crypto/mediatek/mtk-aes.c
> > index 9e845e8..efe4e63 100644
> > --- a/drivers/crypto/mediatek/mtk-aes.c
> > +++ b/drivers/crypto/mediatek/mtk-aes.c
> > @@ -928,8 +928,13 @@ static int mtk_aes_gcm_start(struct mtk_cryp *cryp, struct mtk_aes_rec *aes)
> >  static int mtk_aes_gcm_crypt(struct aead_request *req, u64 mode)
> >  {
> >  	struct mtk_aes_base_ctx *ctx = crypto_aead_ctx(crypto_aead_reqtfm(req));
> > +	struct mtk_aes_gcm_ctx *gctx = mtk_aes_gcm_ctx_cast(ctx);
> >  	struct mtk_aes_reqctx *rctx = aead_request_ctx(req);
> >  
> > +	/* Empty messages are not supported yet */
> > +	if (!gctx->textlen && !req->assoclen)
> > +		return -EINVAL
> 
> Your patch does not compile.

Ohh..Somehow I delete the semicolon. I will send v1 soon, sorry about
that.

Ryder
diff mbox

Patch

diff --git a/drivers/crypto/mediatek/mtk-aes.c b/drivers/crypto/mediatek/mtk-aes.c
index 9e845e8..efe4e63 100644
--- a/drivers/crypto/mediatek/mtk-aes.c
+++ b/drivers/crypto/mediatek/mtk-aes.c
@@ -928,8 +928,13 @@  static int mtk_aes_gcm_start(struct mtk_cryp *cryp, struct mtk_aes_rec *aes)
 static int mtk_aes_gcm_crypt(struct aead_request *req, u64 mode)
 {
 	struct mtk_aes_base_ctx *ctx = crypto_aead_ctx(crypto_aead_reqtfm(req));
+	struct mtk_aes_gcm_ctx *gctx = mtk_aes_gcm_ctx_cast(ctx);
 	struct mtk_aes_reqctx *rctx = aead_request_ctx(req);
 
+	/* Empty messages are not supported yet */
+	if (!gctx->textlen && !req->assoclen)
+		return -EINVAL
+
 	rctx->mode = AES_FLAGS_GCM | mode;
 
 	return mtk_aes_handle_queue(ctx->cryp, !!(mode & AES_FLAGS_ENCRYPT),