[PATCH 1/2] cipher-selftest: make selftest work with any block-size
Jussi Kivilinna
jussi.kivilinna at iki.fi
Fri May 24 11:43:24 CEST 2013
* cipher/cipher-selftest.c (_gcry_selftest_helper_cbc_128)
(_gcry_selftest_helper_cfb_128, _gcry_selftest_helper_ctr_128): Renamed
functions from '<name>_128' to '<name>'.
(_gcry_selftest_helper_cbc, _gcry_selftest_helper_cfb)
(_gcry_selftest_helper_ctr): Make work with different block sizes.
* cipher/cipher-selftest.h (_gcry_selftest_helper_cbc_128)
(_gcry_selftest_helper_cfb_128, _gcry_selftest_helper_ctr_128): Renamed
prototypes from '<name>_128' to '<name>'.
* cipher/camellia-glue.c (selftest_ctr_128, selftest_cfb_128)
(selftest_ctr_128): Change to use new function names.
* cipher/rijndael.c (selftest_ctr_128, selftest_cfb_128)
(selftest_ctr_128): Change to use new function names.
* cipher/serpent.c (selftest_ctr_128, selftest_cfb_128)
(selftest_ctr_128): Change to use new function names.
--
Signed-off-by: Jussi Kivilinna <jussi.kivilinna at iki.fi>
---
cipher/camellia-glue.c | 6 +-
cipher/cipher-selftest.c | 116 ++++++++++++++++++++++++----------------------
cipher/cipher-selftest.h | 30 ++++++------
cipher/rijndael.c | 6 +-
cipher/serpent.c | 6 +-
5 files changed, 85 insertions(+), 79 deletions(-)
diff --git a/cipher/camellia-glue.c b/cipher/camellia-glue.c
index f9bbb33..4163e82 100644
--- a/cipher/camellia-glue.c
+++ b/cipher/camellia-glue.c
@@ -374,7 +374,7 @@ selftest_ctr_128 (void)
const int blocksize = CAMELLIA_BLOCK_SIZE;
const int context_size = sizeof(CAMELLIA_context);
- return _gcry_selftest_helper_ctr_128("CAMELLIA", &camellia_setkey,
+ return _gcry_selftest_helper_ctr("CAMELLIA", &camellia_setkey,
&camellia_encrypt, &_gcry_camellia_ctr_enc, nblocks, blocksize,
context_size);
}
@@ -388,7 +388,7 @@ selftest_cbc_128 (void)
const int blocksize = CAMELLIA_BLOCK_SIZE;
const int context_size = sizeof(CAMELLIA_context);
- return _gcry_selftest_helper_cbc_128("CAMELLIA", &camellia_setkey,
+ return _gcry_selftest_helper_cbc("CAMELLIA", &camellia_setkey,
&camellia_encrypt, &_gcry_camellia_cbc_dec, nblocks, blocksize,
context_size);
}
@@ -402,7 +402,7 @@ selftest_cfb_128 (void)
const int blocksize = CAMELLIA_BLOCK_SIZE;
const int context_size = sizeof(CAMELLIA_context);
- return _gcry_selftest_helper_cfb_128("CAMELLIA", &camellia_setkey,
+ return _gcry_selftest_helper_cfb("CAMELLIA", &camellia_setkey,
&camellia_encrypt, &_gcry_camellia_cfb_dec, nblocks, blocksize,
context_size);
}
diff --git a/cipher/cipher-selftest.c b/cipher/cipher-selftest.c
index 41eb405..17742e3 100644
--- a/cipher/cipher-selftest.c
+++ b/cipher/cipher-selftest.c
@@ -44,15 +44,14 @@
#endif
-/* Run the self-tests for <block cipher>-CBC-128, tests bulk CBC
+/* Run the self-tests for <block cipher>-CBC-<block size>, tests bulk CBC
decryption. Returns NULL on success. */
const char *
-_gcry_selftest_helper_cbc_128 (const char *cipher,
- gcry_cipher_setkey_t setkey_func,
- gcry_cipher_encrypt_t encrypt_one,
- gcry_cipher_bulk_cbc_dec_t bulk_cbc_dec,
- const int nblocks, const int blocksize,
- const int context_size)
+_gcry_selftest_helper_cbc (const char *cipher, gcry_cipher_setkey_t setkey_func,
+ gcry_cipher_encrypt_t encrypt_one,
+ gcry_cipher_bulk_cbc_dec_t bulk_cbc_dec,
+ const int nblocks, const int blocksize,
+ const int context_size)
{
int i, offs;
unsigned char *ctx, *plaintext, *plaintext2, *ciphertext, *iv, *iv2, *mem;
@@ -63,7 +62,8 @@ _gcry_selftest_helper_cbc_128 (const char *cipher,
0x98,0xBA,0xF9,0x17,0xFE,0xDF,0x95,0x22
};
- /* Allocate buffers, align elements to 16 bytes. */
+ /* Allocate buffers, align first two elements to 16 bytes and latter to
+ block size. */
ctx_aligned_size = context_size + 15;
ctx_aligned_size -= ctx_aligned_size & 0xf;
@@ -97,24 +97,25 @@ _gcry_selftest_helper_cbc_128 (const char *cipher,
/* CBC decrypt. */
bulk_cbc_dec (ctx, iv2, plaintext2, ciphertext, 1);
- if (memcmp (plaintext2, plaintext, 16))
+ if (memcmp (plaintext2, plaintext, blocksize))
{
gcry_free (mem);
#ifdef HAVE_SYSLOG
syslog (LOG_USER|LOG_WARNING, "Libgcrypt warning: "
- "%s-128-CBC test failed (plaintext mismatch)", cipher);
+ "%s-CBC-%d test failed (plaintext mismatch)", cipher,
+ blocksize * 8);
#endif
- return "selftest for 128 bit CBC failed - see syslog for details";
+ return "selftest for CBC failed - see syslog for details";
}
- if (memcmp (iv2, iv, 16))
+ if (memcmp (iv2, iv, blocksize))
{
gcry_free (mem);
#ifdef HAVE_SYSLOG
syslog (LOG_USER|LOG_WARNING, "Libgcrypt warning: "
- "%s-128-CBC test failed (IV mismatch)", cipher);
+ "%s-CBC-%d test failed (IV mismatch)", cipher, blocksize * 8);
#endif
- return "selftest for 128 bit CBC failed - see syslog for details";
+ return "selftest for CBC failed - see syslog for details";
}
/* Test parallelized code paths */
@@ -140,35 +141,34 @@ _gcry_selftest_helper_cbc_128 (const char *cipher,
gcry_free (mem);
#ifdef HAVE_SYSLOG
syslog (LOG_USER|LOG_WARNING, "Libgcrypt warning: "
- "%s-128-CBC test failed (plaintext mismatch, parallel path)",
- cipher);
+ "%s-CBC-%d test failed (plaintext mismatch, parallel path)",
+ cipher, blocksize * 8);
#endif
- return "selftest for 128 bit CBC failed - see syslog for details";
+ return "selftest for CBC failed - see syslog for details";
}
if (memcmp (iv2, iv, blocksize))
{
gcry_free (mem);
#ifdef HAVE_SYSLOG
syslog (LOG_USER|LOG_WARNING, "Libgcrypt warning: "
- "%s-128-CBC test failed (IV mismatch, parallel path)",
- cipher);
+ "%s-CBC-%d test failed (IV mismatch, parallel path)",
+ cipher, blocksize * 8);
#endif
- return "selftest for 128 bit CBC failed - see syslog for details";
+ return "selftest for CBC failed - see syslog for details";
}
gcry_free (mem);
return NULL;
}
-/* Run the self-tests for <block cipher>-CFB-128, tests bulk CFB
+/* Run the self-tests for <block cipher>-CFB-<block size>, tests bulk CFB
decryption. Returns NULL on success. */
const char *
-_gcry_selftest_helper_cfb_128 (const char *cipher,
- gcry_cipher_setkey_t setkey_func,
- gcry_cipher_encrypt_t encrypt_one,
- gcry_cipher_bulk_cfb_dec_t bulk_cfb_dec,
- const int nblocks, const int blocksize,
- const int context_size)
+_gcry_selftest_helper_cfb (const char *cipher, gcry_cipher_setkey_t setkey_func,
+ gcry_cipher_encrypt_t encrypt_one,
+ gcry_cipher_bulk_cfb_dec_t bulk_cfb_dec,
+ const int nblocks, const int blocksize,
+ const int context_size)
{
int i, offs;
unsigned char *ctx, *plaintext, *plaintext2, *ciphertext, *iv, *iv2, *mem;
@@ -179,7 +179,8 @@ _gcry_selftest_helper_cfb_128 (const char *cipher,
0x98,0xBA,0xF9,0x17,0xFE,0xDF,0x95,0x33
};
- /* Allocate buffers, align elements to 16 bytes. */
+ /* Allocate buffers, align first two elements to 16 bytes and latter to
+ block size. */
ctx_aligned_size = context_size + 15;
ctx_aligned_size -= ctx_aligned_size & 0xf;
@@ -217,9 +218,10 @@ _gcry_selftest_helper_cfb_128 (const char *cipher,
gcry_free(mem);
#ifdef HAVE_SYSLOG
syslog (LOG_USER|LOG_WARNING, "Libgcrypt warning: "
- "%s-128-CFB test failed (plaintext mismatch)", cipher);
+ "%s-CFB-%d test failed (plaintext mismatch)", cipher,
+ blocksize * 8);
#endif
- return "selftest for 128 bit CFB failed - see syslog for details";
+ return "selftest for CFB failed - see syslog for details";
}
if (memcmp(iv2, iv, blocksize))
@@ -227,9 +229,9 @@ _gcry_selftest_helper_cfb_128 (const char *cipher,
gcry_free(mem);
#ifdef HAVE_SYSLOG
syslog (LOG_USER|LOG_WARNING, "Libgcrypt warning: "
- "%s-128-CFB test failed (IV mismatch)", cipher);
+ "%s-CFB-%d test failed (IV mismatch)", cipher, blocksize * 8);
#endif
- return "selftest for 128 bit CFB failed - see syslog for details";
+ return "selftest for CFB failed - see syslog for details";
}
/* Test parallelized code paths */
@@ -254,34 +256,34 @@ _gcry_selftest_helper_cfb_128 (const char *cipher,
gcry_free(mem);
#ifdef HAVE_SYSLOG
syslog (LOG_USER|LOG_WARNING, "Libgcrypt warning: "
- "%s-128-CFB test failed (plaintext mismatch, parallel path)",
- cipher);
+ "%s-CFB-%d test failed (plaintext mismatch, parallel path)",
+ cipher, blocksize * 8);
#endif
- return "selftest for 128 bit CFB failed - see syslog for details";
+ return "selftest for CFB failed - see syslog for details";
}
if (memcmp(iv2, iv, blocksize))
{
gcry_free(mem);
#ifdef HAVE_SYSLOG
syslog (LOG_USER|LOG_WARNING, "Libgcrypt warning: "
- "%s-128-CFB test failed (IV mismatch, parallel path)", cipher);
+ "%s-CFB-%d test failed (IV mismatch, parallel path)", cipher,
+ blocksize * 8);
#endif
- return "selftest for 128 bit CFB failed - see syslog for details";
+ return "selftest for CFB failed - see syslog for details";
}
gcry_free(mem);
return NULL;
}
-/* Run the self-tests for <block cipher>-CTR-128, tests IV increment of bulk CTR
- encryption. Returns NULL on success. */
+/* Run the self-tests for <block cipher>-CTR-<block size>, tests IV increment
+ of bulk CTR encryption. Returns NULL on success. */
const char *
-_gcry_selftest_helper_ctr_128 (const char *cipher,
- gcry_cipher_setkey_t setkey_func,
- gcry_cipher_encrypt_t encrypt_one,
- gcry_cipher_bulk_ctr_enc_t bulk_ctr_enc,
- const int nblocks, const int blocksize,
- const int context_size)
+_gcry_selftest_helper_ctr (const char *cipher, gcry_cipher_setkey_t setkey_func,
+ gcry_cipher_encrypt_t encrypt_one,
+ gcry_cipher_bulk_ctr_enc_t bulk_ctr_enc,
+ const int nblocks, const int blocksize,
+ const int context_size)
{
int i, j, offs, diff;
unsigned char *ctx, *plaintext, *plaintext2, *ciphertext, *iv, *iv2, *mem;
@@ -292,7 +294,8 @@ _gcry_selftest_helper_ctr_128 (const char *cipher,
0x98,0xBA,0xF9,0x17,0xFE,0xDF,0x95,0x21
};
- /* Allocate buffers, align elements to 16 bytes. */
+ /* Allocate buffers, align first two elements to 16 bytes and latter to
+ block size. */
ctx_aligned_size = context_size + 15;
ctx_aligned_size -= ctx_aligned_size & 0xf;
@@ -337,9 +340,10 @@ _gcry_selftest_helper_ctr_128 (const char *cipher,
gcry_free (mem);
#ifdef HAVE_SYSLOG
syslog (LOG_USER|LOG_WARNING, "Libgcrypt warning: "
- "%s-128-CTR test failed (plaintext mismatch)", cipher);
+ "%s-CTR-%d test failed (plaintext mismatch)", cipher,
+ blocksize * 8);
#endif
- return "selftest for 128 bit CTR failed - see syslog for details";
+ return "selftest for CTR failed - see syslog for details";
}
if (memcmp (iv2, iv, blocksize))
@@ -347,9 +351,10 @@ _gcry_selftest_helper_ctr_128 (const char *cipher,
gcry_free (mem);
#ifdef HAVE_SYSLOG
syslog (LOG_USER|LOG_WARNING, "Libgcrypt warning: "
- "%s-128-CTR test failed (IV mismatch)", cipher);
+ "%s-CTR-%d test failed (IV mismatch)", cipher,
+ blocksize * 8);
#endif
- return "selftest for 128 bit CTR failed - see syslog for details";
+ return "selftest for CTR failed - see syslog for details";
}
/* Test parallelized code paths */
@@ -385,19 +390,20 @@ _gcry_selftest_helper_ctr_128 (const char *cipher,
gcry_free (mem);
#ifdef HAVE_SYSLOG
syslog (LOG_USER|LOG_WARNING, "Libgcrypt warning: "
- "%s-128-CTR test failed (plaintext mismatch, diff: %d)", cipher,
- diff);
+ "%s-CTR-%d test failed (plaintext mismatch, diff: %d)", cipher,
+ blocksize * 8, diff);
#endif
- return "selftest for 128 bit CTR failed - see syslog for details";
+ return "selftest for CTR failed - see syslog for details";
}
if (memcmp(iv2, iv, blocksize))
{
gcry_free (mem);
#ifdef HAVE_SYSLOG
syslog (LOG_USER|LOG_WARNING, "Libgcrypt warning: "
- "%s-128-CTR test failed (IV mismatch, diff: %d)", cipher, diff);
+ "%s-CTR-%d test failed (IV mismatch, diff: %d)", cipher,
+ blocksize * 8, diff);
#endif
- return "selftest for 128 bit CTR failed - see syslog for details";
+ return "selftest for CTR failed - see syslog for details";
}
}
diff --git a/cipher/cipher-selftest.h b/cipher/cipher-selftest.h
index 30bc251..41d77af 100644
--- a/cipher/cipher-selftest.h
+++ b/cipher/cipher-selftest.h
@@ -42,26 +42,26 @@ typedef void (*gcry_cipher_bulk_ctr_enc_t)(void *context, unsigned char *iv,
/* Helper function for bulk CBC decryption selftest */
const char *
-_gcry_selftest_helper_cbc_128 (const char *cipher, gcry_cipher_setkey_t setkey,
- gcry_cipher_encrypt_t encrypt_one,
- gcry_cipher_bulk_cbc_dec_t bulk_cbc_dec,
- const int nblocks, const int blocksize,
- const int context_size);
+_gcry_selftest_helper_cbc (const char *cipher, gcry_cipher_setkey_t setkey,
+ gcry_cipher_encrypt_t encrypt_one,
+ gcry_cipher_bulk_cbc_dec_t bulk_cbc_dec,
+ const int nblocks, const int blocksize,
+ const int context_size);
/* Helper function for bulk CFB decryption selftest */
const char *
-_gcry_selftest_helper_cfb_128 (const char *cipher, gcry_cipher_setkey_t setkey,
- gcry_cipher_encrypt_t encrypt_one,
- gcry_cipher_bulk_cfb_dec_t bulk_cfb_dec,
- const int nblocks, const int blocksize,
- const int context_size);
+_gcry_selftest_helper_cfb (const char *cipher, gcry_cipher_setkey_t setkey,
+ gcry_cipher_encrypt_t encrypt_one,
+ gcry_cipher_bulk_cfb_dec_t bulk_cfb_dec,
+ const int nblocks, const int blocksize,
+ const int context_size);
/* Helper function for bulk CTR encryption selftest */
const char *
-_gcry_selftest_helper_ctr_128 (const char *cipher, gcry_cipher_setkey_t setkey,
- gcry_cipher_encrypt_t encrypt_one,
- gcry_cipher_bulk_ctr_enc_t bulk_ctr_enc,
- const int nblocks, const int blocksize,
- const int context_size);
+_gcry_selftest_helper_ctr (const char *cipher, gcry_cipher_setkey_t setkey,
+ gcry_cipher_encrypt_t encrypt_one,
+ gcry_cipher_bulk_ctr_enc_t bulk_ctr_enc,
+ const int nblocks, const int blocksize,
+ const int context_size);
#endif /*G10_SELFTEST_HELP_H*/
diff --git a/cipher/rijndael.c b/cipher/rijndael.c
index 9f075ff..ac2fcfb 100644
--- a/cipher/rijndael.c
+++ b/cipher/rijndael.c
@@ -2168,7 +2168,7 @@ selftest_ctr_128 (void)
const int blocksize = BLOCKSIZE;
const int context_size = sizeof(RIJNDAEL_context);
- return _gcry_selftest_helper_ctr_128("AES", &rijndael_setkey,
+ return _gcry_selftest_helper_ctr("AES", &rijndael_setkey,
&rijndael_encrypt, &_gcry_aes_ctr_enc, nblocks, blocksize,
context_size);
}
@@ -2183,7 +2183,7 @@ selftest_cbc_128 (void)
const int blocksize = BLOCKSIZE;
const int context_size = sizeof(RIJNDAEL_context);
- return _gcry_selftest_helper_cbc_128("AES", &rijndael_setkey,
+ return _gcry_selftest_helper_cbc("AES", &rijndael_setkey,
&rijndael_encrypt, &_gcry_aes_cbc_dec, nblocks, blocksize,
context_size);
}
@@ -2198,7 +2198,7 @@ selftest_cfb_128 (void)
const int blocksize = BLOCKSIZE;
const int context_size = sizeof(RIJNDAEL_context);
- return _gcry_selftest_helper_cfb_128("AES", &rijndael_setkey,
+ return _gcry_selftest_helper_cfb("AES", &rijndael_setkey,
&rijndael_encrypt, &_gcry_aes_cfb_dec, nblocks, blocksize,
context_size);
}
diff --git a/cipher/serpent.c b/cipher/serpent.c
index 95ac7c1..c72951e 100644
--- a/cipher/serpent.c
+++ b/cipher/serpent.c
@@ -997,7 +997,7 @@ selftest_ctr_128 (void)
const int blocksize = sizeof(serpent_block_t);
const int context_size = sizeof(serpent_context_t);
- return _gcry_selftest_helper_ctr_128("SERPENT", &serpent_setkey,
+ return _gcry_selftest_helper_ctr("SERPENT", &serpent_setkey,
&serpent_encrypt, &_gcry_serpent_ctr_enc, nblocks, blocksize,
context_size);
}
@@ -1012,7 +1012,7 @@ selftest_cbc_128 (void)
const int blocksize = sizeof(serpent_block_t);
const int context_size = sizeof(serpent_context_t);
- return _gcry_selftest_helper_cbc_128("SERPENT", &serpent_setkey,
+ return _gcry_selftest_helper_cbc("SERPENT", &serpent_setkey,
&serpent_encrypt, &_gcry_serpent_cbc_dec, nblocks, blocksize,
context_size);
}
@@ -1027,7 +1027,7 @@ selftest_cfb_128 (void)
const int blocksize = sizeof(serpent_block_t);
const int context_size = sizeof(serpent_context_t);
- return _gcry_selftest_helper_cfb_128("SERPENT", &serpent_setkey,
+ return _gcry_selftest_helper_cfb("SERPENT", &serpent_setkey,
&serpent_encrypt, &_gcry_serpent_cfb_dec, nblocks, blocksize,
context_size);
}
More information about the Gcrypt-devel
mailing list