diff --git a/crypto/dap_enc_aes.c b/crypto/dap_enc_aes.c
index 78b50e920c47fa5497e6f017694904c76e6dd2a8..5b839d327d181642460fa4294232f5f67594ae26 100755
--- a/crypto/dap_enc_aes.c
+++ b/crypto/dap_enc_aes.c
@@ -5,10 +5,12 @@
 #include "dap_enc_aes.h"
 #include "dap_enc_key.h"
 
-uint8_t tail_block[] =  {21,27,20,36,16,20,27,31,22,41,27,33,30,21,32,28};
 
+#define AES_BLOCKSIZE 16
 #define AES_KEYSIZE 16
 
+uint8_t tail_block[] =  {21,27,20,36,16,20,27,31,22,41,27,33,30,21,32,28};
+
 #define DAP_ENC_AES_KEY(a) ((dap_enc_aes_key_t *)((a)->_inheritor) )
 
 static void print_bytes(uint8_t *bytes, size_t num_bytes) {
diff --git a/crypto/dap_enc_aes.h b/crypto/dap_enc_aes.h
index 54ac68dbce8e1514ffc34b523d2e4ea0e7583dca..cf7e38f4899d79b6f416843fa7cd4fd82af3013d 100755
--- a/crypto/dap_enc_aes.h
+++ b/crypto/dap_enc_aes.h
@@ -6,6 +6,10 @@
 
 #define AES_BLOCK_SIZE 16
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 struct dap_enc_key;
 
 void dap_enc_aes_key_new_generate(struct dap_enc_key * a_key,size_t a_size);
@@ -17,4 +21,8 @@ int test_key_aes();
 size_t dap_enc_aes_decode(struct dap_enc_key* a_key, const void * a_in, size_t a_in_size,void * a_out);
 size_t dap_enc_aes_encode(struct dap_enc_key* a_key, const void * a_in, size_t a_in_size,void * a_out);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
diff --git a/crypto/dap_enc_key.h b/crypto/dap_enc_key.h
index 2266fb49e3291f8a0c9a0528408078fd153e6879..20bd576e6d5719fdd60f64667017a7c47aa51d77 100644
--- a/crypto/dap_enc_key.h
+++ b/crypto/dap_enc_key.h
@@ -23,6 +23,11 @@
 
 #include <stddef.h>
 #include <time.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef enum dap_enc_data_type{DAP_ENC_DATA_TYPE_RAW,
 
                                DAP_ENC_DATA_TYPE_B64,
@@ -126,4 +131,8 @@ dap_enc_key_t *dap_enc_key_new_from_data(dap_enc_key_type_t a_key_type, void * a
 dap_enc_key_t *dap_enc_key_new_from_str(dap_enc_key_type_t a_key_type, const char *a_key_str);
 void dap_enc_key_delete(dap_enc_key_t * a_key);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
diff --git a/crypto/liboqs/crypto/aes/aes.c b/crypto/liboqs/crypto/aes/aes.c
index c77a799ddc178c944eb79e060a5f175c31fec774..78854711441fececa3ad630c88e7da6501504618 100644
--- a/crypto/liboqs/crypto/aes/aes.c
+++ b/crypto/liboqs/crypto/aes/aes.c
@@ -3,6 +3,10 @@
 #include "aes.h"
 #include "aes_local.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void OQS_AES128_load_schedule(const uint8_t *key, void **schedule, int for_encryption) {
 #ifdef USE_OPENSSL
 	oqs_aes128_load_schedule_ossl(key, schedule, for_encryption);
@@ -191,4 +195,10 @@ inline void oqs_aes128_ecb_dec_sch_ossl(const uint8_t *ciphertext, const size_t
 	assert(1 == EVP_DecryptFinal_ex((EVP_CIPHER_CTX *) schedule, plaintext, &outlen));
 }
 
+
+
+#endif
+
+#ifdef __cplusplus
+}
 #endif
diff --git a/crypto/liboqs/crypto/aes/aes.h b/crypto/liboqs/crypto/aes/aes.h
index f90574243aa0aeb8a5c0292d53a4f1a4801ebaca..b6c3c73af74e8951ef8fa1e2b0e1357740e5c655 100644
--- a/crypto/liboqs/crypto/aes/aes.h
+++ b/crypto/liboqs/crypto/aes/aes.h
@@ -9,6 +9,10 @@
 #include <stdint.h>
 #include <stdlib.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /**
  * Function to fill a key schedule given an initial key.
  *
@@ -63,4 +67,8 @@ void OQS_AES128_ECB_enc_sch(const uint8_t *plaintext, const size_t plaintext_len
  */
 void OQS_AES128_ECB_dec_sch(const uint8_t *ciphertext, const size_t ciphertext_len, const void *schedule, uint8_t *plaintext);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
diff --git a/crypto/liboqs/crypto/aes/aes_local.h b/crypto/liboqs/crypto/aes/aes_local.h
index 0b226c7845fc7a0016596f10677bf8c835a0b932..1787395d232a951ee0cc8419060aa51a77eafaee 100644
--- a/crypto/liboqs/crypto/aes/aes_local.h
+++ b/crypto/liboqs/crypto/aes/aes_local.h
@@ -9,6 +9,10 @@
 #include <stdint.h>
 #include <stdlib.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void oqs_aes128_load_schedule_ni(const uint8_t *key, void **schedule);
 void oqs_aes128_free_schedule_ni(void *schedule);
 void oqs_aes128_enc_ni(const uint8_t *plaintext, const void *schedule, uint8_t *ciphertext);
@@ -36,4 +40,8 @@ void oqs_aes128_ecb_enc_sch_ossl(const uint8_t *plaintext, const size_t plaintex
 void oqs_aes128_ecb_dec_sch_ossl(const uint8_t *ciphertext, const size_t ciphertext_len, const void *schedule, uint8_t *plaintext);
 #endif
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
diff --git a/crypto/liboqs/crypto/rand/rand.h b/crypto/liboqs/crypto/rand/rand.h
index 710e449273cee3b5ea0880fc0b8033e16bdade83..bf5af4e84df956786d80e22a6dffa577de04ee89 100644
--- a/crypto/liboqs/crypto/rand/rand.h
+++ b/crypto/liboqs/crypto/rand/rand.h
@@ -9,6 +9,10 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 enum OQS_RAND_alg_name {
 	OQS_RAND_alg_default,
 	OQS_RAND_alg_urandom_chacha20,
@@ -95,4 +99,9 @@ double OQS_RAND_zscore_deviation_from_uniform(const unsigned long occurrences[25
 void OQS_RAND_report_statistics(const unsigned long occurrences[256], const char *indent);
 
 int OQS_RAND_get_system_entropy(uint8_t *buf, size_t n);
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif
diff --git a/crypto/liboqs/kex_rlwe_msrln16/kex_rlwe_msrln16.h b/crypto/liboqs/kex_rlwe_msrln16/kex_rlwe_msrln16.h
index 77613a42e99356f61fda64706ba680ebda16c53d..08cd3ff4a877dac586f3a3f6b04cd796dfa40c5c 100644
--- a/crypto/liboqs/kex_rlwe_msrln16/kex_rlwe_msrln16.h
+++ b/crypto/liboqs/kex_rlwe_msrln16/kex_rlwe_msrln16.h
@@ -16,6 +16,10 @@
 /*#include <oqs/kex.h>
 #include <oqs/rand.h>*/
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 OQS_KEX *OQS_KEX_rlwe_msrln16_new(OQS_RAND *rand);
 
 int OQS_KEX_rlwe_msrln16_alice_0(OQS_KEX *k, void **alice_priv, uint8_t **alice_msg, size_t *alice_msg_len);
@@ -25,4 +29,8 @@ int OQS_KEX_rlwe_msrln16_alice_1(OQS_KEX *k, const void *alice_priv, const uint8
 void OQS_KEX_rlwe_msrln16_alice_priv_free(OQS_KEX *k, void *alice_priv);
 void OQS_KEX_rlwe_msrln16_free(OQS_KEX *k);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif