From f9b2305777d9943ca71a1e00a2be66a0b41cbaca Mon Sep 17 00:00:00 2001 From: Dmitriy Gerasimov <dm@cifercom.com> Date: Wed, 27 Dec 2017 18:57:04 +0700 Subject: [PATCH] [*] Changes in CMake for monero_crypt import files [*] Cleaned up some old garbage [+] Declarations of all alghorythms from liboqs --- crypt/CMakeLists.txt | 10 ++- crypt/dap_enc.c | 28 ++++--- crypt/dap_enc.h | 11 ++- crypt/dap_enc_aes.c | 114 +++++++++++------------------ crypt/dap_enc_aes.h | 16 ++-- crypt/dap_enc_base64.c | 21 +++++- crypt/dap_enc_base64.h | 8 +- crypt/dap_enc_key.c | 110 +++++++++++++++------------- crypt/dap_enc_key.h | 55 ++++++++------ crypt/monero_crypto/CMakeLists.txt | 27 ++++--- 10 files changed, 213 insertions(+), 187 deletions(-) diff --git a/crypt/CMakeLists.txt b/crypt/CMakeLists.txt index 32287691a0..e944c08149 100644 --- a/crypt/CMakeLists.txt +++ b/crypt/CMakeLists.txt @@ -1,11 +1,15 @@ cmake_minimum_required(VERSION 2.8) project (dapcrypt) -set(CRYPT_SRCS dap_enc.c dap_enc_key.c ) - +set(CRYPT_SRCS dap_enc.c dap_enc_aes.c dap_enc_key.c ) + +add_subdirectory(monero_crypto) + include_directories("${dapcore_INCLUDE_DIRS}") +include_directories("${monero_crypto_INCLUDE_DIRS}") add_definitions ("${dapcore_DEFINITIONS}") -add_library(${PROJECT_NAME} STATIC ${CRYPT_SRCS}) +add_definitions ("${monero_crypto_DEFINITIONS}") +add_library(${PROJECT_NAME} STATIC ${CRYPT_SRCS} ${crypto_sources} ) set(${PROJECT_NAME}_DEFINITIONS CACHE INTERNAL "${PROJECT_NAME}: Definitions" FORCE) set(${PROJECT_NAME}_INCLUDE_DIRS ${PROJECT_SOURCE_DIR} CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE) diff --git a/crypt/dap_enc.c b/crypt/dap_enc.c index 5260cbbbb6..eba2bfd7a6 100644 --- a/crypt/dap_enc.c +++ b/crypt/dap_enc.c @@ -25,6 +25,7 @@ #include <string.h> #include <time.h> #include "dap_enc.h" +#include "dap_enc_base64.h" #include "dap_enc_key.h" #include "dap_common.h" @@ -41,6 +42,13 @@ int dap_enc_init() return 0; } +/** + * @brief dap_enc_deinit + */ +void dap_enc_deinit() +{ + +} /** * @brief dap_enc_code Encode data with key @@ -57,16 +65,16 @@ size_t dap_enc_code(struct dap_enc_key * key,const void * buf,const size_t buf_s void *proc_buf; switch(data_type_out) { - case ENC_DATA_TYPE_B64:{ + case DAP_ENC_DATA_TYPE_B64:{ proc_buf=calloc(1,buf_size*2); }break; - case ENC_DATA_TYPE_RAW:{ + case DAP_ENC_DATA_TYPE_RAW:{ proc_buf=buf_out; }break; } size_t ret=key->enc(key,buf,buf_size,proc_buf); - if(data_type_out==ENC_DATA_TYPE_B64){ - ret=enc_base64_encode(proc_buf,ret,buf_out); + if(data_type_out==DAP_ENC_DATA_TYPE_B64){ + ret=dap_enc_base64_encode(proc_buf,ret,buf_out); free(proc_buf); return ret; } @@ -77,7 +85,7 @@ size_t dap_enc_code(struct dap_enc_key * key,const void * buf,const size_t buf_s } /** - * @brief enc_decode Decode data with key + * @brief dap_enc_decode Decode data with key * @param key_public Public key * @param buf Input buffer * @param buf_size Input buffer size @@ -85,18 +93,18 @@ size_t dap_enc_code(struct dap_enc_key * key,const void * buf,const size_t buf_s * @param buf_out_max Maximum size of output buffer * @return bytes actualy written in the output buffer */ -size_t enc_decode(struct enc_key * key,const void * buf, const size_t buf_size, void * buf_out, enc_data_type_t data_type_in) +size_t dap_enc_decode(struct dap_enc_key * key,const void * buf, const size_t buf_size, void * buf_out, dap_enc_data_type_t data_type_in) { void *proc_buf; const void *proc_buf_const; size_t proc_buf_size; switch(data_type_in){ - case ENC_DATA_TYPE_B64:{ + case DAP_ENC_DATA_TYPE_B64:{ proc_buf=calloc(1,buf_size); - proc_buf_size= enc_base64_decode((const char*) buf,buf_size,proc_buf); + proc_buf_size= dap_enc_base64_decode((const char*) buf,buf_size,proc_buf); proc_buf_const=proc_buf; }break; - case ENC_DATA_TYPE_RAW:{ + case DAP_ENC_DATA_TYPE_RAW:{ proc_buf_const=buf; proc_buf_size=buf_size; }break; @@ -104,7 +112,7 @@ size_t enc_decode(struct enc_key * key,const void * buf, const size_t buf_size, if(key->dec){ size_t ret=key->dec(key,proc_buf_const,proc_buf_size,buf_out); - if(data_type_in==ENC_DATA_TYPE_B64) + if(data_type_in==DAP_ENC_DATA_TYPE_B64) free(proc_buf); return ret; }else{ diff --git a/crypt/dap_enc.h b/crypt/dap_enc.h index 9d83ce423f..f6efe8db36 100644 --- a/crypt/dap_enc.h +++ b/crypt/dap_enc.h @@ -25,12 +25,21 @@ #include "dap_enc_key.h" +#ifdef __cplusplus +extern "C" { +#endif + int dap_enc_init(); +void dap_enc_deinit(); size_t dap_enc_code(struct dap_enc_key * key, const void * buf, const size_t buf_size, void * buf_out, dap_enc_data_type_t data_type_out); size_t dap_enc_decode(struct dap_enc_key * key, const void * buf, const size_t buf_size, void * buf_out, - dap_enc_data_type_t data_type_in); + dap_enc_data_type_t data_type_in); + +#ifdef __cplusplus +} +#endif #endif diff --git a/crypt/dap_enc_aes.c b/crypt/dap_enc_aes.c index b2ba81a5b8..1c1d70c9dc 100755 --- a/crypt/dap_enc_aes.c +++ b/crypt/dap_enc_aes.c @@ -1,103 +1,77 @@ #include <stdlib.h> #include <stdio.h> #include <string.h> -#include "enc_aes.h" -#include "enc_key.h" -#include "sap_aes.h" +#include "dap_enc_aes.h" +#include "dap_enc_key.h" -typedef struct enc_aes_key{ - KeySchedule ks; - byte salt[SALT_LEN*2]; -} enc_aes_key_t; +#define AES_BLOCKSIZE 16 + +typedef struct dap_enc_aes_key{ +} dap_enc_aes_key_t; + +#define DAP_ENC_AES_KEY(a) ((dap_enc_aes_key_t *)((a)->_inheritor) ) -#define ENC_AES_KEY(a) ((enc_aes_key_t *)((a)->internal) ) /** - * @brief enc_aes_key_new - * @param key + * @brief dap_enc_aes_key_delete + * @param a_key */ -void enc_aes_key_new(struct enc_key * key) +void dap_enc_aes_key_delete(struct dap_enc_key *a_key) { - char str[64]; - size_t i; - for(i=0;i<sizeof(str);i++) - str[i]=64+rand()%30; - str[sizeof(str)-1]=0; - enc_aes_key_create(key,str); + (void) a_key; } /** - * @brief enc_aes_key_new - * @param key + * @brief dap_enc_aes_key_new_generate + * @param a_key */ -void enc_aes_key_create(struct enc_key * key, const char *password_string) +void dap_enc_aes_key_new_generate(struct dap_enc_key * a_key) { - char *p1; - char *p2; - key->data= (unsigned char*) calloc(1,33); - key->data_size=32; - key->internal = calloc(1,sizeof(enc_aes_key_t) ); - key->enc=enc_aes_encode; - key->dec=enc_aes_decode; - size_t p_len=strlen(password_string)/2; - p1= calloc(1,p_len+1); - p2= calloc(1,p_len+1); - memcpy(p1,password_string,p_len); - memcpy(p2,password_string+p_len,p_len); - - Aes_KeyFromPassword(256,p1,key->data); - Aes_KeyFromPassword(256,p2,ENC_AES_KEY(key)->salt); - Aes_KeyExpansion( key->data , ENC_AES_KEY(key)->ks ); - if (p1) - free(p1); - if (p2) - free(p2); - //Aes_GenSalt(ENC_AES_KEY(key)->salt); } -void enc_aes_key_delete(struct enc_key *key) +/** + * @brief dap_enc_aes_key_new_from + * @param a_key + * @param a_in + * @param a_in_size + */ +void dap_enc_aes_key_new_from(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size) { - (void) key; + } + /** - * @brief enc_aes_public_decode - * @param key - * @param key_size - * @param in - * @param in_size - * @param out + * @brief dap_enc_aes_decode + * @param a_key + * @param a_in + * @param a_in_size + * @param a_out * @return */ -size_t enc_aes_decode(struct enc_key* key, const void * in, size_t in_size,void * out) +size_t dap_enc_aes_decode(struct dap_enc_key* a_key, const void * a_in, size_t a_in_size,void * a_out) { - memcpy(out,in,in_size); - Aes_DecryptBlks( out,in_size,ENC_AES_KEY(key)->salt,ENC_AES_KEY(key)->ks ); - return in_size; + memcpy(a_out,a_in,a_in_size); + + return a_in_size; } /** - * @brief enc_aes_public_encode - * @param key - * @param key_size - * @param in - * @param in_size - * @param out + * @brief dap_enc_aes_encode + * @param a_key + * @param a_in + * @param a_in_size + * @param a_out * @return */ -size_t enc_aes_encode(struct enc_key* key, const void * in, size_t in_size,void * 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) { - size_t ret=(in_size%AES_BLOCKSIZE) ? ( in_size+ (AES_BLOCKSIZE- (in_size%AES_BLOCKSIZE) ) ): in_size ; - memcpy(out,in,in_size); - if(ret-in_size) - memset((unsigned char*)out+in_size,0,ret-in_size); - Aes_EncryptBlks(out,ret,ENC_AES_KEY(key)->salt,ENC_AES_KEY(key)->ks ); + size_t ret=(a_in_size%AES_BLOCKSIZE) ? ( a_in_size+ (AES_BLOCKSIZE- (a_in_size%AES_BLOCKSIZE) ) ): a_in_size ; + memcpy(a_out,a_in,a_in_size); + if(ret-a_in_size) + memset((unsigned char*)a_out+a_in_size,0,ret-a_in_size); + return ret; } - - - - - diff --git a/crypt/dap_enc_aes.h b/crypt/dap_enc_aes.h index 698bfdf7ac..7c5fb93909 100755 --- a/crypt/dap_enc_aes.h +++ b/crypt/dap_enc_aes.h @@ -1,15 +1,15 @@ -#ifndef _ENC_AES_H_ -#define _ENC_AES_H_ +#ifndef _DAP_ENC_AES_H_ +#define _DAP_ENC_AES_H_ #include <stddef.h> -struct enc_key; +struct dap_enc_key; -void enc_aes_key_new(struct enc_key * key); -void enc_aes_key_create(struct enc_key * key, const char *password_string); -void enc_aes_key_delete(struct enc_key *key); +void dap_enc_aes_key_new_generate(struct dap_enc_key * a_key); +void dap_enc_aes_key_new_from(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size); +void dap_enc_aes_key_delete(struct dap_enc_key *a_key); -size_t enc_aes_decode(struct enc_key* key, const void * in, size_t in_size,void * out); -size_t enc_aes_encode(struct enc_key* key, const void * in, size_t in_size,void * out); +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); #endif diff --git a/crypt/dap_enc_base64.c b/crypt/dap_enc_base64.c index 2b399c4b28..5c51a1577f 100755 --- a/crypt/dap_enc_base64.c +++ b/crypt/dap_enc_base64.c @@ -3,6 +3,7 @@ #include <stdint.h> #include <ctype.h> #include <stdlib.h> + #include "enc_base64.h" #define B64_TRUE 1 @@ -77,9 +78,14 @@ b64_decode (const char *, size_t); unsigned char * b64_decode_ex (const char *, size_t, size_t *); - - -size_t enc_base64_decode(const char * in, size_t in_size,void * out) +/** + * @brief dap_enc_base64_decode + * @param in + * @param in_size + * @param out + * @return + */ +size_t dap_enc_base64_decode(const char * in, size_t in_size,void * out) { //B64_Decode( in, in_size, (byte*) out ); //return B64_GetSize( in_size,0 ); @@ -168,7 +174,14 @@ size_t enc_base64_decode(const char * in, size_t in_size,void * out) return l_size; } -size_t enc_base64_encode(const void * a_in, size_t a_in_size, char * a_out) +/** + * @brief dap_enc_base64_encode + * @param a_in + * @param a_in_size + * @param a_out + * @return + */ +size_t dap_enc_base64_encode(const void * a_in, size_t a_in_size, char * a_out) { int i = 0; int j = 0; diff --git a/crypt/dap_enc_base64.h b/crypt/dap_enc_base64.h index bd3658e974..c0e7eb0c53 100755 --- a/crypt/dap_enc_base64.h +++ b/crypt/dap_enc_base64.h @@ -1,13 +1,13 @@ -#ifndef _ENC_BASE64_H_ -#define _ENC_BASE64_H_ +#ifndef _DAP_ENC_BASE64_H_ +#define _DAP_ENC_BASE64_H_ #include <stddef.h> #ifdef __cplusplus extern "C" { #endif -size_t enc_base64_decode(const char * in, size_t in_size,void * out); -size_t enc_base64_encode(const void * in, size_t in_size,char * out); +size_t dap_enc_base64_decode(const char * in, size_t in_size,void * out); +size_t dap_enc_base64_encode(const void * in, size_t in_size,char * out); #ifdef __cplusplus } diff --git a/crypt/dap_enc_key.c b/crypt/dap_enc_key.c index 5e15ecf980..27a17b8b85 100644 --- a/crypt/dap_enc_key.c +++ b/crypt/dap_enc_key.c @@ -22,52 +22,53 @@ #include <stdlib.h> #include <string.h> -#include "enc_key.h" -#include "enc_fnam2.h" - -#define LOG_TAG "enc_key" - +#include "dap_enc_aes.h" + +#include "dap_enc_key.h" + +#define LOG_TAG "dap_enc_key" + +struct dap_enc_key_callbacks{ + dap_enc_callback_dataop_t enc; + dap_enc_callback_dataop_t dec; + dap_enc_callback_data_t new_from_callback; + dap_enc_callback_t new_generate_callback; + dap_enc_callback_t delete_callback; +} s_callbacks[]={ + [DAP_ENC_KEY_TYPE_AES]={ + .enc = dap_enc_aes_encode, + .dec = dap_enc_aes_decode, + .new_generate_callback = dap_enc_aes_key_new_generate, + .new_from_callback = dap_enc_aes_key_new_from + } +}; /** - * @brief enc_key_session_pair_create - * @param client_pub_key - * @param key_len + * @brief dap_enc_key_init * @return */ -rsa_key_t* enc_key_session_pair_create(const char* client_pub_key, u_int16_t key_len) +int dap_enc_key_init() { - rsa_key_t* key_session_pair = (rsa_key_t*)calloc(1, sizeof(rsa_key_t)); - - BIO *bio = BIO_new(BIO_s_mem()); - BIO_write(bio, client_pub_key,key_len); - PEM_read_bio_RSAPublicKey(bio, &key_session_pair->client_public_key, NULL, NULL); - BIO_free_all(bio); - - if ( key_session_pair->client_public_key == NULL) - { - free(key_session_pair); - log_it(WARNING, "key session pair not create"); - return NULL; - } - - key_session_pair->server_key = RSA_generate_key(RSA_KEY_LENGTH, PUB_EXP, NULL, NULL); - - if ( key_session_pair->server_key == NULL ) - log_it(ERROR, "Error generate rsa key"); - - return key_session_pair; + return 0; } +/** + * @brief dap_enc_key_deinit + */ +void dap_enc_key_deinit() +{ +} /** - * @brief enc_key_generate - * @param v_type - * @param key_session_pair + * @brief dap_enc_key_new_generate + * @param key_type + * @param key_size * @return */ -enc_key_t* enc_key_generate(enc_data_type_t v_type, rsa_key_t* key_session_pair) +dap_enc_key_t *dap_enc_key_new_generate(dap_enc_key_type_t key_type, size_t key_size) { + if(s_callbacks[key_type] ) switch (v_type) { case ENC_KEY_TYPE_RSA: { if(key_session_pair == NULL) @@ -89,13 +90,7 @@ enc_key_t* enc_key_generate(enc_data_type_t v_type, rsa_key_t* key_session_pair) return NULL; } -/** - * @brief enc_key_create - * @param key_input_b64 - * @param v_type - * @return - */ -enc_key_t *enc_key_create(const char * key_input,enc_key_type_t v_type) +dap_enc_key_t *dap_enc_key_new_from_str(dap_enc_key_type_t a_type, const char *a_key_str) { enc_key_t * ret= (enc_key_t *) calloc(1,sizeof(enc_key_t) ); size_t input_size=strlen(key_input); @@ -113,16 +108,33 @@ enc_key_t *enc_key_create(const char * key_input,enc_key_type_t v_type) } /** - * @brief enc_key_delete - * @param key + * @brief dap_enc_key_new_from_data + * @param a_type + * @param a_key_input + * @param a_key_input_size + * @return + */ +dap_enc_key_t *dap_enc_key_new_from_data(dap_enc_key_type_t a_type, void * a_key_input, size_t a_key_input_size) +{ + +} + + +/** + * @brief dap_enc_key_delete + * @param a_key */ -void enc_key_delete(enc_key_t * key) +void dap_enc_key_delete(dap_enc_key_t * a_key) { - free(key->data); - if(key->type == ENC_KEY_TYPE_AES) - enc_aes_key_delete(key); - if(key->internal) - free(key->internal); - free(key); + if( a_key->delete_callback ) + a_key->delete_callback( a_key ); + + if( a_key->data ) + free( a_key->data ); + + if( a_key->_inheritor ) + free( a_key->_inheritor ); + + free(a_key); } diff --git a/crypt/dap_enc_key.h b/crypt/dap_enc_key.h index 768b2c9e5a..2317701c48 100644 --- a/crypt/dap_enc_key.h +++ b/crypt/dap_enc_key.h @@ -29,77 +29,84 @@ typedef enum dap_enc_data_type{DAP_ENC_DATA_TYPE_RAW, typedef enum dap_enc_key_type{ DAP_ENC_KEY_TYPE_AES, // Symmetric AES - DAP_ENC_KEY_rlwe_bcns15, // key exchange from the ring learning with errors problem + DAP_ENC_KEY_RLWE_BCNS15, // key exchange from the ring learning with errors problem // (Bos, Costello, Naehrig, Stebila, // IEEE Symposium on Security & Privacy 2015, // https://eprint.iacr.org/2014/599) - DAP_ENC_KEY_rlwe_newhope, // "NewHope": key exchange from the ring learning with errors problem + DAP_ENC_KEY_RLWE_NEWHOPE, // "NewHope": key exchange from the ring learning with errors problem // (Alkim, Ducas, Pöppelmann, Schwabe, USENIX Security 2016 ) // Using the reference C implementation of NewHope // from https://github.com/tpoeppelmann/newhop // https://eprint.iacr.org/2015/1092 - DAP_ENC_KEY_rlwe_msrln16, // Microsoft Research implementation of Peikert's ring-LWE key exchange + DAP_ENC_KEY_RLWE_MSRLN16, // Microsoft Research implementation of Peikert's ring-LWE key exchange // (Longa, Naehrig, CANS 2016, https://eprint.iacr.org/2016/504) // based on the implementation of Alkim, Ducas, Pöppelmann, and Schwabe, // with improvements from Longa and Naehrig, // https://www.microsoft.com/en-us/research/project/lattice-cryptography-library/ - DAP_ENC_KEY_lwe_frodo, // "Frodo": key exchange from the learning with errors problem + DAP_ENC_KEY_LWE_FRODO , // "Frodo": key exchange from the learning with errors problem // Bos, Costello, Ducas, Mironov, Naehrig, Nikolaenko, Raghunathan, Stebila // ACM Conference on Computer and Communications Security 2016 // https://eprint.iacr.org/2016/659 - DAP_ENC_KEY_sidh_cln16, // Key exchange from the supersingular isogeny Diffie-Hellman problem + DAP_ENC_KEY_SIDH_CLN16 , // Key exchange from the supersingular isogeny Diffie-Hellman problem // (Costello, Naehrig, Longa, CRYPTO 2016, https://eprint.iacr.org/2016/413) // using the implementation of Microsoft Research // https://www.microsoft.com/en-us/research/project/sidh-library/ - DAP_ENC_KEY_sidh_iqc_ref, // key exchange from the supersingular isogeny Diffie-Hellman problem + DAP_ENC_KEY_SIDH_IQC_REF, // key exchange from the supersingular isogeny Diffie-Hellman problem // (De Feo, Jao, Plût, J. Math. Cryptol. 8(3):209, 2014 // https://eprint.iacr.org/2011/506 // - DAP_ENC_KEY_code_mcbits, // "McBits": key exchange from the error correcting codes, + DAP_ENC_KEY_CODE_MCBITS, // "McBits": key exchange from the error correcting codes, // specifically Niederreiter's form of McEliece public key encryption // using hidden Goppa codes (Bernstein, Chou, Schwabe, CHES 2013, https://eprint.iacr.org/2015/610) // using the implementation of McBits from https://www.win.tue.nl/~tchou/mcbits/ - DAP_ENC_KEY_ntru, // NTRU: key transport using NTRU public key encryption + DAP_ENC_KEY_NTRU, // NTRU: key transport using NTRU public key encryption // (Hoffstein, Pipher, Silverman, ANTS 1998) with the EES743EP1 parameter set // wrapper around the implementation from the NTRU Open Source project // https://github.com/NTRUOpenSourceProject/NTRUEncrypt) - DAP_ENC_KEY_mlwe_kyber, // Kyber: a CCA-secure module-lattice-based key exchange mechanism + DAP_ENC_KEY_MLWE_KYBER, // Kyber: a CCA-secure module-lattice-based key exchange mechanism // (Bos, Ducas, Kiltz, Lepoint, Lyubashevsky, Schwabe, Shanck, Stehlé) // Real World Crypto 2017, https://eprint.iacr.org/2017/634) // using the reference C implementation of Kyber from pq-crystals/kyber - DAP_ENC_KEY_sig_picnic, // signature based on zero-knowledge proof as specified in + DAP_ENC_KEY_SIG_PICNIC , // signature based on zero-knowledge proof as specified in // Post-Quantum Zero-Knowledge and Signatures from Symmetric-Key Primitives // (Melissa Chase and David Derler and Steven Goldfeder and Claudio Orlandi // and Sebastian Ramacher and Christian Rechberger and Daniel Slamanig and Greg Zaverucha // https://eprint.iacr.org/2017/279.pdf), using the optimized implemenation // from https://github.com/IAIK/Picnic - } enc_key_type_t; + } dap_enc_key_type_t; -struct enc_key; -typedef size_t (*enc_callback_t)(struct enc_key *, const void * , const size_t ,void *); +struct dap_enc_key; -typedef struct enc_key{ +typedef void (*dap_enc_callback_t)(struct dap_enc_key *); +typedef void (*dap_enc_callback_arg_t)(struct dap_enc_key *, void *); +typedef void (*dap_enc_callback_data_t)(struct dap_enc_key *, const void * , size_t); +typedef size_t (*dap_enc_callback_dataop_t)(struct dap_enc_key *, const void * , const size_t ,void *); + +typedef struct dap_enc_key{ unsigned char * data; size_t data_size; - enc_key_type_t type; + dap_enc_key_type_t type; + + dap_enc_callback_dataop_t enc; + dap_enc_callback_dataop_t dec; + dap_enc_callback_t delete_callback; - enc_callback_t enc; - enc_callback_t dec; + void * _inheritor; +} dap_enc_key_t; - void * internal; -} enc_key_t; +int dap_enc_key_init(); +void dap_enc_key_deinit(); -extern enc_key_t *enc_key_new(size_t key_size,enc_key_type_t key_type); -extern enc_key_t *enc_key_generate(enc_data_type_t v_type, rsa_key_t* key_session_pair); -extern enc_key_t *enc_key_create(const char * key_input,enc_key_type_t v_type); -extern void enc_key_delete(enc_key_t * key); -extern rsa_key_t* enc_key_session_pair_create(const char* client_pub_key, u_int16_t key_len); +dap_enc_key_t *dap_enc_key_new_generate(dap_enc_key_type_t key_type, size_t key_size); +dap_enc_key_t *dap_enc_key_new_from_data(dap_enc_key_type_t a_type, void * a_key_input, size_t a_key_input_size); +dap_enc_key_t *dap_enc_key_new_from_str(dap_enc_key_type_t a_type, const char *a_key_str); +void dap_enc_key_delete(dap_enc_key_t * key); #endif diff --git a/crypt/monero_crypto/CMakeLists.txt b/crypt/monero_crypto/CMakeLists.txt index 1e06a0dfd0..c2f19dd0e6 100644 --- a/crypt/monero_crypto/CMakeLists.txt +++ b/crypt/monero_crypto/CMakeLists.txt @@ -26,7 +26,9 @@ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF # THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -set(crypto_sources +project (monero_crypto) + +set(monero_crypto_sources aesb.c blake256.c chacha8.c @@ -47,9 +49,9 @@ set(crypto_sources slow-hash.c tree-hash.c) -set(crypto_headers) +set(monero_crypto_headers) -set(crypto_private_headers +set(monero_crypto_private_headers blake256.h chacha8.h crypto-ops.h @@ -68,17 +70,7 @@ set(crypto_private_headers skein.h skein_port.h) -monero_private_headers(cncrypto - ${crypto_private_headers}) -monero_add_library(cncrypto - ${crypto_sources} - ${crypto_headers} - ${crypto_private_headers}) -target_link_libraries(cncrypto - PUBLIC - ${Boost_SYSTEM_LIBRARY} - PRIVATE - ${EXTRA_LIBRARIES}) + if (ARM) option(NO_OPTIMIZED_MULTIPLY_ON_ARM @@ -100,3 +92,10 @@ if (ANDROID OR IOS) endif() + +add_library(${PROJECT_NAME} STATIC ${monero_crypto_sources}) + +set(${PROJECT_NAME}_DEFINITIONS CACHE INTERNAL "${PROJECT_NAME}: Definitions" FORCE) + +set(${PROJECT_NAME}_INCLUDE_DIRS ${PROJECT_SOURCE_DIR} CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE) + -- GitLab