Skip to content

Instantly share code, notes, and snippets.

@rcombs

rcombs/stdin Secret

Created October 12, 2015 20:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rcombs/199d871da4715f60f8f4 to your computer and use it in GitHub Desktop.
Save rcombs/199d871da4715f60f8f4 to your computer and use it in GitHub Desktop.
diff --git a/tools/crypto_bench.c b/tools/crypto_bench.c
index b3b24a6..2cca872 100644
--- a/tools/crypto_bench.c
+++ b/tools/crypto_bench.c
@@ -64,6 +64,7 @@ struct hash_impl {
const char *name;
void (*run)(uint8_t *output, const uint8_t *input, unsigned size);
const char *output;
+ const int cpu_versions;
};
/***************************************************************************
@@ -118,6 +119,24 @@ static void run_lavu_aes128(uint8_t *output,
av_aes_crypt(aes, output, input, size >> 4, NULL, 0);
}
+static void run_lavu_aes192(uint8_t *output, const uint8_t *input, unsigned size)
+{
+ static struct AVAES *aes;
+ if (!aes && !(aes = av_aes_alloc()))
+ fatal_error("out of memory");
+ av_aes_init(aes, hardcoded_key, 192, 0);
+ av_aes_crypt(aes, output, input, size >> 4, NULL, 0);
+}
+
+static void run_lavu_aes256(uint8_t *output, const uint8_t *input, unsigned size)
+{
+ static struct AVAES *aes;
+ if (!aes && !(aes = av_aes_alloc()))
+ fatal_error("out of memory");
+ av_aes_init(aes, hardcoded_key, 256, 0);
+ av_aes_crypt(aes, output, input, size >> 4, NULL, 0);
+}
+
static void run_lavu_blowfish(uint8_t *output,
const uint8_t *input, unsigned size)
{
@@ -218,6 +237,28 @@ static void run_crypto_aes128(uint8_t *output,
AES_encrypt(input + i, output + i, &aes);
}
+static void run_crypto_aes192(uint8_t *output, const uint8_t *input, unsigned size)
+{
+ AES_KEY aes;
+ unsigned i;
+
+ AES_set_encrypt_key(hardcoded_key, 192, &aes);
+ size -= 15;
+ for (i = 0; i < size; i += 16)
+ AES_encrypt(input + i, output + i, &aes);
+}
+
+static void run_crypto_aes256(uint8_t *output, const uint8_t *input, unsigned size)
+{
+ AES_KEY aes;
+ unsigned i;
+
+ AES_set_encrypt_key(hardcoded_key, 256, &aes);
+ size -= 15;
+ for (i = 0; i < size; i += 16)
+ AES_encrypt(input + i, output + i, &aes);
+}
+
static void run_crypto_blowfish(uint8_t *output,
const uint8_t *input, unsigned size)
{
@@ -297,6 +338,24 @@ static void run_gcrypt_aes128(uint8_t *output,
gcry_cipher_encrypt(aes, output, size, input, size);
}
+static void run_gcrypt_aes192(uint8_t *output, const uint8_t *input, unsigned size)
+{
+ static gcry_cipher_hd_t aes;
+ if (!aes)
+ gcry_cipher_open(&aes, GCRY_CIPHER_AES192, GCRY_CIPHER_MODE_ECB, 0);
+ gcry_cipher_setkey(aes, hardcoded_key, 24);
+ gcry_cipher_encrypt(aes, output, size, input, size);
+}
+
+static void run_gcrypt_aes256(uint8_t *output, const uint8_t *input, unsigned size)
+{
+ static gcry_cipher_hd_t aes;
+ if (!aes)
+ gcry_cipher_open(&aes, GCRY_CIPHER_AES256, GCRY_CIPHER_MODE_ECB, 0);
+ gcry_cipher_setkey(aes, hardcoded_key, 32);
+ gcry_cipher_encrypt(aes, output, size, input, size);
+}
+
static void run_gcrypt_blowfish(uint8_t *output,
const uint8_t *input, unsigned size)
{
@@ -379,6 +438,28 @@ static void run_tomcrypt_aes128(uint8_t *output,
aes_ecb_encrypt(input + i, output + i, &aes);
}
+static void run_tomcrypt_aes192(uint8_t *output, const uint8_t *input, unsigned size)
+{
+ symmetric_key aes;
+ unsigned i;
+
+ aes_setup(hardcoded_key, 24, 0, &aes);
+ size -= 15;
+ for (i = 0; i < size; i += 16)
+ aes_ecb_encrypt(input + i, output + i, &aes);
+}
+
+static void run_tomcrypt_aes256(uint8_t *output, const uint8_t *input, unsigned size)
+{
+ symmetric_key aes;
+ unsigned i;
+
+ aes_setup(hardcoded_key, 32, 0, &aes);
+ size -= 15;
+ for (i = 0; i < size; i += 16)
+ aes_ecb_encrypt(input + i, output + i, &aes);
+}
+
static void run_tomcrypt_blowfish(uint8_t *output,
const uint8_t *input, unsigned size)
{
@@ -502,8 +583,8 @@ static void run_implementation(const uint8_t *input, uint8_t *output,
fflush(stdout);
}
-#define IMPL_USE(lib, name, symbol, output) \
- { #lib, name, run_ ## lib ## _ ## symbol, output },
+#define IMPL_USE(lib, name, symbol, output, ...) \
+ { #lib, name, run_ ## lib ## _ ## symbol, output, __VA_ARGS__ },
#define IMPL(lib, ...) IMPL_USE_ ## lib(lib, __VA_ARGS__)
#define IMPL_ALL(...) \
IMPL(lavu, __VA_ARGS__) \
@@ -521,6 +602,8 @@ struct hash_impl implementations[] = {
IMPL(tomcrypt, "RIPEMD-128", ripemd128, "9ab8bfba2ddccc5d99c9d4cdfb844a5f")
IMPL_ALL("RIPEMD-160", ripemd160, "62a5321e4fc8784903bb43ab7752c75f8b25af00")
IMPL_ALL("AES-128", aes128, "crc:ff6bc888")
+ IMPL_ALL("AES-192", aes192, "crc:1022815b")
+ IMPL_ALL("AES-256", aes256, "crc:792e4e8a")
IMPL_ALL("CAMELLIA", camellia, "crc:7abb59a7")
IMPL_ALL("CAST-128", cast128, "crc:456aa584")
IMPL_ALL("BLOWFISH", blowfish, "crc:33e8aa74")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment