Commit 4c3abfbd by Sebastian Renner

Generated own TV and added NIST TC for GCM

parent d503053d
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -4,7 +4,7 @@ LFLAGS=-lm ...@@ -4,7 +4,7 @@ LFLAGS=-lm
all: gcm all: gcm
gcm: genkat_aead.c aes.c cipher.c cipher_wrap.c gcm.c platform.c platform_util.c gcm: gcm.c genkat_aead.c aes.c cipher.c cipher_wrap.c platform.c platform_util.c
$(CC) $(NISTGCCFLAGS) -o $@ $^ $(LFLAGS) $(CC) $(NISTGCCFLAGS) -o $@ $^ $(LFLAGS)
.PHONY: clean .PHONY: clean
......
#define CRYPTO_KEYBYTES 16 #define CRYPTO_KEYBYTES 16
#define CRYPTO_NSECBYTES 0 #define CRYPTO_NSECBYTES 0
#define CRYPTO_NPUBBYTES 12 #define CRYPTO_NPUBBYTES 12
#define CRYPTO_ABYTES 16 #define CRYPTO_ABYTES 0
#define CRYPTO_NOOVERLAP 1 #define CRYPTO_NOOVERLAP 1
/* Reference implementation of ACE-128 AEAD
Written by:
Kalikinkar Mandal <kmandal@uwaterloo.ca>
*/
typedef unsigned long long u64; typedef unsigned long long u64;
int ace_init(
unsigned char *state,
const unsigned char *npub,
const unsigned char *k
);
int ace_ad(
unsigned char *state,
const unsigned char *ad,
const u64 adlen
);
int ace_gentag(
unsigned char *tag,
const unsigned char tlen,
unsigned char *state,
const unsigned char *k
);
int crypto_encrypt( int crypto_encrypt(
unsigned char *c,unsigned long long *clen, unsigned char *c,unsigned long long *clen,
const unsigned char *m,unsigned long long mlen, const unsigned char *m,unsigned long long mlen,
...@@ -56,9 +34,3 @@ int crypto_aead_decrypt( ...@@ -56,9 +34,3 @@ int crypto_aead_decrypt(
const unsigned char *k const unsigned char *k
); );
int ace_gentag(
unsigned char *tag,
const unsigned char tlen,
unsigned char *state,
const unsigned char *k
);
...@@ -73,9 +73,9 @@ int generate_test_vectors() ...@@ -73,9 +73,9 @@ int generate_test_vectors()
unsigned char key[CRYPTO_KEYBYTES]; unsigned char key[CRYPTO_KEYBYTES];
unsigned char nonce[CRYPTO_NPUBBYTES]; unsigned char nonce[CRYPTO_NPUBBYTES];
unsigned char msg[MAX_MESSAGE_LENGTH]; unsigned char msg[MAX_MESSAGE_LENGTH];
unsigned char ct[MAX_MESSAGE_LENGTH + CRYPTO_ABYTES];
unsigned char msg2[MAX_MESSAGE_LENGTH]; unsigned char msg2[MAX_MESSAGE_LENGTH];
unsigned char ad[MAX_ASSOCIATED_DATA_LENGTH]; unsigned char ad[MAX_ASSOCIATED_DATA_LENGTH];
unsigned char ct[MAX_MESSAGE_LENGTH + CRYPTO_ABYTES];
unsigned long long clen, mlen2; unsigned long long clen, mlen2;
int count = 1; int count = 1;
int func_ret, ret_val = KAT_SUCCESS; int func_ret, ret_val = KAT_SUCCESS;
...@@ -84,18 +84,21 @@ int generate_test_vectors() ...@@ -84,18 +84,21 @@ int generate_test_vectors()
init_buffer(nonce, sizeof(nonce)); init_buffer(nonce, sizeof(nonce));
init_buffer(msg, sizeof(msg)); init_buffer(msg, sizeof(msg));
init_buffer(ad, sizeof(ad)); init_buffer(ad, sizeof(ad));
init_buffer(ct, sizeof(ct));
sprintf(fileName, "testvectors/LWC_AEAD_KAT_%d_%d.txt", (CRYPTO_KEYBYTES * 8), (CRYPTO_NPUBBYTES * 8)); sprintf(fileName, "LWC_AEAD_KAT_%d_%d.txt", (CRYPTO_KEYBYTES * 8), (CRYPTO_NPUBBYTES * 8));
if ((fp = fopen(fileName, "w")) == NULL) { if ((fp = fopen(fileName, "w")) == NULL) {
fprintf(stderr, "Couldn't open <%s> for write\n", fileName); fprintf(stderr, "Couldn't open <%s> for write\n", fileName);
return KAT_FILE_OPEN_ERROR; return KAT_FILE_OPEN_ERROR;
} }
for (unsigned long long mlen = 0; (mlen <= MAX_MESSAGE_LENGTH) && (ret_val == KAT_SUCCESS); mlen++) { for (unsigned long long mlen = 0; (mlen <= MAX_MESSAGE_LENGTH) && (ret_val == KAT_SUCCESS); mlen++) {
for (unsigned long long adlen = 0; adlen <= MAX_ASSOCIATED_DATA_LENGTH; adlen++) { for (unsigned long long adlen = 0; adlen <= MAX_ASSOCIATED_DATA_LENGTH; adlen++) {
clen = mlen;
fprintf(fp, "Count = %d\n", count++); fprintf(fp, "Count = %d\n", count++);
fprint_bstr(fp, "Key = ", key, CRYPTO_KEYBYTES); fprint_bstr(fp, "Key = ", key, CRYPTO_KEYBYTES);
...@@ -116,6 +119,7 @@ int generate_test_vectors() ...@@ -116,6 +119,7 @@ int generate_test_vectors()
fprintf(fp, "\n"); fprintf(fp, "\n");
mlen2 = clen;
if ((func_ret = crypto_aead_decrypt(msg2, &mlen2, NULL, ct, clen, ad, adlen, nonce, key)) != 0) { if ((func_ret = crypto_aead_decrypt(msg2, &mlen2, NULL, ct, clen, ad, adlen, nonce, key)) != 0) {
fprintf(fp, "crypto_aead_decrypt returned <%d>\n", func_ret); fprintf(fp, "crypto_aead_decrypt returned <%d>\n", func_ret);
ret_val = KAT_CRYPTO_FAILURE; ret_val = KAT_CRYPTO_FAILURE;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
#include "gcm.h"
int main() {
mbedtls_gcm_self_test(1);
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment