1
1
mirror of https://github.com/henrydcase/pqc.git synced 2024-11-22 23:48:58 +00:00

Build functional tests and test vectors on Windows continuous integration (#47)

Build functional tests and test vectors on Windows continuous integration
This commit is contained in:
Douglas Stebila 2019-02-25 21:59:47 -05:00 committed by GitHub
commit 657a516846
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 70 additions and 4 deletions

View File

@ -33,8 +33,8 @@ THE SOFTWARE.
#if defined(_WIN32) #if defined(_WIN32)
/* Windows */ /* Windows */
#include <wincrypt.h> /* CryptAcquireContext, CryptGenRandom */
#include <windows.h> #include <windows.h>
#include <wincrypt.h> /* CryptAcquireContext, CryptGenRandom */
#endif /* defined(_WIN32) */ #endif /* defined(_WIN32) */
#if defined(__linux__) #if defined(__linux__)

View File

@ -1,19 +1,44 @@
@ECHO OFF @ECHO OFF
SETLOCAL SETLOCAL EnableDelayedExpansion
SET EL=0 SET EL=0
REM CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" REM CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
REM IF ERRORLEVEL 1 SET EL=1 REM IF ERRORLEVEL 1 SET EL=1
:: Build the library files for individual implementations
FOR /D %%K IN (crypto_kem\* crypto_sign\*) DO ( FOR /D %%K IN (crypto_kem\* crypto_sign\*) DO (
FOR /D %%L IN (%%K\*) DO ( FOR /D %%L IN (%%K\*) DO (
cd %%L CD %%L
nmake /f Makefile.Microsoft_nmake clean nmake /f Makefile.Microsoft_nmake clean
IF ERRORLEVEL 1 SET EL=2 IF ERRORLEVEL 1 SET EL=2
nmake /f Makefile.Microsoft_nmake nmake /f Makefile.Microsoft_nmake
IF ERRORLEVEL 1 SET EL=3 IF ERRORLEVEL 1 SET EL=3
cd ..\..\.. CD ..\..\..
) )
) )
:: Build and run the functional tests and test vector programs for each implementation
FOR %%T IN (kem sign) DO (
CD crypto_%%T
FOR /D %%K IN (*) DO (
SET schemeuppercase=%%K
FOR %%B IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO SET "schemeuppercase=!schemeuppercase:%%B=%%B!"
SET "schemeuppercase=!schemeuppercase:-=!"
CD %%K
FOR /D %%L IN (*) DO (
CD ..\..\test
nmake /f Makefile.Microsoft_nmake /E TYPE=%%T SCHEME=%%K SCHEME_UPPERCASE=!schemeuppercase! IMPLEMENTATION=%%L clean
IF ERRORLEVEL 1 SET EL=4
nmake /f Makefile.Microsoft_nmake /E TYPE=%%T SCHEME=%%K SCHEME_UPPERCASE=!schemeuppercase! IMPLEMENTATION=%%L
IF ERRORLEVEL 1 SET EL=5
CD ..
bin\functest_%%K_%%L
IF ERRORLEVEL 1 SET EL=6
CD crypto_%%T\%%K
)
CD ..
)
CD ..
)
EXIT /b %EL% EXIT /b %EL%

View File

@ -0,0 +1,41 @@
# This Makefile can be used with Microsoft Visual Studio's nmake using the command:
# nmake /f Makefile.Microsoft_nmake
# override as desired
TYPE=kem
SCHEME=kyber768
SCHEME_UPPERCASE=KYBER768
IMPLEMENTATION=clean
SCHEME_DIR=..\crypto_$(TYPE)\$(SCHEME)\$(IMPLEMENTATION)
COMMON_DIR=..\common
COMMON_OBJECTS=$(COMMON_DIR)\fips202.obj $(COMMON_DIR)\sha2.obj
COMMON_OBJECTS_NOPATH=fips202.obj sha2.obj
DEST_DIR=..\bin
CFLAGS=/I $(COMMON_DIR) /W1 /WX # FIXME: Should be /W4 but many compiler warnings in common files
all: $(DEST_DIR)\functest_$(SCHEME)_$(IMPLEMENTATION).EXE $(DEST_DIR)\testvectors_$(SCHEME)_$(IMPLEMENTATION).EXE
rebuild-scheme:
cd $(SCHEME_DIR)
nmake /f Makefile.Microsoft_nmake clean
nmake /f Makefile.Microsoft_nmake
cd ..\..\..\test
$(DEST_DIR)\functest_$(SCHEME)_$(IMPLEMENTATION).EXE: rebuild-scheme $(COMMON_OBJECTS) $(COMMON_DIR)\randombytes.obj
-MKDIR $(DEST_DIR)
$(CC) /c crypto_$(TYPE)\functest.c $(CFLAGS) /I $(SCHEME_DIR) /DPQCLEAN_NAMESPACE=PQCLEAN_$(SCHEME_UPPERCASE)
LINK.EXE /OUT:$@ functest.obj $(COMMON_OBJECTS_NOPATH) randombytes.obj $(SCHEME_DIR)\lib$(SCHEME)_$(IMPLEMENTATION).lib Advapi32.lib
$(DEST_DIR)\testvectors_$(SCHEME)_$(IMPLEMENTATION).EXE: rebuild-scheme $(COMMON_OBJECTS) $(COMMON_DIR)\notrandombytes.obj
-MKDIR $(DEST_DIR)
$(CC) /c crypto_$(TYPE)\testvectors.c $(CFLAGS) /I $(SCHEME_DIR) /DPQCLEAN_NAMESPACE=PQCLEAN_$(SCHEME_UPPERCASE)
LINK.EXE /OUT:$@ testvectors.obj $(COMMON_OBJECTS_NOPATH) notrandombytes.obj $(SCHEME_DIR)\lib$(SCHEME)_$(IMPLEMENTATION).lib
clean:
-DEL functest.obj testvectors.obj
-DEL $(COMMON_OBJECTS_NOPATH) randombytes.obj notrandombytes.obj
-DEL $(DEST_DIR)\functest_$(SCHEME)_$(IMPLEMENTATION).EXE