Makefile (2368B)
1 CC = gcc 2 CFLAGS = -O3 -march=native -maes -mpclmul -msse4.1 -Wall -Wextra 3 TARGET_AES = aes256_gcm_test 4 TARGET_SERPENT = serpent256_gcm_test 5 TARGET_RSA_PROD = rsa_production 6 TARGET_CHACHA = chacha20_poly1305_test 7 TARGET_CSPRNG = csprng_test 8 TARGET_PBKDF2 = pbkdf2_test 9 TARGET_EASYCRYPTO = easycrypto_demo 10 11 # All targets 12 all: $(TARGET_AES) $(TARGET_SERPENT) $(TARGET_RSA_PROD) $(TARGET_CHACHA) $(TARGET_CSPRNG) $(TARGET_PBKDF2) $(TARGET_EASYCRYPTO) 13 14 # Standalone tests 15 $(TARGET_AES): AES-256-GCM.c 16 $(CC) $(CFLAGS) -o $(TARGET_AES) AES-256-GCM.c 17 18 $(TARGET_SERPENT): Serpent-256-GCM.c 19 $(CC) $(CFLAGS) -o $(TARGET_SERPENT) Serpent-256-GCM.c 20 21 # Production RSA with GMP (2048-bit keys) 22 $(TARGET_RSA_PROD): RSA_production.c 23 $(CC) $(CFLAGS) -DINCLUDE_MAIN -o $(TARGET_RSA_PROD) RSA_production.c -lgmp 24 25 # ChaCha20-Poly1305 AEAD 26 $(TARGET_CHACHA): ChaCha20-Poly1305.c 27 $(CC) $(CFLAGS) -DINCLUDE_MAIN -o $(TARGET_CHACHA) ChaCha20-Poly1305.c 28 29 # CSPRNG (ChaCha20-based) 30 $(TARGET_CSPRNG): CSPRNG.c 31 $(CC) $(CFLAGS) -DINCLUDE_MAIN -o $(TARGET_CSPRNG) CSPRNG.c 32 33 # PBKDF2 Key Derivation 34 $(TARGET_PBKDF2): PBKDF2.c 35 $(CC) $(CFLAGS) -DINCLUDE_MAIN -o $(TARGET_PBKDF2) PBKDF2.c 36 37 # EasyCrypto Demo 38 $(TARGET_EASYCRYPTO): easycrypto_demo.c AES-256-GCM.c ChaCha20-Poly1305.c CSPRNG.c PBKDF2.c 39 $(CC) $(CFLAGS) -o $(TARGET_EASYCRYPTO) easycrypto_demo.c AES-256-GCM.c ChaCha20-Poly1305.c CSPRNG.c PBKDF2.c 40 41 clean: 42 rm -f $(TARGET_AES) $(TARGET_SERPENT) $(TARGET_RSA_PROD) $(TARGET_CHACHA) $(TARGET_CSPRNG) $(TARGET_PBKDF2) $(TARGET_EASYCRYPTO) *.o 43 44 run-aes: $(TARGET_AES) 45 ./$(TARGET_AES) 46 47 run-serpent: $(TARGET_SERPENT) 48 ./$(TARGET_SERPENT) 49 50 run-rsa-prod: $(TARGET_RSA_PROD) 51 ./$(TARGET_RSA_PROD) 52 53 run-chacha: $(TARGET_CHACHA) 54 ./$(TARGET_CHACHA) 55 56 run-csprng: $(TARGET_CSPRNG) 57 ./$(TARGET_CSPRNG) 58 59 run-pbkdf2: $(TARGET_PBKDF2) 60 ./$(TARGET_PBKDF2) 61 62 run-easycrypto: $(TARGET_EASYCRYPTO) 63 ./$(TARGET_EASYCRYPTO) 64 65 run: all 66 @echo "=== Running AES-256-GCM test ===" 67 @./$(TARGET_AES) 68 @echo "" 69 @echo "=== Running Serpent-256-GCM test ===" 70 @./$(TARGET_SERPENT) 71 @echo "" 72 @echo "=== Running ChaCha20-Poly1305 test ===" 73 @./$(TARGET_CHACHA) 74 @echo "" 75 @echo "=== Running CSPRNG test ===" 76 @./$(TARGET_CSPRNG) 77 @echo "" 78 @echo "=== Running Production RSA (2048-bit) ===" 79 @./$(TARGET_RSA_PROD) 80 81 .PHONY: all clean run run-aes run-serpent run-rsa-prod run-chacha run-csprng run-pbkdf2 run-easycrypto