2019-11-08 07:50:32

by Pascal van Leeuwen

[permalink] [raw]
Subject: [PATCH] crypto: inside-secure - Fixed authenc w/ (3)DES fails on Macchiatobin

Fixed 2 copy-paste mistakes made during commit 13a1bb93f7b1c9 ("crypto:
inside-secure - Fixed warnings on inconsistent byte order handling")
that caused authenc w/ (3)DES to consistently fail on Macchiatobin (but
strangely work fine on x86+FPGA??).
Now fully tested on both platforms.

Signed-off-by: Pascal van Leeuwen <[email protected]>
---
drivers/crypto/inside-secure/safexcel_cipher.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/crypto/inside-secure/safexcel_cipher.c b/drivers/crypto/inside-secure/safexcel_cipher.c
index 98f9fc6..c029956 100644
--- a/drivers/crypto/inside-secure/safexcel_cipher.c
+++ b/drivers/crypto/inside-secure/safexcel_cipher.c
@@ -405,7 +405,8 @@ static int safexcel_aead_setkey(struct crypto_aead *ctfm, const u8 *key,

if (priv->flags & EIP197_TRC_CACHE && ctx->base.ctxr_dma) {
for (i = 0; i < keys.enckeylen / sizeof(u32); i++) {
- if (le32_to_cpu(ctx->key[i]) != aes.key_enc[i]) {
+ if (le32_to_cpu(ctx->key[i]) !=
+ ((u32 *)keys.enckey)[i]) {
ctx->base.needs_inv = true;
break;
}
@@ -459,7 +460,7 @@ static int safexcel_aead_setkey(struct crypto_aead *ctfm, const u8 *key,

/* Now copy the keys into the context */
for (i = 0; i < keys.enckeylen / sizeof(u32); i++)
- ctx->key[i] = cpu_to_le32(aes.key_enc[i]);
+ ctx->key[i] = cpu_to_le32(((u32 *)keys.enckey)[i]);
ctx->key_len = keys.enckeylen;

memcpy(ctx->ipad, &istate.state, ctx->state_sz);
--
1.8.3.1


2019-11-08 08:38:49

by Antoine Tenart

[permalink] [raw]
Subject: Re: [PATCH] crypto: inside-secure - Fixed authenc w/ (3)DES fails on Macchiatobin

Hi Pascal,

On Fri, Nov 08, 2019 at 08:46:05AM +0100, Pascal van Leeuwen wrote:
> Fixed 2 copy-paste mistakes made during commit 13a1bb93f7b1c9 ("crypto:
> inside-secure - Fixed warnings on inconsistent byte order handling")
> that caused authenc w/ (3)DES to consistently fail on Macchiatobin (but
> strangely work fine on x86+FPGA??).
> Now fully tested on both platforms.

Can you add a Fixes: tag?

Thanks!
Antoine

> Signed-off-by: Pascal van Leeuwen <[email protected]>
> ---
> drivers/crypto/inside-secure/safexcel_cipher.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/crypto/inside-secure/safexcel_cipher.c b/drivers/crypto/inside-secure/safexcel_cipher.c
> index 98f9fc6..c029956 100644
> --- a/drivers/crypto/inside-secure/safexcel_cipher.c
> +++ b/drivers/crypto/inside-secure/safexcel_cipher.c
> @@ -405,7 +405,8 @@ static int safexcel_aead_setkey(struct crypto_aead *ctfm, const u8 *key,
>
> if (priv->flags & EIP197_TRC_CACHE && ctx->base.ctxr_dma) {
> for (i = 0; i < keys.enckeylen / sizeof(u32); i++) {
> - if (le32_to_cpu(ctx->key[i]) != aes.key_enc[i]) {
> + if (le32_to_cpu(ctx->key[i]) !=
> + ((u32 *)keys.enckey)[i]) {
> ctx->base.needs_inv = true;
> break;
> }
> @@ -459,7 +460,7 @@ static int safexcel_aead_setkey(struct crypto_aead *ctfm, const u8 *key,
>
> /* Now copy the keys into the context */
> for (i = 0; i < keys.enckeylen / sizeof(u32); i++)
> - ctx->key[i] = cpu_to_le32(aes.key_enc[i]);
> + ctx->key[i] = cpu_to_le32(((u32 *)keys.enckey)[i]);
> ctx->key_len = keys.enckeylen;
>
> memcpy(ctx->ipad, &istate.state, ctx->state_sz);
> --
> 1.8.3.1
>

--
Antoine T?nart, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

2019-11-08 08:41:01

by Pascal Van Leeuwen

[permalink] [raw]
Subject: RE: [PATCH] crypto: inside-secure - Fixed authenc w/ (3)DES fails on Macchiatobin

> -----Original Message-----
> From: [email protected] <[email protected]> On Behalf Of
> Antoine Tenart
> Sent: Friday, November 8, 2019 9:38 AM
> To: Pascal van Leeuwen <[email protected]>
> Cc: [email protected]; [email protected]; [email protected];
> [email protected]; Pascal Van Leeuwen <[email protected]>
> Subject: Re: [PATCH] crypto: inside-secure - Fixed authenc w/ (3)DES fails on Macchiatobin
>
> Hi Pascal,
>
> On Fri, Nov 08, 2019 at 08:46:05AM +0100, Pascal van Leeuwen wrote:
> > Fixed 2 copy-paste mistakes made during commit 13a1bb93f7b1c9 ("crypto:
> > inside-secure - Fixed warnings on inconsistent byte order handling")
> > that caused authenc w/ (3)DES to consistently fail on Macchiatobin (but
> > strangely work fine on x86+FPGA??).
> > Now fully tested on both platforms.
>
> Can you add a Fixes: tag?
>
Sure I can :-) If I know what I should put in such a Fixes: tag?
(I'm off Googling now, but a response here might be faster :-)

> Thanks!
> Antoine
>
> > Signed-off-by: Pascal van Leeuwen <[email protected]>
> > ---
> > drivers/crypto/inside-secure/safexcel_cipher.c | 5 +++--
> > 1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/crypto/inside-secure/safexcel_cipher.c b/drivers/crypto/inside-
> secure/safexcel_cipher.c
> > index 98f9fc6..c029956 100644
> > --- a/drivers/crypto/inside-secure/safexcel_cipher.c
> > +++ b/drivers/crypto/inside-secure/safexcel_cipher.c
> > @@ -405,7 +405,8 @@ static int safexcel_aead_setkey(struct crypto_aead *ctfm, const u8
> *key,
> >
> > if (priv->flags & EIP197_TRC_CACHE && ctx->base.ctxr_dma) {
> > for (i = 0; i < keys.enckeylen / sizeof(u32); i++) {
> > - if (le32_to_cpu(ctx->key[i]) != aes.key_enc[i]) {
> > + if (le32_to_cpu(ctx->key[i]) !=
> > + ((u32 *)keys.enckey)[i]) {
> > ctx->base.needs_inv = true;
> > break;
> > }
> > @@ -459,7 +460,7 @@ static int safexcel_aead_setkey(struct crypto_aead *ctfm, const u8
> *key,
> >
> > /* Now copy the keys into the context */
> > for (i = 0; i < keys.enckeylen / sizeof(u32); i++)
> > - ctx->key[i] = cpu_to_le32(aes.key_enc[i]);
> > + ctx->key[i] = cpu_to_le32(((u32 *)keys.enckey)[i]);
> > ctx->key_len = keys.enckeylen;
> >
> > memcpy(ctx->ipad, &istate.state, ctx->state_sz);
> > --
> > 1.8.3.1
> >
>
> --
> Antoine T?nart, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com


Regards,
Pascal van Leeuwen
Silicon IP Architect, Multi-Protocol Engines @ Verimatrix
http://www.insidesecure.com

2019-11-08 08:51:45

by Antoine Tenart

[permalink] [raw]
Subject: Re: [PATCH] crypto: inside-secure - Fixed authenc w/ (3)DES fails on Macchiatobin

On Fri, Nov 08, 2019 at 08:40:29AM +0000, Pascal Van Leeuwen wrote:
> > On Fri, Nov 08, 2019 at 08:46:05AM +0100, Pascal van Leeuwen wrote:
> > > Fixed 2 copy-paste mistakes made during commit 13a1bb93f7b1c9 ("crypto:
> > > inside-secure - Fixed warnings on inconsistent byte order handling")
> > > that caused authenc w/ (3)DES to consistently fail on Macchiatobin (but
> > > strangely work fine on x86+FPGA??).
> > > Now fully tested on both platforms.
> >
> > Can you add a Fixes: tag?
> >
> Sure I can :-) If I know what I should put in such a Fixes: tag?
> (I'm off Googling now, but a response here might be faster :-)

:)

Fixes: 13a1bb93f7b1c9 ("crypto: inside-secure - Fixed warnings on inconsistent byte order handling")

Thanks,
Antoine

--
Antoine T?nart, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com