All of lore.kernel.org
 help / color / mirror / Atom feed
* crypto: sha-s390 - Reset index after processing partial block
@ 2011-02-07  9:28 Herbert Xu
  2011-02-07 12:47 ` Jan Glauber
  0 siblings, 1 reply; 7+ messages in thread
From: Herbert Xu @ 2011-02-07  9:28 UTC (permalink / raw)
  To: Linux Crypto Mailing List, Jan Glauber

Hi:

This patch fixes an old but nasty bug in the sha-s390 code.

commit 9d20b571f5bda7273656e1b86ef91eddc94adacc
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Mon Feb 7 20:26:06 2011 +1100

    crypto: sha-s390 - Reset index after processing partial block
    
    The partial block handling in sha-s390 is broken when we get a
    partial block that is followed by an update which fills it with
    bytes left-over.  Instead of storing the newly left-over bytes
    at the start of the buffer, it will be stored immediately after
    the previous partial block.
    
    This patch fixes this by resetting the index pointer.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

diff --git a/arch/s390/crypto/sha_common.c b/arch/s390/crypto/sha_common.c
index f42dbab..48884f8 100644
--- a/arch/s390/crypto/sha_common.c
+++ b/arch/s390/crypto/sha_common.c
@@ -38,6 +38,7 @@ int s390_sha_update(struct shash_desc *desc, const u8 *data, unsigned int len)
 		BUG_ON(ret != bsize);
 		data += bsize - index;
 		len -= bsize - index;
+		index = 0;
 	}
 
 	/* process as many blocks as possible */

Cheers,
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: crypto: sha-s390 - Reset index after processing partial block
  2011-02-07  9:28 crypto: sha-s390 - Reset index after processing partial block Herbert Xu
@ 2011-02-07 12:47 ` Jan Glauber
  2011-02-17  3:25   ` crypto: sha1 - Add test vector to test partial block processing Herbert Xu
  0 siblings, 1 reply; 7+ messages in thread
From: Jan Glauber @ 2011-02-07 12:47 UTC (permalink / raw)
  To: Herbert Xu; +Cc: Linux Crypto Mailing List

Ouch.

Acked-by: Jan Glauber <jang@linux.vnet.ibm.com>

On Mon, 2011-02-07 at 20:28 +1100, Herbert Xu wrote:
> Hi:
> 
> This patch fixes an old but nasty bug in the sha-s390 code.
> 
> commit 9d20b571f5bda7273656e1b86ef91eddc94adacc
> Author: Herbert Xu <herbert@gondor.apana.org.au>
> Date:   Mon Feb 7 20:26:06 2011 +1100
> 
>     crypto: sha-s390 - Reset index after processing partial block
>     
>     The partial block handling in sha-s390 is broken when we get a
>     partial block that is followed by an update which fills it with
>     bytes left-over.  Instead of storing the newly left-over bytes
>     at the start of the buffer, it will be stored immediately after
>     the previous partial block.
>     
>     This patch fixes this by resetting the index pointer.
>     
>     Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
> 
> diff --git a/arch/s390/crypto/sha_common.c b/arch/s390/crypto/sha_common.c
> index f42dbab..48884f8 100644
> --- a/arch/s390/crypto/sha_common.c
> +++ b/arch/s390/crypto/sha_common.c
> @@ -38,6 +38,7 @@ int s390_sha_update(struct shash_desc *desc, const u8 *data, unsigned int len)
>  		BUG_ON(ret != bsize);
>  		data += bsize - index;
>  		len -= bsize - index;
> +		index = 0;
>  	}
> 
>  	/* process as many blocks as possible */
> 
> Cheers,

^ permalink raw reply	[flat|nested] 7+ messages in thread

* crypto: sha1 - Add test vector to test partial block processing
  2011-02-07 12:47 ` Jan Glauber
@ 2011-02-17  3:25   ` Herbert Xu
  2011-02-17 15:11     ` Jan Glauber
  0 siblings, 1 reply; 7+ messages in thread
From: Herbert Xu @ 2011-02-17  3:25 UTC (permalink / raw)
  To: Jan Glauber; +Cc: Linux Crypto Mailing List

Hi:

I'm going to add this patch to prevent such issues in future.

commit bd1f2996b44a1c8bde76a6fecd10f36b6eb948d7
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Thu Feb 17 14:24:45 2011 +1100

    crypto: sha1 - Add test vector to test partial block processing
    
    In light of the recent discovery of the bug with partial block
    processing on s390, we need best test coverage for that.  This
    patch adds a test vector for SHA1 that should catch such problems.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

diff --git a/crypto/testmgr.h b/crypto/testmgr.h
index 834af7f..aa6dac0 100644
--- a/crypto/testmgr.h
+++ b/crypto/testmgr.h
@@ -451,8 +451,9 @@ static struct hash_testvec rmd320_tv_template[] = {
 
 /*
  * SHA1 test vectors  from from FIPS PUB 180-1
+ * Long vector from CAVS 5.0
  */
-#define SHA1_TEST_VECTORS	2
+#define SHA1_TEST_VECTORS	3
 
 static struct hash_testvec sha1_tv_template[] = {
 	{
@@ -467,6 +468,33 @@ static struct hash_testvec sha1_tv_template[] = {
 			  "\x4a\xa1\xf9\x51\x29\xe5\xe5\x46\x70\xf1",
 		.np	= 2,
 		.tap	= { 28, 28 }
+	}, {
+		.plaintext = "\xec\x29\x56\x12\x44\xed\xe7\x06"
+			     "\xb6\xeb\x30\xa1\xc3\x71\xd7\x44"
+			     "\x50\xa1\x05\xc3\xf9\x73\x5f\x7f"
+			     "\xa9\xfe\x38\xcf\x67\xf3\x04\xa5"
+			     "\x73\x6a\x10\x6e\x92\xe1\x71\x39"
+			     "\xa6\x81\x3b\x1c\x81\xa4\xf3\xd3"
+			     "\xfb\x95\x46\xab\x42\x96\xfa\x9f"
+			     "\x72\x28\x26\xc0\x66\x86\x9e\xda"
+			     "\xcd\x73\xb2\x54\x80\x35\x18\x58"
+			     "\x13\xe2\x26\x34\xa9\xda\x44\x00"
+			     "\x0d\x95\xa2\x81\xff\x9f\x26\x4e"
+			     "\xcc\xe0\xa9\x31\x22\x21\x62\xd0"
+			     "\x21\xcc\xa2\x8d\xb5\xf3\xc2\xaa"
+			     "\x24\x94\x5a\xb1\xe3\x1c\xb4\x13"
+			     "\xae\x29\x81\x0f\xd7\x94\xca\xd5"
+			     "\xdf\xaf\x29\xec\x43\xcb\x38\xd1"
+			     "\x98\xfe\x4a\xe1\xda\x23\x59\x78"
+			     "\x02\x21\x40\x5b\xd6\x71\x2a\x53"
+			     "\x05\xda\x4b\x1b\x73\x7f\xce\x7c"
+			     "\xd2\x1c\x0e\xb7\x72\x8d\x08\x23"
+			     "\x5a\x90\x11",
+		.psize	= 163,
+		.digest	= "\x97\x01\x11\xc4\xe7\x7b\xcc\x88\xcc\x20"
+			  "\x45\x9c\x02\xb6\x9b\x4a\xa8\xf5\x82\x17",
+		.np	= 4,
+		.tap	= { 63, 64, 31, 5 }
 	}
 };

Thanks,
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: crypto: sha1 - Add test vector to test partial block processing
  2011-02-17  3:25   ` crypto: sha1 - Add test vector to test partial block processing Herbert Xu
@ 2011-02-17 15:11     ` Jan Glauber
  2011-02-17 20:52       ` Herbert Xu
  0 siblings, 1 reply; 7+ messages in thread
From: Jan Glauber @ 2011-02-17 15:11 UTC (permalink / raw)
  To: Herbert Xu; +Cc: Linux Crypto Mailing List

Hi Herbert,

good idea. I ended up with using openssl to create a test vector for
that special case but a published test vector is of course better.

With your sha patch applied sha1_s390 survives the tcrypt test.

--Jan

On Thu, 2011-02-17 at 14:25 +1100, Herbert Xu wrote:
> Hi:
> 
> I'm going to add this patch to prevent such issues in future.
> 
> commit bd1f2996b44a1c8bde76a6fecd10f36b6eb948d7
> Author: Herbert Xu <herbert@gondor.apana.org.au>
> Date:   Thu Feb 17 14:24:45 2011 +1100
> 
>     crypto: sha1 - Add test vector to test partial block processing
>     
>     In light of the recent discovery of the bug with partial block
>     processing on s390, we need best test coverage for that.  This
>     patch adds a test vector for SHA1 that should catch such problems.
>     
>     Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
> 
> diff --git a/crypto/testmgr.h b/crypto/testmgr.h
> index 834af7f..aa6dac0 100644
> --- a/crypto/testmgr.h
> +++ b/crypto/testmgr.h
> @@ -451,8 +451,9 @@ static struct hash_testvec rmd320_tv_template[] = {
> 
>  /*
>   * SHA1 test vectors  from from FIPS PUB 180-1
> + * Long vector from CAVS 5.0
>   */
> -#define SHA1_TEST_VECTORS	2
> +#define SHA1_TEST_VECTORS	3
> 
>  static struct hash_testvec sha1_tv_template[] = {
>  	{
> @@ -467,6 +468,33 @@ static struct hash_testvec sha1_tv_template[] = {
>  			  "\x4a\xa1\xf9\x51\x29\xe5\xe5\x46\x70\xf1",
>  		.np	= 2,
>  		.tap	= { 28, 28 }
> +	}, {
> +		.plaintext = "\xec\x29\x56\x12\x44\xed\xe7\x06"
> +			     "\xb6\xeb\x30\xa1\xc3\x71\xd7\x44"
> +			     "\x50\xa1\x05\xc3\xf9\x73\x5f\x7f"
> +			     "\xa9\xfe\x38\xcf\x67\xf3\x04\xa5"
> +			     "\x73\x6a\x10\x6e\x92\xe1\x71\x39"
> +			     "\xa6\x81\x3b\x1c\x81\xa4\xf3\xd3"
> +			     "\xfb\x95\x46\xab\x42\x96\xfa\x9f"
> +			     "\x72\x28\x26\xc0\x66\x86\x9e\xda"
> +			     "\xcd\x73\xb2\x54\x80\x35\x18\x58"
> +			     "\x13\xe2\x26\x34\xa9\xda\x44\x00"
> +			     "\x0d\x95\xa2\x81\xff\x9f\x26\x4e"
> +			     "\xcc\xe0\xa9\x31\x22\x21\x62\xd0"
> +			     "\x21\xcc\xa2\x8d\xb5\xf3\xc2\xaa"
> +			     "\x24\x94\x5a\xb1\xe3\x1c\xb4\x13"
> +			     "\xae\x29\x81\x0f\xd7\x94\xca\xd5"
> +			     "\xdf\xaf\x29\xec\x43\xcb\x38\xd1"
> +			     "\x98\xfe\x4a\xe1\xda\x23\x59\x78"
> +			     "\x02\x21\x40\x5b\xd6\x71\x2a\x53"
> +			     "\x05\xda\x4b\x1b\x73\x7f\xce\x7c"
> +			     "\xd2\x1c\x0e\xb7\x72\x8d\x08\x23"
> +			     "\x5a\x90\x11",
> +		.psize	= 163,
> +		.digest	= "\x97\x01\x11\xc4\xe7\x7b\xcc\x88\xcc\x20"
> +			  "\x45\x9c\x02\xb6\x9b\x4a\xa8\xf5\x82\x17",
> +		.np	= 4,
> +		.tap	= { 63, 64, 31, 5 }
>  	}
>  };
> 
> Thanks,

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: crypto: sha1 - Add test vector to test partial block processing
  2011-02-17 15:11     ` Jan Glauber
@ 2011-02-17 20:52       ` Herbert Xu
  2011-02-18  9:37         ` Jan Glauber
  0 siblings, 1 reply; 7+ messages in thread
From: Herbert Xu @ 2011-02-17 20:52 UTC (permalink / raw)
  To: Jan Glauber; +Cc: Linux Crypto Mailing List

On Thu, Feb 17, 2011 at 04:11:02PM +0100, Jan Glauber wrote:
> Hi Herbert,
> 
> good idea. I ended up with using openssl to create a test vector for
> that special case but a published test vector is of course better.
> 
> With your sha patch applied sha1_s390 survives the tcrypt test.

Could you check if sha1_s390 fails the test without the patch?

Thanks!
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: crypto: sha1 - Add test vector to test partial block processing
  2011-02-17 20:52       ` Herbert Xu
@ 2011-02-18  9:37         ` Jan Glauber
  2011-02-18  9:43           ` Herbert Xu
  0 siblings, 1 reply; 7+ messages in thread
From: Jan Glauber @ 2011-02-18  9:37 UTC (permalink / raw)
  To: Herbert Xu; +Cc: linux-crypto

On Fri, 2011-02-18 at 07:52 +1100, Herbert Xu wrote:
> On Thu, Feb 17, 2011 at 04:11:02PM +0100, Jan Glauber wrote:
> > Hi Herbert,
> > 
> > good idea. I ended up with using openssl to create a test vector for
> > that special case but a published test vector is of course better.
> > 
> > With your sha patch applied sha1_s390 survives the tcrypt test.
> 
> Could you check if sha1_s390 fails the test without the patch?

Without 9d20b57 it gives:

[root@h4245005 ~]# modprobe tcrypt mode=2
FATAL: Error inserting tcrypt (/lib/modules/2.6.38-rc4-dirty/kernel/crypto/tcrypt.ko): Resource temporarily unavailable
[root@h4245005 ~]# tail -f /var/log/messages 
...
Feb 18 10:22:13 h4245005 kernel: alg: hash: Chunking test 2 failed for sha1-s390
Feb 18 10:22:13 h4245005 kernel: 00000000: 4a d0 d6 bd 53 2b 6b df cd 34 b9 60 d1 90 85 d0
Feb 18 10:22:13 h4245005 kernel: 00000010: 38 70 2b 41

With the patch applied nothing shows up in dmesg.

--Jan


> Thanks!

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: crypto: sha1 - Add test vector to test partial block processing
  2011-02-18  9:37         ` Jan Glauber
@ 2011-02-18  9:43           ` Herbert Xu
  0 siblings, 0 replies; 7+ messages in thread
From: Herbert Xu @ 2011-02-18  9:43 UTC (permalink / raw)
  To: Jan Glauber; +Cc: linux-crypto

On Fri, Feb 18, 2011 at 09:37:17AM +0000, Jan Glauber wrote:
>
> Without 9d20b57 it gives:
> 
> [root@h4245005 ~]# modprobe tcrypt mode=2
> FATAL: Error inserting tcrypt (/lib/modules/2.6.38-rc4-dirty/kernel/crypto/tcrypt.ko): Resource temporarily unavailable
> [root@h4245005 ~]# tail -f /var/log/messages 
> ...
> Feb 18 10:22:13 h4245005 kernel: alg: hash: Chunking test 2 failed for sha1-s390
> Feb 18 10:22:13 h4245005 kernel: 00000000: 4a d0 d6 bd 53 2b 6b df cd 34 b9 60 d1 90 85 d0
> Feb 18 10:22:13 h4245005 kernel: 00000010: 38 70 2b 41
> 
> With the patch applied nothing shows up in dmesg.
> 
> --Jan

Excellent.  Thanks a lot for testing Jan!
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-02-18  9:43 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-07  9:28 crypto: sha-s390 - Reset index after processing partial block Herbert Xu
2011-02-07 12:47 ` Jan Glauber
2011-02-17  3:25   ` crypto: sha1 - Add test vector to test partial block processing Herbert Xu
2011-02-17 15:11     ` Jan Glauber
2011-02-17 20:52       ` Herbert Xu
2011-02-18  9:37         ` Jan Glauber
2011-02-18  9:43           ` Herbert Xu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.