From bb2a88fa983285cc3403e858f386e598b8e2baf0 Mon Sep 17 00:00:00 2001
From: Ivan Deniskin <ivanmordwin@yandex.ru>
Date: Wed, 27 Jun 2018 19:09:01 +0300
Subject: [PATCH] Build C++ fixes

---
 crypto/dap_enc_aes.c                              |  4 +++-
 crypto/dap_enc_aes.h                              |  8 ++++++++
 crypto/dap_enc_key.h                              |  9 +++++++++
 crypto/liboqs/crypto/aes/aes.c                    | 10 ++++++++++
 crypto/liboqs/crypto/aes/aes.h                    |  8 ++++++++
 crypto/liboqs/crypto/aes/aes_local.h              |  8 ++++++++
 crypto/liboqs/crypto/rand/rand.h                  |  9 +++++++++
 crypto/liboqs/kex_rlwe_msrln16/kex_rlwe_msrln16.h |  8 ++++++++
 8 files changed, 63 insertions(+), 1 deletion(-)

diff --git a/crypto/dap_enc_aes.c b/crypto/dap_enc_aes.c
index 78b50e9..5b839d3 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 54ac68d..cf7e38f 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 2266fb4..20bd576 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 c77a799..7885471 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 f905742..b6c3c73 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 0b226c7..1787395 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 710e449..bf5af4e 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 77613a4..08cd3ff 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
-- 
GitLab