...
parent
a337835f09
commit
a622b2879b
|
@ -98,6 +98,7 @@ PEP_STATUS mime_encode_parts(const message *src, message **dst)
|
|||
if (fp == NULL) {
|
||||
return PEP_CANNOT_CREATE_TEMP_FILE;
|
||||
}
|
||||
// unlink(fn);
|
||||
|
||||
int col = 0;
|
||||
int r = mailmime_write_file(fp, &col, mime_body);
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#include "pgp_gpg.h"
|
||||
#include "pEp_internal.h"
|
||||
|
||||
#define _GPGERR(X) ((X) & 0xffffL)
|
||||
|
||||
static bool ensure_keyserver()
|
||||
{
|
||||
static char buf[MAX_LINELENGTH];
|
||||
|
@ -209,7 +211,7 @@ PEP_STATUS pgp_init(PEP_SESSION session)
|
|||
_session->gpg.gpgme_set_locale(NULL, LC_CTYPE, setlocale(LC_CTYPE, NULL));
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_new(&_session->ctx);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
if (gpgme_error != GPG_ERR_NO_ERROR) {
|
||||
dlclose(_session->gpgme);
|
||||
free(_session);
|
||||
|
@ -219,7 +221,7 @@ PEP_STATUS pgp_init(PEP_SESSION session)
|
|||
|
||||
gpgme_error = _session->gpg.gpgme_set_protocol(_session->ctx,
|
||||
GPGME_PROTOCOL_OpenPGP);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error == GPG_ERR_NO_ERROR);
|
||||
|
||||
_session->gpg.gpgme_set_armor(_session->ctx, 1);
|
||||
|
@ -264,7 +266,7 @@ PEP_STATUS pgp_decrypt_and_verify(
|
|||
*keylist = NULL;
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_data_new_from_mem(&cipher, ctext, csize, 0);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error == GPG_ERR_NO_ERROR);
|
||||
if (gpgme_error != GPG_ERR_NO_ERROR) {
|
||||
if (gpgme_error == GPG_ERR_ENOMEM)
|
||||
|
@ -274,7 +276,7 @@ PEP_STATUS pgp_decrypt_and_verify(
|
|||
}
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_data_new(&plain);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error == GPG_ERR_NO_ERROR);
|
||||
if (gpgme_error != GPG_ERR_NO_ERROR) {
|
||||
_session->gpg.gpgme_data_release(cipher);
|
||||
|
@ -290,7 +292,7 @@ PEP_STATUS pgp_decrypt_and_verify(
|
|||
case GPGME_DATA_TYPE_PGP_OTHER:
|
||||
gpgme_error = _session->gpg.gpgme_op_decrypt_verify(_session->ctx, cipher,
|
||||
plain);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error != GPG_ERR_INV_VALUE);
|
||||
assert(gpgme_error != GPG_ERR_NO_DATA);
|
||||
|
||||
|
@ -450,7 +452,7 @@ PEP_STATUS pgp_verify_text(
|
|||
*keylist = NULL;
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_data_new_from_mem(&d_text, text, size, 0);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error == GPG_ERR_NO_ERROR);
|
||||
if (gpgme_error != GPG_ERR_NO_ERROR) {
|
||||
if (gpgme_error == GPG_ERR_ENOMEM)
|
||||
|
@ -460,7 +462,7 @@ PEP_STATUS pgp_verify_text(
|
|||
}
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_data_new_from_mem(&d_sig, signature, sig_size, 0);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error == GPG_ERR_NO_ERROR);
|
||||
if (gpgme_error != GPG_ERR_NO_ERROR) {
|
||||
_session->gpg.gpgme_data_release(d_text);
|
||||
|
@ -471,7 +473,7 @@ PEP_STATUS pgp_verify_text(
|
|||
}
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_op_verify(_session->ctx, d_sig, d_text, NULL);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error != GPG_ERR_INV_VALUE);
|
||||
|
||||
switch (gpgme_error) {
|
||||
|
@ -587,7 +589,7 @@ PEP_STATUS pgp_encrypt_and_sign(
|
|||
*csize = 0;
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_data_new_from_mem(&plain, ptext, psize, 0);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error == GPG_ERR_NO_ERROR);
|
||||
if (gpgme_error != GPG_ERR_NO_ERROR) {
|
||||
if (gpgme_error == GPG_ERR_ENOMEM)
|
||||
|
@ -597,7 +599,7 @@ PEP_STATUS pgp_encrypt_and_sign(
|
|||
}
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_data_new(&cipher);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error == GPG_ERR_NO_ERROR);
|
||||
if (gpgme_error != GPG_ERR_NO_ERROR) {
|
||||
_session->gpg.gpgme_data_release(plain);
|
||||
|
@ -622,7 +624,7 @@ PEP_STATUS pgp_encrypt_and_sign(
|
|||
assert(_keylist->value);
|
||||
gpgme_error = _session->gpg.gpgme_get_key(_session->ctx, _keylist->value,
|
||||
&rcpt[i], 0);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error != GPG_ERR_ENOMEM);
|
||||
|
||||
switch (gpgme_error) {
|
||||
|
@ -636,7 +638,7 @@ PEP_STATUS pgp_encrypt_and_sign(
|
|||
case GPG_ERR_NO_ERROR:
|
||||
if (i == 0) {
|
||||
gpgme_error_t _gpgme_error = _session->gpg.gpgme_signers_add(_session->ctx, rcpt[0]);
|
||||
_gpgme_error = gpg_err_code(_gpgme_error);
|
||||
_gpgme_error = _GPGERR(_gpgme_error);
|
||||
assert(_gpgme_error == GPG_ERR_NO_ERROR);
|
||||
}
|
||||
break;
|
||||
|
@ -670,7 +672,7 @@ PEP_STATUS pgp_encrypt_and_sign(
|
|||
|
||||
gpgme_error = _session->gpg.gpgme_op_encrypt_sign(_session->ctx, rcpt, flags,
|
||||
plain, cipher);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
switch (gpgme_error) {
|
||||
case GPG_ERR_NO_ERROR:
|
||||
{
|
||||
|
@ -754,7 +756,7 @@ PEP_STATUS pgp_generate_keypair(
|
|||
}
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_op_genkey(_session->ctx, parms, NULL, NULL);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
free(parms);
|
||||
|
||||
switch (gpgme_error) {
|
||||
|
@ -788,7 +790,7 @@ PEP_STATUS pgp_delete_keypair(PEP_SESSION session, const char *fpr)
|
|||
assert(fpr);
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_get_key(_session->ctx, fpr, &key, 0);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error != GPG_ERR_ENOMEM);
|
||||
switch (gpgme_error) {
|
||||
case GPG_ERR_NO_ERROR:
|
||||
|
@ -807,7 +809,7 @@ PEP_STATUS pgp_delete_keypair(PEP_SESSION session, const char *fpr)
|
|||
}
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_op_delete(_session->ctx, key, 1);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
_session->gpg.gpgme_key_unref(key);
|
||||
switch (gpgme_error) {
|
||||
case GPG_ERR_NO_ERROR:
|
||||
|
@ -839,7 +841,7 @@ PEP_STATUS pgp_import_key(PEP_SESSION session, const char *key_data, size_t size
|
|||
assert(key_data);
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_data_new_from_mem(&dh, key_data, size, 0);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error != GPG_ERR_ENOMEM);
|
||||
switch (gpgme_error) {
|
||||
case GPG_ERR_NO_ERROR:
|
||||
|
@ -855,7 +857,7 @@ PEP_STATUS pgp_import_key(PEP_SESSION session, const char *key_data, size_t size
|
|||
}
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_op_import(_session->ctx, dh);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
switch (gpgme_error) {
|
||||
case GPG_ERR_NO_ERROR:
|
||||
break;
|
||||
|
@ -893,7 +895,7 @@ PEP_STATUS pgp_export_key(
|
|||
assert(size);
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_data_new(&dh);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error != GPG_ERR_ENOMEM);
|
||||
switch (gpgme_error) {
|
||||
case GPG_ERR_NO_ERROR:
|
||||
|
@ -910,7 +912,7 @@ PEP_STATUS pgp_export_key(
|
|||
|
||||
gpgme_error = _session->gpg.gpgme_op_export(_session->ctx, fpr,
|
||||
GPGME_EXPORT_MODE_MINIMAL, dh);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
switch (gpgme_error) {
|
||||
case GPG_ERR_NO_ERROR:
|
||||
break;
|
||||
|
@ -963,7 +965,7 @@ static void _switch_mode(pEpSession *_session, gpgme_keylist_mode_t remove_mode,
|
|||
mode |= add_mode;
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_set_keylist_mode(_session->ctx, mode);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error == GPG_ERR_NO_ERROR);
|
||||
}
|
||||
|
||||
|
@ -979,7 +981,7 @@ PEP_STATUS pgp_recv_key(PEP_SESSION session, const char *pattern)
|
|||
_switch_mode(_session, GPGME_KEYLIST_MODE_LOCAL, GPGME_KEYLIST_MODE_EXTERN);
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_op_keylist_start(_session->ctx, pattern, 0);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
switch (gpgme_error) {
|
||||
case GPG_ERR_NO_ERROR:
|
||||
break;
|
||||
|
@ -996,7 +998,7 @@ PEP_STATUS pgp_recv_key(PEP_SESSION session, const char *pattern)
|
|||
|
||||
do {
|
||||
gpgme_error = _session->gpg.gpgme_op_keylist_next(_session->ctx, &key);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error != GPG_ERR_INV_VALUE);
|
||||
switch (gpgme_error) {
|
||||
case GPG_ERR_EOF:
|
||||
|
@ -1010,7 +1012,7 @@ PEP_STATUS pgp_recv_key(PEP_SESSION session, const char *pattern)
|
|||
keys[1] = NULL;
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_op_import_keys(_session->ctx, keys);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
_session->gpg.gpgme_key_unref(key);
|
||||
assert(gpgme_error != GPG_ERR_INV_VALUE);
|
||||
assert(gpgme_error != GPG_ERR_CONFLICT);
|
||||
|
@ -1056,7 +1058,7 @@ PEP_STATUS pgp_find_keys(
|
|||
*keylist = NULL;
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_op_keylist_start(_session->ctx, pattern, 0);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
switch (gpgme_error) {
|
||||
case GPG_ERR_NO_ERROR:
|
||||
break;
|
||||
|
@ -1072,7 +1074,7 @@ PEP_STATUS pgp_find_keys(
|
|||
|
||||
do {
|
||||
gpgme_error = _session->gpg.gpgme_op_keylist_next(_session->ctx, &key);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error != GPG_ERR_INV_VALUE);
|
||||
switch (gpgme_error) {
|
||||
case GPG_ERR_EOF:
|
||||
|
@ -1117,7 +1119,7 @@ PEP_STATUS pgp_send_key(PEP_SESSION session, const char *pattern)
|
|||
|
||||
gpgme_error = _session->gpg.gpgme_op_export(_session->ctx, pattern,
|
||||
GPGME_EXPORT_MODE_EXTERN, NULL);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error != GPG_ERR_INV_VALUE);
|
||||
if (gpgme_error == GPG_ERR_NO_ERROR)
|
||||
return PEP_STATUS_OK;
|
||||
|
@ -1144,7 +1146,7 @@ PEP_STATUS pgp_get_key_rating(
|
|||
*comm_type = PEP_ct_unknown;
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_op_keylist_start(_session->ctx, fpr, 0);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
switch (gpgme_error) {
|
||||
case GPG_ERR_NO_ERROR:
|
||||
break;
|
||||
|
@ -1156,7 +1158,7 @@ PEP_STATUS pgp_get_key_rating(
|
|||
};
|
||||
|
||||
gpgme_error = _session->gpg.gpgme_op_keylist_next(_session->ctx, &key);
|
||||
gpgme_error = gpg_err_code(gpgme_error);
|
||||
gpgme_error = _GPGERR(gpgme_error);
|
||||
assert(gpgme_error != GPG_ERR_INV_VALUE);
|
||||
|
||||
if (key == NULL) {
|
||||
|
|
|
@ -35,7 +35,7 @@ typedef struct _identity_list {
|
|||
// caveat:
|
||||
// ident is being moved, the caller loses ownership
|
||||
|
||||
identity_list *new_identity_list(pEp_identity *ident);
|
||||
DYNAMIC_API identity_list *new_identity_list(pEp_identity *ident);
|
||||
|
||||
|
||||
// identity_list_dup() - duplicate identity_list (deep copy)
|
||||
|
@ -46,7 +46,7 @@ identity_list *new_identity_list(pEp_identity *ident);
|
|||
// return value:
|
||||
// new identity_list or NULL if out of memory
|
||||
|
||||
identity_list *identity_list_dup(const identity_list *src);
|
||||
DYNAMIC_API identity_list *identity_list_dup(const identity_list *src);
|
||||
|
||||
|
||||
// free_identity_list() - free memory allocated by identity_list
|
||||
|
@ -58,7 +58,7 @@ identity_list *identity_list_dup(const identity_list *src);
|
|||
// this function frees all identities in the list additional to the
|
||||
// identity_list itself
|
||||
|
||||
void free_identity_list(identity_list *id_list);
|
||||
DYNAMIC_API void free_identity_list(identity_list *id_list);
|
||||
|
||||
|
||||
// identity_list_add - add identity to an identity_list
|
||||
|
@ -73,7 +73,7 @@ void free_identity_list(identity_list *id_list);
|
|||
// caveat:
|
||||
// ident is being moved, the caller loses ownership
|
||||
|
||||
identity_list *identity_list_add(identity_list *id_list, pEp_identity *ident);
|
||||
DYNAMIC_API identity_list *identity_list_add(identity_list *id_list, pEp_identity *ident);
|
||||
|
||||
typedef enum _PEP_msg_format {
|
||||
PEP_format_plain = 0,
|
||||
|
@ -111,7 +111,7 @@ typedef struct _bloblist_t {
|
|||
// the ownership of the blob goes to the bloblist; mime_type and file_name
|
||||
// are being copied, the originals remain in the ownership of the caller
|
||||
|
||||
bloblist_t *new_bloblist(char *blob, size_t size, const char *mime_type,
|
||||
DYNAMIC_API bloblist_t *new_bloblist(char *blob, size_t size, const char *mime_type,
|
||||
const char *file_name);
|
||||
|
||||
|
||||
|
@ -120,7 +120,7 @@ bloblist_t *new_bloblist(char *blob, size_t size, const char *mime_type,
|
|||
// parameters:
|
||||
// bloblist bloblist to free
|
||||
|
||||
void free_bloblist(bloblist_t *bloblist);
|
||||
DYNAMIC_API void free_bloblist(bloblist_t *bloblist);
|
||||
|
||||
|
||||
// bloblist_add() - add reference to a blob to bloblist
|
||||
|
@ -139,7 +139,7 @@ void free_bloblist(bloblist_t *bloblist);
|
|||
// the ownership of the blob goes to the bloblist; mime_type and file_name
|
||||
// are being copied, the originals remain in the ownership of the caller
|
||||
|
||||
bloblist_t *bloblist_add(bloblist_t *bloblist, char *blob, size_t size,
|
||||
DYNAMIC_API bloblist_t *bloblist_add(bloblist_t *bloblist, char *blob, size_t size,
|
||||
const char *mime_type, const char *file_name);
|
||||
|
||||
|
||||
|
@ -205,7 +205,7 @@ typedef struct _message_ref_list {
|
|||
// them; shortmsg is being copied, the ownership of the original remains
|
||||
// with the caller
|
||||
|
||||
message *new_message(
|
||||
DYNAMIC_API message *new_message(
|
||||
PEP_msg_direction dir,
|
||||
pEp_identity *from,
|
||||
identity_list *to,
|
||||
|
@ -222,7 +222,7 @@ message *new_message(
|
|||
// raw data as well as referenced other messages aren't freed and remain
|
||||
// in the ownership of the caller
|
||||
|
||||
void free_message(message *msg);
|
||||
DYNAMIC_API void free_message(message *msg);
|
||||
|
||||
|
||||
// new_message_ref_list() - allocate new message reference list
|
||||
|
@ -233,7 +233,7 @@ void free_message(message *msg);
|
|||
// return value:
|
||||
// pointer to new message_ref_list or NULL if out of memory
|
||||
|
||||
message_ref_list *new_message_ref_list(message *msg);
|
||||
DYNAMIC_API message_ref_list *new_message_ref_list(message *msg);
|
||||
|
||||
|
||||
// free_message_ref_list() - free message reference list
|
||||
|
@ -241,7 +241,7 @@ message_ref_list *new_message_ref_list(message *msg);
|
|||
// parameters:
|
||||
// msg_list message_ref_list to free
|
||||
|
||||
void free_message_ref_list(message_ref_list *msg_list);
|
||||
DYNAMIC_API void free_message_ref_list(message_ref_list *msg_list);
|
||||
|
||||
|
||||
// message_ref_list_add() - add a reference to a message to a message reference
|
||||
|
@ -255,7 +255,7 @@ void free_message_ref_list(message_ref_list *msg_list);
|
|||
// pointer to the last element of message_ref_list or NULL if out of
|
||||
// memory
|
||||
|
||||
message_ref_list *message_ref_list_add(message_ref_list *msg_list,
|
||||
DYNAMIC_API message_ref_list *message_ref_list_add(message_ref_list *msg_list,
|
||||
message *msg);
|
||||
|
||||
|
||||
|
|
|
@ -29,9 +29,19 @@ int main() {
|
|||
assert(enc_msg);
|
||||
cout << "message encrypted.\n";
|
||||
|
||||
// cout << "MIME encoding message…\n";
|
||||
// message *mmsg;
|
||||
// PEP_STATUS status3 = mime_encode_parts(msg, &mmsg);
|
||||
// assert(mmsg);
|
||||
// assert(status3 == PEP_STATUS_OK);
|
||||
// cout << "message:\n";
|
||||
// cout << mmsg->longmsg;
|
||||
// cout << "\n";
|
||||
|
||||
cout << "freeing messages…\n";
|
||||
free_message(msg);
|
||||
free_message(enc_msg);
|
||||
// free_message(mmsg);
|
||||
cout << "done.\n";
|
||||
|
||||
cout << "calling release()\n";
|
||||
|
|
Loading…
Reference in New Issue