|
|
|
@ -7,62 +7,46 @@
|
|
|
|
|
// written by Volker Birk
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
struct message {
|
|
|
|
|
typedef enum _PEP_text_format {
|
|
|
|
|
PEP_text_format_plain = 0,
|
|
|
|
|
PEP_text_format_html,
|
|
|
|
|
PEP_text_format_other = 0xff
|
|
|
|
|
} PEP_text_format;
|
|
|
|
|
|
|
|
|
|
typedef enum _PEP_msg_direction {
|
|
|
|
|
PEP_dir_incoming = 0,
|
|
|
|
|
PEP_dir_outgoing
|
|
|
|
|
} PEP_msg_direction;
|
|
|
|
|
|
|
|
|
|
typedef enum _PEP_enc_format {
|
|
|
|
|
PEP_enc_none = 0, // message is not encrypted
|
|
|
|
|
PEP_enc_pieces, // inline PGP + PGP extensions
|
|
|
|
|
PEP_enc_S_MIME, // RFC5751
|
|
|
|
|
PEP_enc_PGP_MIME, // RFC3156
|
|
|
|
|
PEP_enc_PEP, // pEp encryption format
|
|
|
|
|
PEP_enc_PGP_MIME_Outlook1 // Message B0rken by Outlook type 1
|
|
|
|
|
} PEP_enc_format;
|
|
|
|
|
|
|
|
|
|
struct _message_ref_list;
|
|
|
|
|
|
|
|
|
|
typedef struct _message {
|
|
|
|
|
PEP_msg_direction dir;
|
|
|
|
|
char *id; // UTF-8 string of message ID
|
|
|
|
|
char *shortmsg; // UTF-8 string of short message
|
|
|
|
|
char *longmsg; // UTF-8 string of long message
|
|
|
|
|
// (plain)
|
|
|
|
|
char *longmsg_formatted; // UTF-8 string of long message
|
|
|
|
|
// (formatted)
|
|
|
|
|
bloblist_t *attachments; // blobs with attachements
|
|
|
|
|
char *rawmsg_ref; // reference to raw message data
|
|
|
|
|
size_t rawmsg_size; // size of raw message data
|
|
|
|
|
timestamp *sent; // when the message is sent
|
|
|
|
|
timestamp *recv; // when the message is received
|
|
|
|
|
pEp_identity *from; // whom the message is from
|
|
|
|
|
identity_list *to; // whom the message is to
|
|
|
|
|
pEp_identity *recv_by; // via which identity the message
|
|
|
|
|
// is received
|
|
|
|
|
identity_list *cc; // whom a CC is being sent
|
|
|
|
|
identity_list *bcc; // whom a BCC is being sent
|
|
|
|
|
identity_list *reply_to; // where a reply should go to
|
|
|
|
|
stringlist_t *in_reply_to; // list of UTF-8 strings with
|
|
|
|
|
// MessageIDs of refering messages
|
|
|
|
|
struct _message *refering_msg_ref; // reference to refering message
|
|
|
|
|
stringlist_t *references; // list of UTF-8 strings with references
|
|
|
|
|
struct _message_ref_list *refered_by; // list of references to messages being
|
|
|
|
|
// refered
|
|
|
|
|
stringlist_t *keywords; // list of UTF-8 strings with keywords
|
|
|
|
|
char *comments; // UTF-8 string with comments
|
|
|
|
|
stringpair_list_t *opt_fields; // optional fields
|
|
|
|
|
PEP_enc_format enc_format; // format of encrypted data
|
|
|
|
|
} message;
|
|
|
|
|
|
|
|
|
|
protocol session {
|
|
|
|
|
method encrypt_message
|
|
|
|
|
doc="encrypt message in memory"
|
|
|
|
|
{
|
|
|
|
|
// parms
|
|
|
|
|
|
|
|
|
|
supply message src
|
|
|
|
|
doc="""
|
|
|
|
|
message to encrypt - usually in-only, but can be in-out for
|
|
|
|
|
unencrypted messages; in that case, we may attach the key and
|
|
|
|
|
decorate the message
|
|
|
|
|
""";
|
|
|
|
|
|
|
|
|
|
use hash_list extra doc="extra keys for encryption";
|
|
|
|
|
|
|
|
|
|
create message dst
|
|
|
|
|
doc="""
|
|
|
|
|
pointer to new encrypted message or #NV if no encryption could
|
|
|
|
|
take place
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
use encformat format doc="encrypted format";
|
|
|
|
|
|
|
|
|
|
// flags
|
|
|
|
|
|
|
|
|
|
flags {
|
|
|
|
|
flag default 0x0;
|
|
|
|
|
flag force_encryption 0x1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// exceptions
|
|
|
|
|
|
|
|
|
|
throws key_has_ambig_name
|
|
|
|
|
doc="at least one of the receipient keys has an ambiguous name";
|
|
|
|
|
|
|
|
|
|
throws unencrypted
|
|
|
|
|
doc="""
|
|
|
|
|
on demand or no recipients with usable key, is left unencrypted,
|
|
|
|
|
and key is attached to it
|
|
|
|
|
"""
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|