crypto: tcrypt - Add ChaCha20/Poly1305 speed tests
authorMartin Willi <martin@strongswan.org>
Thu, 16 Jul 2015 17:13:59 +0000 (19:13 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 17 Jul 2015 13:20:20 +0000 (21:20 +0800)
Adds individual ChaCha20 and Poly1305 and a combined rfc7539esp AEAD speed
test using mode numbers 214, 321 and 213. For Poly1305 we add a specific
speed template, as it expects the key prepended to the input data.

Signed-off-by: Martin Willi <martin@strongswan.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/tcrypt.c
crypto/tcrypt.h

index 73ed4f2c8e5d16f746ad946e58a271957f91298d..e9a05ba2bfb4468d9fc6550bdf27fdb0a0adad9c 100644 (file)
@@ -1793,6 +1793,17 @@ static int do_test(const char *alg, u32 type, u32 mask, int m)
                                NULL, 0, 16, 16, aead_speed_template_19);
                break;
 
+       case 213:
+               test_aead_speed("rfc7539esp(chacha20,poly1305)", ENCRYPT, sec,
+                               NULL, 0, 16, 8, aead_speed_template_36);
+               break;
+
+       case 214:
+               test_cipher_speed("chacha20", ENCRYPT, sec, NULL, 0,
+                                 speed_template_32);
+               break;
+
+
        case 300:
                if (alg) {
                        test_hash_speed(alg, sec, generic_hash_speed_template);
@@ -1881,6 +1892,10 @@ static int do_test(const char *alg, u32 type, u32 mask, int m)
                test_hash_speed("crct10dif", sec, generic_hash_speed_template);
                if (mode > 300 && mode < 400) break;
 
+       case 321:
+               test_hash_speed("poly1305", sec, poly1305_speed_template);
+               if (mode > 300 && mode < 400) break;
+
        case 399:
                break;
 
index 6cc1b856871b96d5b0d9064fc6ae028649fe89b6..f0bfee1bb293809355d1c7455042fc5e7753b826 100644 (file)
@@ -61,12 +61,14 @@ static u8 speed_template_32_40_48[] = {32, 40, 48, 0};
 static u8 speed_template_32_48[] = {32, 48, 0};
 static u8 speed_template_32_48_64[] = {32, 48, 64, 0};
 static u8 speed_template_32_64[] = {32, 64, 0};
+static u8 speed_template_32[] = {32, 0};
 
 /*
  * AEAD speed tests
  */
 static u8 aead_speed_template_19[] = {19, 0};
 static u8 aead_speed_template_20[] = {20, 0};
+static u8 aead_speed_template_36[] = {36, 0};
 
 /*
  * Digest speed tests
@@ -127,4 +129,22 @@ static struct hash_speed hash_speed_template_16[] = {
        {  .blen = 0,   .plen = 0,      .klen = 0, }
 };
 
+static struct hash_speed poly1305_speed_template[] = {
+       { .blen = 96,   .plen = 16, },
+       { .blen = 96,   .plen = 32, },
+       { .blen = 96,   .plen = 96, },
+       { .blen = 288,  .plen = 16, },
+       { .blen = 288,  .plen = 32, },
+       { .blen = 288,  .plen = 288, },
+       { .blen = 1056, .plen = 32, },
+       { .blen = 1056, .plen = 1056, },
+       { .blen = 2080, .plen = 32, },
+       { .blen = 2080, .plen = 2080, },
+       { .blen = 4128, .plen = 4128, },
+       { .blen = 8224, .plen = 8224, },
+
+       /* End marker */
+       {  .blen = 0,   .plen = 0, }
+};
+
 #endif /* _CRYPTO_TCRYPT_H */