diff --git a/libdap-crypto.pri b/libdap-crypto.pri
index fa8dc222eb5e7cb6e31cdae1cd3026f911b5974f..6ca16ee9ab396c05d066747891444b552df9f5a2 100755
--- a/libdap-crypto.pri
+++ b/libdap-crypto.pri
@@ -7,6 +7,9 @@ include (src/sha3/sha3.pri)
 include (src/sig_bliss/sig_bliss.pri)
 include (src/sig_picnic/sig_picnic.pri)
 include (src/sig_tesla/sig_tesla.pri)
+include (src/sig_dilithium/sig_dilithium.pri)
+
+DEFINES += KeccakP1600timesN_excluded
 
 HEADERS += $$PWD/include/dap_enc.h \
     $$PWD/include/dap_enc_base64.h \
@@ -20,7 +23,10 @@ HEADERS += $$PWD/include/dap_enc.h \
     $$PWD/include/dap_enc_tesla.h \
     $$PWD/include/dap_crypto_common.h \
     $$PWD/include/dap_enc_base58.h \
-    $$PWD/include/dap_enc_ca.h
+    $$PWD/include/dap_enc_dilithium.h \
+    $$PWD/src/XKCP/lib/high/Keccak/FIPS202/SimpleFIPS202.h \
+    $$PWD/src/XKCP/lib/high/Keccak/SP800-185/SP800-185.h \
+    $$PWD/src/XKCP/lib/high/common/Phases.h
 
 SOURCES += $$PWD/src/dap_enc.c \
     $$PWD/src/dap_enc_base64.c \
@@ -33,6 +39,11 @@ SOURCES += $$PWD/src/dap_enc.c \
     $$PWD/src/dap_enc_bliss.c \
     $$PWD/src/dap_enc_tesla.c \
     $$PWD/src/dap_enc_base58.c \
-    $$PWD/src/dap_enc_ca.c
+    $$PWD/src/dap_enc_dilithium.c \
+    $$PWD/src/dap_enc_ca.c \
+    $$PWD/src/XKCP/lib/high/Keccak/FIPS202/SimpleFIPS202.c \
+    $$PWD/src/XKCP/lib/high/Keccak/SP800-185/SP800-185.c \
+    $$PWD/src/XKCP/lib/high/Keccak/SP800-185/SP800-185.inc
+
 
-INCLUDEPATH += $$PWD/include $$PWD/../ $$PWD/src
+INCLUDEPATH += $$PWD/include $$PWD/../ $$PWD/src $$PWD/src/XKCP/lib/high/Keccak/FIPS202 $$PWD/src/XKCP/lib/high/Keccak/SP800-185 $$PWD/src/XKCP/lib/high/common
diff --git a/src/msrln/kex.c b/src/msrln/kex.c
index 942c5aec4f7ea9346fc6a3c1db8568db54944492..9cb69a312928fd1199a8c939f336e44170309374 100755
--- a/src/msrln/kex.c
+++ b/src/msrln/kex.c
@@ -473,15 +473,15 @@ CRYPTO_MSRLN_STATUS generate_a(uint32_t* a, const unsigned char* seed, Extendabl
 //    shake128_absorb(state, seed, SEED_BYTES);
 //    shake128_squeezeblocks((unsigned char *) buf, nblocks, state);
 
-    #ifdef _WIN32
+    /*#ifdef _WIN32
         SHAKE128_InitAbsorb( &ks, seed, SEED_BYTES );
         KECCAK_HashSqueeze( &ks, (unsigned char *) buf, nblocks * 8 );
-    #else
+    #else */
         Keccak_HashInitialize_SHAKE128(&ks);
         Keccak_HashUpdate( &ks, seed, SEED_BYTES * 8 );
         Keccak_HashFinal( &ks, seed );
         Keccak_HashSqueeze( &ks, (unsigned char *) buf, nblocks * 8 * 8 );
-    #endif
+    //#endif
 
     while (ctr < PARAMETER_N) {
         val = (buf[pos] | ((uint16_t) buf[pos + 1] << 8)) & 0x3fff;
diff --git a/src/msrln/random.c b/src/msrln/random.c
index e5a760cdc49eabdcd6070992222e36f879d5a2f8..b7b5a4c005158279707e10bb8554296b1c45d812 100755
--- a/src/msrln/random.c
+++ b/src/msrln/random.c
@@ -1,6 +1,6 @@
 #include "msrln_priv.h"
 
-//#include "KeccakHash.h"
+#include "KeccakHash.h"
 //#include "SimpleFIPS202.h"
 
 #define LOG_TAG "RANDOM"
@@ -18,15 +18,15 @@ CRYPTO_MSRLN_STATUS MSRLN_generate_a(const unsigned char* seed, unsigned int see
 //    shake128_absorb(state, seed, seed_nbytes);
 //    shake128_squeezeblocks((unsigned char *) buf, nblocks, state);
 
-    #ifdef _WIN32
+   /* #ifdef _WIN32
         SHAKE128_InitAbsorb( &ks, seed, seed_nbytes );
         KECCAK_HashSqueeze( &ks, (unsigned char *) buf, nblocks * 8 );
-    #else
+    #else */
         Keccak_HashInitialize_SHAKE128(&ks);
         Keccak_HashUpdate( &ks, seed, seed_nbytes * 8 );
         Keccak_HashFinal( &ks, seed );
         Keccak_HashSqueeze( &ks, (unsigned char *) buf, nblocks * 8 * 8 );
-    #endif
+    //#endif
 
     while (ctr < array_ndigits) {
         val = (buf[pos] | ((uint16_t) buf[pos + 1] << 8)) & 0x3fff;
diff --git a/src/sha3/sha3.pri b/src/sha3/sha3.pri
index b93b2609dfcc4d5fcfdb964f9b3f57c84b75766e..be9685f98884964331c0af850e633542df461bf3 100755
--- a/src/sha3/sha3.pri
+++ b/src/sha3/sha3.pri
@@ -8,8 +8,7 @@ HEADERS += $$PWD/fips202.h \
 	$$PWD/KeccakSponge-common.h \
 	$$PWD/KeccakSpongeWidth1600.h
 	
-SOURCES += $$PWD/fips202.c \
-	$$PWD/KeccakHash.c \
+SOURCES += $$PWD/KeccakHash.c \
 	$$PWD/KeccakP-1600-reference.c \
 	$$PWD/KeccakSpongeWidth1600.c
-	
\ No newline at end of file
+	
diff --git a/src/sig_dilithium/sig_dilithium.pri b/src/sig_dilithium/sig_dilithium.pri
new file mode 100644
index 0000000000000000000000000000000000000000..ad13a944d46e9f0a8a243397f2782cb51dcfca93
--- /dev/null
+++ b/src/sig_dilithium/sig_dilithium.pri
@@ -0,0 +1,16 @@
+HEADERS += $$PWD/dilithium_params.h \
+	$$PWD/dilithium_packing.h \
+	$$PWD/dilithium_poly.h \
+	$$PWD/dilithium_polyvec.h \
+	$$PWD/dilithium_rounding_reduce.h \
+	$$PWD/dilithium_sign.h
+
+SOURCES += $$PWD/dilithium_params.c \
+	$$PWD/dilithium_packing.c \
+	$$PWD/dilithium_poly.c \
+	$$PWD/dilithium_polyvec.c \
+	$$PWD/dilithium_rounding_reduce.c \
+	$$PWD/dilithium_sign.c
+	
+INCLUDEPATH += $$PWD
+