Ver a proveniência

Added python test running all unit tests of common crypto functions

tags/v0.0.1
Peter Schwabe há 5 anos
ascendente
cometimento
28337843b9
3 ficheiros alterados com 40 adições e 8 eliminações
  1. +3
    -7
      test/Makefile
  2. +8
    -1
      test/common/aes.c
  3. +29
    -0
      test/test_common.py

+ 3
- 7
test/Makefile Ver ficheiro

@@ -10,8 +10,8 @@ SCHEME_UPPERCASE=$(shell echo $(SCHEME) | tr a-z A-Z | sed 's/-//g')
IMPLEMENTATION_UPPERCASE=$(shell echo $(IMPLEMENTATION) | tr a-z A-Z | sed 's/-//g')

COMMON_DIR=../common
COMMON_FILES=$(COMMON_DIR)/fips202.c $(COMMON_DIR)/sha2.c
COMMON_HEADERS=$(COMMON_DIR)/fips202.h $(COMMON_DIR)/randombytes.h $(COMMON_DIR)/sha2.h
COMMON_FILES=$(COMMON_DIR)/aes.c $(COMMON_DIR)/sha2.c $(COMMON_DIR)/fips202.c
COMMON_HEADERS=$(COMMON_DIR)/*.h
DEST_DIR=../bin

# This -Wall was supported by the European Commission through the ERC Starting Grant 805031 (EPOQUE)
@@ -38,11 +38,7 @@ testvectors: $(DEST_DIR)/testvectors_$(SCHEME)_$(IMPLEMENTATION)
.PHONY: printparams
printparams: $(DEST_DIR)/printparams_$(SCHEME)_$(IMPLEMENTATION)

$(DEST_DIR)/test_fips202: common/fips202.c $(COMMON_FILES)
mkdir -p $(DEST_DIR)
$(CC) $(CFLAGS) $< $(COMMON_FILES) -o $@

$(DEST_DIR)/test_sha2: common/sha2.c $(COMMON_FILES)
$(DEST_DIR)/test_%: common/%.c $(COMMON_FILES)
mkdir -p $(DEST_DIR)
$(CC) $(CFLAGS) $< $(COMMON_FILES) -o $@



+ 8
- 1
test/common/aes.c Ver ficheiro

@@ -50,6 +50,7 @@ const unsigned char nonce[AESCTR_NONCEBYTES] = {
int main(void)
{
unsigned char ct[67];
int r = 0;
aes128ctx ctx128;
aes192ctx ctx192;
aes256ctx ctx256;
@@ -61,33 +62,39 @@ int main(void)
aes128_ctr(ct, 67, nonce, &ctx128);
if(memcmp(ct, stream128, 67)) {
printf("ERROR AES128CTR output does not match test vector.\n");
r = 1;
}

aes192_ctr(ct, 67, nonce, &ctx192);
if(memcmp(ct, stream192, 67)) {
printf("ERROR AES192CTR output does not match test vector.\n");
r = 1;
}

aes256_ctr(ct, 67, nonce, &ctx256);
if(memcmp(ct, stream256, 67)) {
printf("ERROR AES256CTR output does not match test vector.\n");
r = 1;
}


aes128_ecb(ct, msg, 3, &ctx128);
if(memcmp(ct, ct128, 48)) {
printf("ERROR AES128ECB output does not match test vector.\n");
r = 1;
}

aes192_ecb(ct, msg, 3, &ctx192);
if(memcmp(ct, ct192, 48)) {
printf("ERROR AES192ECB output does not match test vector.\n");
r = 1;
}

aes256_ecb(ct, msg, 3, &ctx256);
if(memcmp(ct, ct256, 48)) {
printf("ERROR AES256ECB output does not match test vector.\n");
r = 1;
}

return 0;
return r;
}

+ 29
- 0
test/test_common.py Ver ficheiro

@@ -0,0 +1,29 @@
"""
Runs functional tests for common crypto functions (e.g., fips202, sha2, aes).
"""

import os
import re
import platform
import unittest

import pqclean
import helpers


def test_common():
if os.name != 'nt': # Cannot build on Windows at the moment
for d in os.listdir('common'):
primitive = re.sub("\.c$", "", d)
binname = os.path.join('..', 'bin', 'test_'+primitive)
helpers.make(binname)
helpers.run_subprocess(binname)


if __name__ == '__main__':
try:
import nose2
nose2.main()
except ImportError:
import nose
nose.runmodule()

Carregando…
Cancelar
Guardar