merged in default

doc_update_sequoia
Krista Bennett 2018-10-04 07:10:08 +02:00
commit bb7a9ce7de
10 changed files with 82 additions and 35 deletions

View File

@ -238,6 +238,16 @@ NETPGP_INC=
#NETPGP_INC=-I$(PREFIX)/include
######### OpenPGP #########
# CppUnit library search flag
CPPUNIT_LIB=
#CPPUNIT_LIB=-L$(HOME)/local/lib
# CppUnit include search flag
CPPUNIT_INC=
#CPPUNIT_INC=-I$(HOME)/local/inc
######### Engine internals #########
# C macros (not environment variables) that can be overridden:
# DEFAULT_KEYSERVER - string with default keyserver

View File

@ -19,7 +19,8 @@ typedef enum _PEP_cryptotech {
typedef PEP_STATUS (*decrypt_and_verify_t)(
PEP_SESSION session, const char *ctext, size_t csize,
const char *dsigtext, size_t dsigsize,
char **ptext, size_t *psize, stringlist_t **keylist
char **ptext, size_t *psize, stringlist_t **keylist,
char **filename_ptr
);
typedef PEP_STATUS (*verify_text_t)(

View File

@ -1170,6 +1170,7 @@ static bool is_encrypted_html_attachment(const bloblist_t *blob)
return false;
const char* bare_filename_ptr = _get_resource_ptr_noown(blob->filename);
bare_filename_ptr += strlen(bare_filename_ptr) - 15;
if (strncmp(bare_filename_ptr, "PGPexch.htm.", 12) == 0) {
if (strcmp(bare_filename_ptr + 11, ".pgp") == 0 ||
strcmp(bare_filename_ptr + 11, ".asc") == 0)
@ -1455,7 +1456,8 @@ bool import_attached_keys(
blob_value, blob_size,
NULL, 0,
&bl_ptext, &bl_psize,
&bl_keylist);
&bl_keylist,
NULL);
free_stringlist(bl_keylist); // we don't care about key encryption as long as we decrypt
if (_status == PEP_DECRYPTED || _status == PEP_DECRYPTED_AND_VERIFIED) {
free_blobval = true;
@ -2700,7 +2702,8 @@ static PEP_STATUS verify_decrypted(PEP_SESSION session,
free_stringlist(*keylist);
*decrypt_status = decrypt_and_verify(session, ctext, csize,
NULL, 0,
&ptext, &psize, keylist);
&ptext, &psize, keylist,
NULL);
}
@ -2750,9 +2753,12 @@ static PEP_STATUS _decrypt_in_pieces(PEP_SESSION session,
free(ptext);
ptext = NULL;
char* pgp_filename = NULL;
status = decrypt_and_verify(session, attctext, attcsize,
NULL, 0,
&ptext, &psize, &_keylist);
&ptext, &psize, &_keylist,
&pgp_filename);
free_stringlist(_keylist);
if (ptext) {
@ -2762,17 +2768,25 @@ static PEP_STATUS _decrypt_in_pieces(PEP_SESSION session,
}
else {
static const char * const mime_type = "application/octet-stream";
char * const filename =
without_double_ending(_s->filename);
if (filename == NULL)
return PEP_OUT_OF_MEMORY;
_m = bloblist_add(_m, ptext, psize, mime_type,
filename);
free(filename);
if (_m == NULL)
return PEP_OUT_OF_MEMORY;
if (pgp_filename) {
_m = bloblist_add(_m, ptext, psize, mime_type,
pgp_filename);
free(pgp_filename);
if (_m == NULL)
return PEP_OUT_OF_MEMORY;
}
else {
char * const filename =
without_double_ending(_s->filename);
if (filename == NULL)
return PEP_OUT_OF_MEMORY;
_m = bloblist_add(_m, ptext, psize, mime_type,
filename);
free(filename);
if (_m == NULL)
return PEP_OUT_OF_MEMORY;
}
ptext = NULL;
if (msg->attachments == NULL)
@ -2801,6 +2815,7 @@ static PEP_STATUS _decrypt_in_pieces(PEP_SESSION session,
return PEP_OUT_OF_MEMORY;
}
}
return status;
}
@ -3195,7 +3210,8 @@ DYNAMIC_API PEP_STATUS _decrypt_message(
/** Ok, we should be ready to decrypt. Try decrypt and verify first! **/
status = cryptotech[crypto].decrypt_and_verify(session, ctext,
csize, dsig_text, dsig_size,
&ptext, &psize, &_keylist);
&ptext, &psize, &_keylist,
NULL);
if (status > PEP_CANNOT_DECRYPT_UNKNOWN)
goto pep_error;

View File

@ -3478,7 +3478,8 @@ DYNAMIC_API PEP_STATUS least_trust(
DYNAMIC_API PEP_STATUS decrypt_and_verify(
PEP_SESSION session, const char *ctext, size_t csize,
const char *dsigtext, size_t dsigsize,
char **ptext, size_t *psize, stringlist_t **keylist
char **ptext, size_t *psize, stringlist_t **keylist,
char** filename_ptr
)
{
assert(session);
@ -3492,7 +3493,8 @@ DYNAMIC_API PEP_STATUS decrypt_and_verify(
return PEP_ILLEGAL_VALUE;
return session->cryptotech[PEP_crypt_OpenPGP].decrypt_and_verify(
session, ctext, csize, dsigtext, dsigsize, ptext, psize, keylist);
session, ctext, csize, dsigtext, dsigsize, ptext, psize, keylist,
filename_ptr);
}
DYNAMIC_API PEP_STATUS encrypt_and_sign(

View File

@ -232,16 +232,20 @@ DYNAMIC_API void config_service_log(PEP_SESSION session, bool enable);
// decrypt_and_verify() - decrypt and/or verify a message
//
// parameters:
// session (in) session handle
// ctext (in) cipher text to decrypt and/or verify
// csize (in) size of cipher text
// dsigtext (in) if extant, *detached* signature text for this
// message (or NULL if not)
// dsize (in) size of *detached* signature text for this
// message (0, if no detached sig exists)
// ptext (out) pointer to internal buffer with plain text
// psize (out) size of plain text
// keylist (out) list of key ids which where used to encrypt
// session (in) session handle
// ctext (in) cipher text to decrypt and/or verify
// csize (in) size of cipher text
// dsigtext (in) if extant, *detached* signature text for this
// message (or NULL if not)
// dsize (in) size of *detached* signature text for this
// message (0, if no detached sig exists)
// ptext (out) pointer to internal buffer with plain text
// psize (out) size of plain text
// keylist (out) list of key ids which where used to encrypt
// filename_ptr (out) mails produced by certain PGP implementations
// may return a decrypted filename here for attachments.
// Externally, this can generally be NULL, and is an optional
// parameter.
//
// return value:
// PEP_UNENCRYPTED message was unencrypted and not signed
@ -263,7 +267,8 @@ DYNAMIC_API void config_service_log(PEP_SESSION session, bool enable);
DYNAMIC_API PEP_STATUS decrypt_and_verify(
PEP_SESSION session, const char *ctext, size_t csize,
const char *dsigtext, size_t dsigsize,
char **ptext, size_t *psize, stringlist_t **keylist
char **ptext, size_t *psize, stringlist_t **keylist,
char ** filename_ptr
);

View File

@ -577,7 +577,8 @@ void pgp_release(PEP_SESSION session, bool out_last)
PEP_STATUS pgp_decrypt_and_verify(
PEP_SESSION session, const char *ctext, size_t csize,
const char *dsigtext, size_t dsigsize,
char **ptext, size_t *psize, stringlist_t **keylist
char **ptext, size_t *psize, stringlist_t **keylist,
char** filename_ptr
)
{
PEP_STATUS result;
@ -693,6 +694,15 @@ PEP_STATUS pgp_decrypt_and_verify(
*keylist = NULL;
result = PEP_OUT_OF_MEMORY;
}
// Get filename, if desired
if (filename_ptr) {
const char* fname = gpgme_decrypt_result->file_name;
if (fname) {
*filename_ptr = strdup(fname);
if (!(*filename_ptr))
result = PEP_OUT_OF_MEMORY;
}
}
} /* Ok, so now we have any recipients it was encrypted for
in recipient_keylist */
@ -811,7 +821,7 @@ PEP_STATUS pgp_decrypt_and_verify(
}
case GPG_ERR_CERT_REVOKED:
case GPG_ERR_BAD_SIGNATURE:
result = PEP_DECRYPT_SIGNATURE_DOES_NOT_MATCH;
result = PEP_DECRYPT_SIGNATURE_DOES_NOT_MATCH;
//result = PEP_DECRYPT_BAD_SIGNATURE;
break;
case GPG_ERR_SIG_EXPIRED:

View File

@ -11,7 +11,8 @@ void pgp_release(PEP_SESSION session, bool out_last);
PEP_STATUS pgp_decrypt_and_verify(
PEP_SESSION session, const char *ctext, size_t csize,
const char *dsigtext, size_t dsigsize,
char **ptext, size_t *psize, stringlist_t **keylist
char **ptext, size_t *psize, stringlist_t **keylist,
char** filename_ptr
);
PEP_STATUS pgp_encrypt_and_sign(

View File

@ -373,7 +373,8 @@ static PEP_STATUS _validation_results(
PEP_STATUS pgp_decrypt_and_verify(
PEP_SESSION session, const char *ctext, size_t csize,
const char *dsigtext, size_t dsigsize,
char **ptext, size_t *psize, stringlist_t **keylist
char **ptext, size_t *psize, stringlist_t **keylist,
char** filename_ptr // will be ignored
)
{
char *_ptext = NULL;

View File

@ -10,7 +10,8 @@ void pgp_release(PEP_SESSION session, bool out_last);
PEP_STATUS pgp_decrypt_and_verify(
PEP_SESSION session, const char *ctext, size_t csize,
const char *dsigtext, size_t dsigsize,
char **ptext, size_t *psize, stringlist_t **keylist
char **ptext, size_t *psize, stringlist_t **keylist,
char** filename_ptr // will be ignored
);
PEP_STATUS pgp_encrypt_and_sign(

View File

@ -18,14 +18,14 @@ OBJS := $(addsuffix .o,$(basename $(SRCS)))
DEPS := $(OBJS:.o=.d)
INC_DIRS := ./include /usr/local/include
INC_FLAGS := $(addprefix -I,$(INC_DIRS)) $(GPGME_INC)
INC_FLAGS := $(addprefix -I,$(INC_DIRS)) $(GPGME_INC) $(CPPUNIT_INC)
LDFLAGS += -L/usr/local/lib
CFLAGS += -Wno-deprecated
CXXFLAGS += -Wno-deprecated
LDFLAGS+= $(ETPAN_LIB) -L../asn.1 -L../src
LDFLAGS+= $(ETPAN_LIB) $(CPPUNIT_LIB) -L../asn.1 -L../src
LDLIBS+= -letpan -lpEpEngine -lstdc++ -lasn1
ifeq ($(BUILD_FOR),Linux)