1
0
Fork 0
mirror of https://github.com/deltachat/deltachat-core.git synced 2025-10-06 12:00:11 +02:00

feat: no more netpgp when using rpgp

This commit is contained in:
dignifiedquire 2019-03-12 15:18:06 +01:00 committed by B. Petersen
parent 593b07b6a0
commit a88c8e086c
No known key found for this signature in database
GPG key ID: 3B88E92DEA8E9AFC
3 changed files with 35 additions and 23 deletions

View file

@ -107,13 +107,6 @@ else
etpan = etpan_proj.get_variable('dep') etpan = etpan_proj.get_variable('dep')
endif endif
# netpgp is always bundled
netpgp_proj = subproject('netpgp',
default_options: ['static-pic-lib=true',
'bzip2=disabled',
'openssl-idea=disabled',
'openssl-camellia=enabled'])
netpgp = netpgp_proj.get_variable('dep')
if get_option('rpgp') if get_option('rpgp')
# The rpgp pkg-config file is currently incorrect, so just try # The rpgp pkg-config file is currently incorrect, so just try
@ -121,8 +114,18 @@ if get_option('rpgp')
#rpgp = dependency('rpgp') #rpgp = dependency('rpgp')
rpgp = cc.find_library('rpgp') rpgp = cc.find_library('rpgp')
add_project_arguments('-DDC_USE_RPGP', language: 'c') add_project_arguments('-DDC_USE_RPGP', language: 'c')
netpgp = dependency('', required: false)
else else
rpgp = dependency('', required: false) rpgp = dependency('', required: false)
# netpgp is always bundled
netpgp_proj = subproject('netpgp',
default_options: ['static-pic-lib=true',
'bzip2=disabled',
'openssl-idea=disabled',
'openssl-camellia=enabled'])
netpgp = netpgp_proj.get_variable('dep')
endif endif

View file

@ -14,11 +14,12 @@ So, we do not see a simple alternative - but everyone is welcome to implement
one :-) */ one :-) */
#include <netpgp-extra.h>
#include <openssl/rand.h>
#include "dc_context.h" #include "dc_context.h"
#ifdef DC_USE_RPGP #ifdef DC_USE_RPGP
#include <librpgp.h> #include <librpgp.h>
#else
#include <netpgp-extra.h>
#include <openssl/rand.h>
#endif #endif
#include "dc_key.h" #include "dc_key.h"
#include "dc_keyring.h" #include "dc_keyring.h"
@ -26,10 +27,16 @@ one :-) */
#include "dc_hash.h" #include "dc_hash.h"
#if DC_USE_RPGP
void dc_pgp_init(void)
{
}
#else
static int s_io_initialized = 0; static int s_io_initialized = 0;
static pgp_io_t s_io; static pgp_io_t s_io;
void dc_pgp_init(void) void dc_pgp_init(void)
{ {
if (s_io_initialized) { if (s_io_initialized) {
@ -43,12 +50,17 @@ void dc_pgp_init(void)
s_io_initialized = 1; s_io_initialized = 1;
} }
#endif
void dc_pgp_exit(void) void dc_pgp_exit(void)
{ {
} }
#if DC_USE_RPGP
void dc_pgp_rand_seed(dc_context_t* context, const void* buf, size_t bytes) {}
#else
void dc_pgp_rand_seed(dc_context_t* context, const void* buf, size_t bytes) void dc_pgp_rand_seed(dc_context_t* context, const void* buf, size_t bytes)
{ {
@ -58,7 +70,7 @@ void dc_pgp_rand_seed(dc_context_t* context, const void* buf, size_t bytes)
RAND_seed(buf, bytes); RAND_seed(buf, bytes);
} }
#endif
/* Split data from PGP Armored Data as defined in https://tools.ietf.org/html/rfc4880#section-6.2. /* Split data from PGP Armored Data as defined in https://tools.ietf.org/html/rfc4880#section-6.2.
The given buffer is modified and the returned pointers just point inside the modified buffer, The given buffer is modified and the returned pointers just point inside the modified buffer,

View file

@ -1,5 +1,9 @@
#include <assert.h> #include <assert.h>
#if DC_USE_RPGP
#include <librpgp.h>
#else
#include <netpgp-extra.h> #include <netpgp-extra.h>
#endif
#include "dc_context.h" #include "dc_context.h"
#include "dc_mimeparser.h" #include "dc_mimeparser.h"
#include "dc_mimefactory.h" #include "dc_mimefactory.h"
@ -396,7 +400,7 @@ static char* create_adhoc_grp_id(dc_context_t* context, dc_array_t* member_ids /
char* addr = NULL; char* addr = NULL;
int i = 0; int i = 0;
int iCnt = 0; int iCnt = 0;
uint8_t* binary_hash = NULL; rpgp_cvec* binary_hash = NULL;
char* ret = NULL; char* ret = NULL;
dc_strbuilder_t member_cs; dc_strbuilder_t member_cs;
dc_strbuilder_init(&member_cs, 0); dc_strbuilder_init(&member_cs, 0);
@ -422,26 +426,19 @@ static char* create_adhoc_grp_id(dc_context_t* context, dc_array_t* member_ids /
} }
/* make sha-256 from the string */ /* make sha-256 from the string */
{ binary_hash = rpgp_hash_sha256((const uint8_t*)member_cs.buf, strlen(member_cs.buf));
pgp_hash_t hasher;
pgp_hash_sha256(&hasher);
hasher.init(&hasher);
hasher.add(&hasher, (const uint8_t*)member_cs.buf, strlen(member_cs.buf));
binary_hash = malloc(hasher.size);
hasher.finish(&hasher, binary_hash);
}
/* output the first 8 bytes as 16 hex-characters - CAVE: if the lenght changes here, also adapt dc_extract_grpid_from_rfc724_mid() */ /* output the first 8 bytes as 16 hex-characters - CAVE: if the lenght changes here, also adapt dc_extract_grpid_from_rfc724_mid() */
ret = calloc(1, 256); ret = calloc(1, 256);
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
sprintf(&ret[i*2], "%02x", (int)binary_hash[i]); sprintf(&ret[i*2], "%02x", (int)rpgp_cvec_data(binary_hash)[i]);
} }
/* cleanup */ /* cleanup */
if (binary_hash) { rpgp_cvec_drop(binary_hash);}
dc_array_free_ptr(member_addrs); dc_array_free_ptr(member_addrs);
dc_array_unref(member_addrs); dc_array_unref(member_addrs);
free(member_ids_str); free(member_ids_str);
free(binary_hash);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
sqlite3_free(q3); sqlite3_free(q3);
free(member_cs.buf); free(member_cs.buf);