|
|
@ -340,7 +340,8 @@ static PEP_STATUS encrypt_PGP_MIME( |
|
|
|
PEP_SESSION session, |
|
|
|
const message *src, |
|
|
|
stringlist_t *keys, |
|
|
|
message *dst |
|
|
|
message *dst, |
|
|
|
PEP_encrypt_flags_t flags |
|
|
|
) |
|
|
|
{ |
|
|
|
PEP_STATUS status = PEP_STATUS_OK; |
|
|
@ -396,8 +397,12 @@ static PEP_STATUS encrypt_PGP_MIME( |
|
|
|
if (mimetext == NULL) |
|
|
|
goto pep_error; |
|
|
|
|
|
|
|
status = encrypt_and_sign(session, keys, mimetext, strlen(mimetext), |
|
|
|
&ctext, &csize); |
|
|
|
if (flags & PEP_encrypt_flag_force_unsigned) |
|
|
|
status = encrypt_only(session, keys, mimetext, strlen(mimetext), |
|
|
|
&ctext, &csize); |
|
|
|
else |
|
|
|
status = encrypt_and_sign(session, keys, mimetext, strlen(mimetext), |
|
|
|
&ctext, &csize); |
|
|
|
free(mimetext); |
|
|
|
if (ctext == NULL) |
|
|
|
goto pep_error; |
|
|
@ -439,7 +444,8 @@ static PEP_STATUS encrypt_PGP_in_pieces( |
|
|
|
PEP_SESSION session, |
|
|
|
const message *src, |
|
|
|
stringlist_t *keys, |
|
|
|
message *dst |
|
|
|
message *dst, |
|
|
|
PEP_encrypt_flags_t flags |
|
|
|
) |
|
|
|
{ |
|
|
|
PEP_STATUS status = PEP_STATUS_OK; |
|
|
@ -453,6 +459,8 @@ static PEP_STATUS encrypt_PGP_in_pieces( |
|
|
|
|
|
|
|
dst->enc_format = PEP_enc_pieces; |
|
|
|
|
|
|
|
bool nosign = (flags & PEP_encrypt_flag_force_unsigned); |
|
|
|
|
|
|
|
if (src->shortmsg && src->shortmsg[0] && strcmp(src->shortmsg, "pEp") != 0) { |
|
|
|
if (session->unencrypted_subject) { |
|
|
|
dst->shortmsg = strdup(src->shortmsg); |
|
|
@ -468,8 +476,12 @@ static PEP_STATUS encrypt_PGP_in_pieces( |
|
|
|
free_ptext = true; |
|
|
|
} |
|
|
|
|
|
|
|
status = encrypt_and_sign(session, keys, ptext, strlen(ptext), &ctext, |
|
|
|
&csize); |
|
|
|
if (nosign) |
|
|
|
status = encrypt_only(session, keys, ptext, strlen(ptext), &ctext, |
|
|
|
&csize); |
|
|
|
else |
|
|
|
status = encrypt_and_sign(session, keys, ptext, strlen(ptext), &ctext, |
|
|
|
&csize); |
|
|
|
if (free_ptext) |
|
|
|
free(ptext); |
|
|
|
free_ptext = false; |
|
|
@ -482,8 +494,12 @@ static PEP_STATUS encrypt_PGP_in_pieces( |
|
|
|
} |
|
|
|
else if (src->longmsg && src->longmsg[0]) { |
|
|
|
ptext = src->longmsg; |
|
|
|
status = encrypt_and_sign(session, keys, ptext, strlen(ptext), &ctext, |
|
|
|
&csize); |
|
|
|
if (nosign) |
|
|
|
status = encrypt_only(session, keys, ptext, strlen(ptext), &ctext, |
|
|
|
&csize); |
|
|
|
else |
|
|
|
status = encrypt_and_sign(session, keys, ptext, strlen(ptext), &ctext, |
|
|
|
&csize); |
|
|
|
if (ctext) { |
|
|
|
dst->longmsg = ctext; |
|
|
|
} |
|
|
@ -500,8 +516,12 @@ static PEP_STATUS encrypt_PGP_in_pieces( |
|
|
|
|
|
|
|
if (src->longmsg_formatted && src->longmsg_formatted[0]) { |
|
|
|
ptext = src->longmsg_formatted; |
|
|
|
status = encrypt_and_sign(session, keys, ptext, strlen(ptext), &ctext, |
|
|
|
&csize); |
|
|
|
if (nosign) |
|
|
|
status = encrypt_only(session, keys, ptext, strlen(ptext), &ctext, |
|
|
|
&csize); |
|
|
|
else |
|
|
|
status = encrypt_and_sign(session, keys, ptext, strlen(ptext), &ctext, |
|
|
|
&csize); |
|
|
|
if (ctext) { |
|
|
|
|
|
|
|
bloblist_t *_a = bloblist_add(dst->attachments, ctext, csize, |
|
|
@ -535,8 +555,12 @@ static PEP_STATUS encrypt_PGP_in_pieces( |
|
|
|
else { |
|
|
|
size_t psize = _s->size; |
|
|
|
ptext = _s->value; |
|
|
|
status = encrypt_and_sign(session, keys, ptext, psize, &ctext, |
|
|
|
&csize); |
|
|
|
if (nosign) |
|
|
|
status = encrypt_only(session, keys, ptext, psize, &ctext, |
|
|
|
&csize); |
|
|
|
else |
|
|
|
status = encrypt_and_sign(session, keys, ptext, psize, &ctext, |
|
|
|
&csize); |
|
|
|
if (ctext) { |
|
|
|
char *filename = NULL; |
|
|
|
|
|
|
@ -1187,11 +1211,11 @@ DYNAMIC_API PEP_STATUS encrypt_message( |
|
|
|
switch (enc_format) { |
|
|
|
case PEP_enc_PGP_MIME: |
|
|
|
case PEP_enc_PEP: // BUG: should be implemented extra |
|
|
|
status = encrypt_PGP_MIME(session, src, keys, msg); |
|
|
|
status = encrypt_PGP_MIME(session, src, keys, msg, flags); |
|
|
|
break; |
|
|
|
|
|
|
|
case PEP_enc_pieces: |
|
|
|
status = encrypt_PGP_in_pieces(session, src, keys, msg); |
|
|
|
status = encrypt_PGP_in_pieces(session, src, keys, msg, flags); |
|
|
|
break; |
|
|
|
|
|
|
|
/* case PEP_enc_PEP: |
|
|
@ -1298,11 +1322,11 @@ DYNAMIC_API PEP_STATUS encrypt_message_for_self( |
|
|
|
switch (enc_format) { |
|
|
|
case PEP_enc_PGP_MIME: |
|
|
|
case PEP_enc_PEP: // BUG: should be implemented extra |
|
|
|
status = encrypt_PGP_MIME(session, src, keys, msg); |
|
|
|
status = encrypt_PGP_MIME(session, src, keys, msg, flags); |
|
|
|
break; |
|
|
|
|
|
|
|
case PEP_enc_pieces: |
|
|
|
status = encrypt_PGP_in_pieces(session, src, keys, msg); |
|
|
|
status = encrypt_PGP_in_pieces(session, src, keys, msg, flags); |
|
|
|
break; |
|
|
|
|
|
|
|
/* case PEP_enc_PEP: |
|
|
|