diff --git a/.gitignore b/.gitignore index fa36d8c1..f8412e51 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ -*.dSYM -*.pyc -.DS_Store -*.req -*.rsp -*.o \ No newline at end of file +tvecs1024 +tvecs1024-90s +tvecs512 +tvecs512-90s +tvecs768 +tvecs768-90s diff --git a/SHA256SUMS b/SHA256SUMS new file mode 100644 index 00000000..fe1002c9 --- /dev/null +++ b/SHA256SUMS @@ -0,0 +1,6 @@ +2d46d36da383c3ece6fc46512162dabb73bf73a92ee90f29fbf990873766c223 tvecs1024 +761e10eda09e1f02204ca5484c2a9f908e8866ade289c1deabe9d0769233df67 tvecs1024-90s +005c74399ff14d2244905f089c6d408a6bb33828bc78d5b77a3a01b227affbca tvecs512 +71099d65a79fc1881836dd7cf8802fcce5d81cd64acb35c80102090d800bf131 tvecs512-90s +cca4a24c53f7e8baddddd63bff32ad1e0b1590c742b545e0f682cb4202ac2051 tvecs768 +0bf24733d4ee523b60e43a25e85b577eba7ccc6109ba57b798904dd8d08828c0 tvecs768-90s diff --git a/avx2/.gitignore b/avx2/.gitignore new file mode 120000 index 00000000..bb5d0e1c --- /dev/null +++ b/avx2/.gitignore @@ -0,0 +1 @@ +../ref/.gitignore \ No newline at end of file diff --git a/avx2/Makefile b/avx2/Makefile index 748bd102..1c1667a9 100644 --- a/avx2/Makefile +++ b/avx2/Makefile @@ -1,9 +1,9 @@ CC = /usr/bin/cc CFLAGS += -Wall -Wextra -Wpedantic -Wmissing-prototypes -Wredundant-decls \ -Wshadow -Wpointer-arith -march=native -mtune=native -O3 \ - -fomit-frame-pointer -fstrict-aliasing -flto + -fomit-frame-pointer -flto #CFLAGS += -DUSE_RDPMC -NISTFLAGS = -Wno-unused-result -O3 -fomit-frame-pointer -march=native -mtune=native +NISTFLAGS = -Wno-unused-result -O3 -march=native -mtune=native RM = /bin/rm SOURCES = kem.c indcpa.c polyvec.c poly.c fq.S shuffle.S ntt.S invntt.S \ @@ -16,6 +16,8 @@ HEADERS = params.h api.h indcpa.h polyvec.h poly.h reduce.h fq.inc shuffle.inc \ HEADERSKECCAK = $(HEADERS) fips202.h fips202x4.h HEADERSNINETIES = $(HEADERS) aes256ctr.h +.PHONY: all shared clean + all: \ test_kyber512 \ test_kyber768 \ @@ -43,17 +45,48 @@ all: \ test_speed1024-90s \ PQCgenKAT_kem -kyber512.so: $(SOURCES) $(HEADERS) symmetric-shake.c +shared: \ + kyber512_avx2.so \ + kyber768_avx2.so \ + kyber1024_avx2.so \ + kyber512-90s_avx2.so \ + kyber768-90s_avx2.so \ + kyber1024-90s_avx2.so \ + pqcrystals_ref.so \ + pqcrystals_avx2.so \ + pqcrystals_avx2_aes256ctr.so + +keccak4x/KeccakP-1600-times4-SIMD256.o: \ + keccak4x/KeccakP-1600-times4-SIMD256.c \ + keccak4x/KeccakP-1600-times4-SnP.h \ + keccak4x/KeccakP-1600-unrolling.macros \ + keccak4x/SIMD256-config.h \ + keccak4x/align.h \ + keccak4x/brg_endian.h + $(CC) $(CFLAGS) -c $< -o $@ + +pqcrystals_ref.so: fips202.c fips202.h + $(CC) -shared -fPIC $(CFLAGS) -o $@ $< + +pqcrystals_avx2.so: fips202x4.c fips202x4.h \ + keccak4x/KeccakP-1600-times4-SIMD256.o + $(CC) -shared -fPIC $(CFLAGS) -o $@ $< \ + keccak4x/KeccakP-1600-times4-SIMD256.o + +pqcrystals_avx2_aes256ctr.so: aes256ctr.c aes256ctr.h + $(CC) -shared -fPIC $(CFLAGS) -o $@ $< + +kyber512_avx2.so: $(SOURCES) $(HEADERS) symmetric-shake.c $(CC) -shared -fpic $(CFLAGS) -DKYBER_K=2 $(SOURCES) \ - symmetric-shake.c -o kyber512.so + symmetric-shake.c -o kyber512_avx2.so -kyber768.so: $(SOURCES) $(HEADERS) symmetric-shake.c +kyber768_avx2.so: $(SOURCES) $(HEADERS) symmetric-shake.c $(CC) -shared -fpic $(CFLAGS) -DKYBER_K=3 $(SOURCES) \ - symmetric-shake.c -o kyber768.so + symmetric-shake.c -o kyber768_avx2.so -kyber1024.so: $(SOURCES) $(HEADERS) symmetric-shake.c +kyber1024_avx2.so: $(SOURCES) $(HEADERS) symmetric-shake.c $(CC) -shared -fpic $(CFLAGS) -DKYBER_K=4 $(SOURCES) \ - symmetric-shake.c -o kyber1024.so + symmetric-shake.c -o kyber1024_avx2.so test_kyber512: $(SOURCESKECCAK) $(HEADERSKECCAK) test_kyber.c randombytes.c $(CC) $(CFLAGS) -DKYBER_K=2 $(SOURCESKECCAK) randombytes.c test_kyber.c -o test_kyber512 @@ -82,7 +115,7 @@ test_vectors768: $(SOURCESKECCAK) $(HEADERSKECCAK) test_vectors.c test_vectors1024: $(SOURCESKECCAK) $(HEADERSKECCAK) test_vectors.c $(CC) $(CFLAGS) -DKYBER_K=4 $(SOURCESKECCAK) test_vectors.c -o test_vectors1024 -test_speed512: $(SOURCESKECCAK) $(HEADERSKECCAK) cpucycles.h cpucycles.c test_speed.c speed_print.h speed_print.c randombytes.c kex.c kex.h +test_speed512: $(SOURCESKECCAK) $(HEADERSKECCAK) cpucycles.h cpucycles.c speed_print.h speed_print.c test_speed.c randombytes.c kex.c kex.h $(CC) $(CFLAGS) -DKYBER_K=2 $(SOURCESKECCAK) randombytes.c cpucycles.c speed_print.c kex.c test_speed.c -o test_speed512 test_speed768: $(SOURCESKECCAK) $(HEADERSKECCAK) cpucycles.h cpucycles.c speed_print.h speed_print.c test_speed.c randombytes.c kex.c kex.h @@ -91,17 +124,14 @@ test_speed768: $(SOURCESKECCAK) $(HEADERSKECCAK) cpucycles.h cpucycles.c speed_p test_speed1024: $(SOURCESKECCAK) $(HEADERSKECCAK) cpucycles.h cpucycles.c speed_print.h speed_print.c test_speed.c randombytes.c kex.c kex.h $(CC) $(CFLAGS) -DKYBER_K=4 $(SOURCESKECCAK) randombytes.c cpucycles.c speed_print.c kex.c test_speed.c -o test_speed1024 -kyber512-90s.so: $(SOURCES) $(HEADERS) - $(CC) -shared -fpic $(CFLAGS) -DKYBER_K=2 -DKYBER_90S $(SOURCES) \ - -o kyber512-90s.so +kyber512-90s_avx2.so: $(SOURCES) $(HEADERS) + $(CC) -shared -fpic $(CFLAGS) -DKYBER_K=2 -DKYBER_90S $(SOURCES) -o kyber512-90s_avx2.so -kyber768-90s.so: $(SOURCES) $(HEADERS) - $(CC) -shared -fpic $(CFLAGS) -DKYBER_K=3 -DKYBER_90S $(SOURCES) \ - -o kyber768-90s.so +kyber768-90s_avx2.so: $(SOURCES) $(HEADERS) + $(CC) -shared -fpic $(CFLAGS) -DKYBER_K=3 -DKYBER_90S $(SOURCES) -o kyber768-90s_avx2.so -kyber1024-90s.so: $(SOURCES) $(HEADERS) - $(CC) -shared -fpic $(CFLAGS) -DKYBER_K=4 -DKYBER_90S $(SOURCES) \ - -o kyber1024-90s.so +kyber1024-90s_avx2.so: $(SOURCES) $(HEADERS) + $(CC) -shared -fpic $(CFLAGS) -DKYBER_K=4 -DKYBER_90S $(SOURCES) -o kyber1024-90s_avx2.so test_kyber512-90s: $(SOURCESNINETIES) $(HEADERSNINETIES) test_kyber.c randombytes.c $(CC) $(CFLAGS) -D KYBER_90S -DKYBER_K=2 $(SOURCESNINETIES) randombytes.c test_kyber.c -o test_kyber512-90s -lcrypto @@ -142,16 +172,11 @@ test_speed1024-90s: $(SOURCESNINETIES) $(HEADERSNINETIES) cpucycles.h cpucycles. PQCgenKAT_kem: $(SOURCESKECCAK) $(HEADERSKECCAK) PQCgenKAT_kem.c rng.c rng.h $(CC) $(NISTFLAGS) -o $@ $(SOURCESKECCAK) -I. rng.c PQCgenKAT_kem.c -lcrypto -test_ntt: $(SOURCESKECCAK) $(HEADERSKECCAK) test_ntt.c randombytes.c - $(CC) $(CFLAGS) -DKYBER_K=2 $(SOURCESKECCAK) randombytes.c test_ntt.c -o test_ntt - -.PHONY: clean test - clean: -$(RM) -rf *.o - -$(RM) -rf kyber512.so - -$(RM) -rf kyber768.so - -$(RM) -rf kyber1024.so + -$(RM) -rf kyber512_avx2.so + -$(RM) -rf kyber768_avx2.so + -$(RM) -rf kyber1024_avx2.so -$(RM) -rf test_kyber512 -$(RM) -rf test_kyber768 -$(RM) -rf test_kyber1024 @@ -164,9 +189,9 @@ clean: -$(RM) -rf test_speed512 -$(RM) -rf test_speed768 -$(RM) -rf test_speed1024 - -$(RM) -rf kyber512-90s.so - -$(RM) -rf kyber768-90s.so - -$(RM) -rf kyber1024-90s.so + -$(RM) -rf kyber512-90s_avx2.so + -$(RM) -rf kyber768-90s_avx2.so + -$(RM) -rf kyber1024-90s_avx2.so -$(RM) -rf test_kyber512-90s -$(RM) -rf test_kyber768-90s -$(RM) -rf test_kyber1024-90s @@ -180,3 +205,7 @@ clean: -$(RM) -rf test_speed768-90s -$(RM) -rf test_speed1024-90s -$(RM) -rf PQCgenKAT_kem + -$(RM) -rf pqcrystals_ref.so + -$(RM) -rf pqcrystals_avx2.so + -$(RM) -rf pqcrystals_avx2_aes256ctr.so + -$(RM) -rf keccak4x/KeccakP-1600-times4-SIMD256.o diff --git a/avx2/fips202x4.c b/avx2/fips202x4.c index 9ba69869..067d4873 100644 --- a/avx2/fips202x4.c +++ b/avx2/fips202x4.c @@ -6,8 +6,8 @@ #include "fips202x4.h" /* Use implementation from the Keccak Code Package */ -extern void KeccakP1600times4_PermuteAll_24rounds(__m256i *s); -#define KeccakF1600_StatePermute4x KeccakP1600times4_PermuteAll_24rounds +extern void pqcrystals_avx2_KeccakP1600times4_PermuteAll_24rounds(__m256i *s); +#define KeccakF1600_StatePermute4x pqcrystals_avx2_KeccakP1600times4_PermuteAll_24rounds static inline uint64_t load64(const uint8_t x[8]) { unsigned int i; diff --git a/avx2/fips202x4.h b/avx2/fips202x4.h index 19813acd..13250bb0 100644 --- a/avx2/fips202x4.h +++ b/avx2/fips202x4.h @@ -41,6 +41,7 @@ void shake256x4_squeezeblocks(uint8_t *out0, size_t nblocks, keccakx4_state *state); +#define shake128x4 pqcrystals_avx2_shake128x4 void shake128x4(uint8_t *out0, uint8_t *out1, uint8_t *out2, @@ -52,6 +53,7 @@ void shake128x4(uint8_t *out0, const uint8_t *in3, size_t inlen); +#define shake256x4 pqcrystals_avx2_shake256x4 void shake256x4(uint8_t *out0, uint8_t *out1, uint8_t *out2, diff --git a/avx2/keccak4x/KeccakP-1600-times4-SnP.h b/avx2/keccak4x/KeccakP-1600-times4-SnP.h index 60338488..60b49dca 100644 --- a/avx2/keccak4x/KeccakP-1600-times4-SnP.h +++ b/avx2/keccak4x/KeccakP-1600-times4-SnP.h @@ -30,21 +30,35 @@ and related or neighboring rights to the source code in this file. #include #define KeccakP1600times4_StaticInitialize() +#define KeccakP1600times4_InitializeAll pqcrystals_avx2_KeccakP1600times4_InitializeAll void KeccakP1600times4_InitializeAll(void *states); #define KeccakP1600times4_AddByte(states, instanceIndex, byte, offset) \ ((unsigned char*)(states))[(instanceIndex)*8 + ((offset)/8)*4*8 + (offset)%8] ^= (byte) +#define KeccakP1600times4_AddBytes pqcrystals_avx2_KeccakP1600times4_AddBytes void KeccakP1600times4_AddBytes(void *states, unsigned int instanceIndex, const unsigned char *data, unsigned int offset, unsigned int length); +#define KeccakP1600times4_AddLanesAll pqcrystals_avx2_KeccakP1600times4_AddLanesAll void KeccakP1600times4_AddLanesAll(void *states, const unsigned char *data, unsigned int laneCount, unsigned int laneOffset); +#define KeccakP1600times4_OverwriteBytes pqcrystals_avx2_KeccakP1600times4_OverwriteBytes void KeccakP1600times4_OverwriteBytes(void *states, unsigned int instanceIndex, const unsigned char *data, unsigned int offset, unsigned int length); +#define KeccakP1600times4_OverwriteLanesAll pqcrystals_avx2_KeccakP1600times4_OverwriteLanesAll void KeccakP1600times4_OverwriteLanesAll(void *states, const unsigned char *data, unsigned int laneCount, unsigned int laneOffset); +#define KeccakP1600times4_OverwriteWithZeroes pqcrystals_avx2_KeccakP1600times4_OverwriteWithZeroes void KeccakP1600times4_OverwriteWithZeroes(void *states, unsigned int instanceIndex, unsigned int byteCount); +#define KeccakP1600times4_PermuteAll_12rounds pqcrystals_avx2_KeccakP1600times4_PermuteAll_12rounds void KeccakP1600times4_PermuteAll_12rounds(void *states); +#define KeccakP1600times4_PermuteAll_24rounds pqcrystals_avx2_KeccakP1600times4_PermuteAll_24rounds void KeccakP1600times4_PermuteAll_24rounds(void *states); +#define KeccakP1600times4_ExtractBytes pqcrystals_avx2_KeccakP1600times4_ExtractBytes void KeccakP1600times4_ExtractBytes(const void *states, unsigned int instanceIndex, unsigned char *data, unsigned int offset, unsigned int length); +#define KeccakP1600times4_ExtractLanesAll pqcrystals_avx2_KeccakP1600times4_ExtractLanesAll void KeccakP1600times4_ExtractLanesAll(const void *states, unsigned char *data, unsigned int laneCount, unsigned int laneOffset); +#define KeccakP1600times4_ExtractAndAddBytes pqcrystals_avx2_KeccakP1600times4_ExtractAndAddBytes void KeccakP1600times4_ExtractAndAddBytes(const void *states, unsigned int instanceIndex, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length); +#define KeccakP1600times4_ExtractAndAddLanesAll pqcrystals_avx2_KeccakP1600times4_ExtractAndAddLanesAll void KeccakP1600times4_ExtractAndAddLanesAll(const void *states, const unsigned char *input, unsigned char *output, unsigned int laneCount, unsigned int laneOffset); +#define KeccakF1600times4_FastLoop_Absorb pqcrystals_avx2_KeccakF1600times4_FastLoop_Absorb size_t KeccakF1600times4_FastLoop_Absorb(void *states, unsigned int laneCount, unsigned int laneOffsetParallel, unsigned int laneOffsetSerial, const unsigned char *data, size_t dataByteLen); +#define KeccakP1600times4_12rounds_FastLoop_Absorb pqcrystals_avx2_KeccakP1600times4_12rounds_FastLoop_Absorb size_t KeccakP1600times4_12rounds_FastLoop_Absorb(void *states, unsigned int laneCount, unsigned int laneOffsetParallel, unsigned int laneOffsetSerial, const unsigned char *data, size_t dataByteLen); #endif diff --git a/ref/.gitignore b/ref/.gitignore new file mode 100644 index 00000000..4b2e547e --- /dev/null +++ b/ref/.gitignore @@ -0,0 +1,40 @@ +kyber1024-90s_ref.so +kyber1024_ref.so +kyber512-90s_ref.so +kyber512_ref.so +kyber768-90s_ref.so +kyber768_ref.so +pqcrystals_ref.so +test_kex1024 +test_kex1024-90s +test_kex512 +test_kex512-90s +test_kex768 +test_kex768-90s +test_kyber1024 +test_kyber1024-90s +test_kyber512 +test_kyber512-90s +test_kyber768 +test_kyber768-90s +test_speed1024 +test_speed1024-90s +test_speed512 +test_speed512-90s +test_speed768 +test_speed768-90s +test_vectors1024 +test_vectors1024-90s +test_vectors512 +test_vectors512-90s +test_vectors768 +test_vectors768-90s +PQCgenKAT_kem +kyber1024-90s_avx2.so +kyber1024_avx2.so +kyber512-90s_avx2.so +kyber512_avx2.so +kyber768-90s_avx2.so +kyber768_avx2.so +pqcrystals_avx2.so +pqcrystals_avx2_aes256ctr.so diff --git a/ref/Makefile b/ref/Makefile index 520802ac..84cb2194 100644 --- a/ref/Makefile +++ b/ref/Makefile @@ -1,8 +1,8 @@ CC = /usr/bin/cc CFLAGS += -Wall -Wextra -Wpedantic -Wmissing-prototypes -Wredundant-decls \ - -O3 -fomit-frame-pointer -march=native -mtune=native + -O3 -march=native -mtune=native #CFLAGS += -DUSE_RDPMC -NISTFLAGS = -Wno-unused-result -O3 -fomit-frame-pointer -march=native -mtune=native +NISTFLAGS = -Wno-unused-result -O3 -march=native -mtune=native RM = /bin/rm SOURCES = kem.c indcpa.c polyvec.c poly.c reduce.c ntt.c cbd.c verify.c @@ -13,6 +13,8 @@ HEADERS = params.h api.h indcpa.h polyvec.h poly.h reduce.h ntt.h cbd.h \ HEADERSKECCAK = $(HEADERS) fips202.h HEADERSNINETIES = $(HEADERS) aes256ctr.h sha2.h +.PHONY: all shared clean + all: \ test_kyber512 \ test_kyber768 \ @@ -38,22 +40,28 @@ all: \ test_speed512-90s \ test_speed768-90s \ test_speed1024-90s \ - PQCgenKAT_kem \ + PQCgenKAT_kem + +shared: \ + kyber512_ref.so \ + kyber768_ref.so \ + kyber1024_ref.so \ + kyber512-90s_ref.so \ + kyber768-90s_ref.so \ + kyber1024-90s_ref.so \ + pqcrystals_ref.so -kyber512.so: $(SOURCES) $(HEADERS) symmetric-shake.c - $(CC) -shared -fPIC $(CFLAGS) -DKYBER_K=2 $(SOURCES) \ - symmetric-shake.c -o kyber512.so +pqcrystals_ref.so: fips202.c fips202.h + $(CC) -shared -fPIC $(CFLAGS) fips202.c -o pqcrystals_ref.so -kyber768.so: $(SOURCES) $(HEADERS) symmetric-shake.c - $(CC) -shared -fPIC $(CFLAGS) -DKYBER_K=3 $(SOURCES) \ - symmetric-shake.c -o kyber768.so +kyber512_ref.so: $(SOURCES) $(HEADERS) symmetric-shake.c + $(CC) -shared -fPIC $(CFLAGS) -DKYBER_K=2 $(SOURCES) symmetric-shake.c -o kyber512_ref.so -kyber1024.so: $(SOURCES) $(HEADERS) symmetric-shake.c - $(CC) -shared -fPIC $(CFLAGS) -DKYBER_K=4 $(SOURCES) \ - symmetric-shake.c -o kyber1024.so +kyber768_ref.so: $(SOURCES) $(HEADERS) symmetric-shake.c + $(CC) -shared -fPIC $(CFLAGS) -DKYBER_K=3 $(SOURCES) symmetric-shake.c -o kyber768_ref.so -test_ntt: $(SOURCESKECCAK) $(HEADERSKECCAK) test_ntt.c randombytes.c - $(CC) $(CFLAGS) -DKYBER_K=2 $(SOURCESKECCAK) randombytes.c test_ntt.c -o test_ntt +kyber1024_ref.so: $(SOURCES) $(HEADERS) symmetric-shake.c + $(CC) -shared -fPIC $(CFLAGS) -DKYBER_K=4 $(SOURCES) symmetric-shake.c -o kyber1024_ref.so test_kyber512: $(SOURCESKECCAK) $(HEADERSKECCAK) test_kyber.c randombytes.c $(CC) $(CFLAGS) -DKYBER_K=2 $(SOURCESKECCAK) randombytes.c test_kyber.c -o test_kyber512 @@ -82,7 +90,7 @@ test_vectors768: $(SOURCESKECCAK) $(HEADERSKECCAK) test_vectors.c test_vectors1024: $(SOURCESKECCAK) $(HEADERSKECCAK) test_vectors.c $(CC) $(CFLAGS) -DKYBER_K=4 $(SOURCESKECCAK) test_vectors.c -o test_vectors1024 -test_speed512: $(SOURCESKECCAK) $(HEADERSKECCAK) cpucycles.h cpucycles.c test_speed.c speed_print.h speed_print.c randombytes.c kex.c kex.h +test_speed512: $(SOURCESKECCAK) $(HEADERSKECCAK) cpucycles.h cpucycles.c speed_print.h speed_print.c test_speed.c randombytes.c kex.c kex.h $(CC) $(CFLAGS) -DKYBER_K=2 $(SOURCESKECCAK) randombytes.c cpucycles.c speed_print.c kex.c test_speed.c -o test_speed512 test_speed768: $(SOURCESKECCAK) $(HEADERSKECCAK) cpucycles.h cpucycles.c speed_print.h speed_print.c test_speed.c randombytes.c kex.c kex.h @@ -91,17 +99,14 @@ test_speed768: $(SOURCESKECCAK) $(HEADERSKECCAK) cpucycles.h cpucycles.c speed_p test_speed1024: $(SOURCESKECCAK) $(HEADERSKECCAK) cpucycles.h cpucycles.c speed_print.h speed_print.c test_speed.c randombytes.c kex.c kex.h $(CC) $(CFLAGS) -DKYBER_K=4 $(SOURCESKECCAK) randombytes.c cpucycles.c speed_print.c kex.c test_speed.c -o test_speed1024 -kyber512-90s.so: $(SOURCES) $(HEADERS) symmetric-aes.c - $(CC) -shared -fPIC $(CFLAGS) -DKYBER_K=2 -DKYBER_90S \ - $(SOURCES) symmetric-aes.c -o kyber512-90s.so +kyber512-90s_ref.so: $(SOURCES) $(HEADERS) symmetric-aes.c + $(CC) -shared -fPIC $(CFLAGS) -DKYBER_K=2 -DKYBER_90S $(SOURCES) symmetric-aes.c -o kyber512-90s_ref.so -kyber768-90s.so: $(SOURCES) $(HEADERS) symmetric-aes.c - $(CC) -shared -fPIC $(CFLAGS) -DKYBER_K=3 -DKYBER_90S \ - $(SOURCES) symmetric-aes.c -o kyber768-90s.so +kyber768-90s_ref.so: $(SOURCES) $(HEADERS) symmetric-aes.c + $(CC) -shared -fPIC $(CFLAGS) -DKYBER_K=3 -DKYBER_90S $(SOURCES) symmetric-aes.c -o kyber768-90s_ref.so -kyber1024-90s.so: $(SOURCES) $(HEADERS) symmetric-aes.c - $(CC) -shared -fPIC $(CFLAGS) -DKYBER_K=4 -DKYBER_90S \ - $(SOURCES) symmetric-aes.c -o kyber1024-90s.so +kyber1024-90s_ref.so: $(SOURCES) $(HEADERS) symmetric-aes.c + $(CC) -shared -fPIC $(CFLAGS) -DKYBER_K=4 -DKYBER_90S $(SOURCES) symmetric-aes.c -o kyber1024-90s_ref.so test_kyber512-90s: $(SOURCESNINETIES) $(HEADERSNINETIES) test_kyber.c randombytes.c $(CC) $(CFLAGS) -D KYBER_90S -DKYBER_K=2 $(SOURCESNINETIES) randombytes.c test_kyber.c -o test_kyber512-90s @@ -142,13 +147,11 @@ test_speed1024-90s: $(SOURCESNINETIES) $(HEADERSNINETIES) cpucycles.h cpucycles. PQCgenKAT_kem: $(SOURCESKECCAK) $(HEADERSKECCAK) PQCgenKAT_kem.c rng.c rng.h $(CC) $(NISTFLAGS) -o $@ $(SOURCESKECCAK) -I. rng.c PQCgenKAT_kem.c -lcrypto -.PHONY: clean test - clean: -$(RM) -rf *.o - -$(RM) -rf kyber512.so - -$(RM) -rf kyber768.so - -$(RM) -rf kyber1024.so + -$(RM) -rf kyber512_ref.so + -$(RM) -rf kyber768_ref.so + -$(RM) -rf kyber1024_ref.so -$(RM) -rf test_kyber512 -$(RM) -rf test_kyber768 -$(RM) -rf test_kyber1024 @@ -161,9 +164,9 @@ clean: -$(RM) -rf test_speed512 -$(RM) -rf test_speed768 -$(RM) -rf test_speed1024 - -$(RM) -rf kyber512-90s.so - -$(RM) -rf kyber768-90s.so - -$(RM) -rf kyber1024-90s.so + -$(RM) -rf kyber512-90s_ref.so + -$(RM) -rf kyber768-90s_ref.so + -$(RM) -rf kyber1024-90s_ref.so -$(RM) -rf test_kyber512-90s -$(RM) -rf test_kyber768-90s -$(RM) -rf test_kyber1024-90s @@ -177,3 +180,4 @@ clean: -$(RM) -rf test_speed768-90s -$(RM) -rf test_speed1024-90s -$(RM) -rf PQCgenKAT_kem + -$(RM) -rf pqcrystals_ref.so diff --git a/runtests.sh b/runtests.sh new file mode 100755 index 00000000..c9c74f01 --- /dev/null +++ b/runtests.sh @@ -0,0 +1,9 @@ +#!/bin/sh -e + +for dir in ref avx2; do + make -C $dir + for alg in 512 768 1024 512-90s 768-90s 1024-90s; do + ./$dir/test_vectors$alg > tvecs$alg + done + sha256sum -c SHA256SUMS +done diff --git a/testvecdiff.sh b/testvecdiff.sh deleted file mode 100755 index 6a3caa29..00000000 --- a/testvecdiff.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash - -cd avx2 && make -cd ../ref && make -cd .. - -./ref/test_vectors512 > ref/t512 -./ref/test_vectors768 > ref/t768 -./ref/test_vectors1024 > ref/t1024 -./ref/test_vectors512-90s > ref/t512-90s -./ref/test_vectors768-90s > ref/t768-90s -./ref/test_vectors1024-90s > ref/t1024-90s -./avx2/test_vectors512 > avx2/t512 -./avx2/test_vectors768 > avx2/t768 -./avx2/test_vectors1024 > avx2/t1024 -./avx2/test_vectors512-90s > avx2/t512-90s -./avx2/test_vectors768-90s > avx2/t768-90s -./avx2/test_vectors1024-90s > avx2/t1024-90s - -diff ref/t512 avx2/t512 -diff ref/t768 avx2/t768 -diff ref/t1024 avx2/t1024 -diff ref/t512-90s avx2/t512-90s -diff ref/t768-90s avx2/t768-90s -diff ref/t1024-90s avx2/t1024-90s - -diff t512 avx2/t512 -diff t768 avx2/t768 -diff t1024 avx2/t1024 -diff t512-90s avx2/t512-90s -diff t768-90s avx2/t768-90s -diff t1024-90s avx2/t1024-90s - -rm ref/t512 -rm avx2/t512 -rm ref/t768 -rm avx2/t768 -rm ref/t1024 -rm avx2/t1024 -rm ref/t512-90s -rm avx2/t512-90s -rm ref/t768-90s -rm avx2/t768-90s -rm ref/t1024-90s -rm avx2/t1024-90s