unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
blob 0cea927c451edca10a236fef79d7a5438acb6b6e 3280 bytes (raw)
name: util/crypto.h 	 # note: path name is non-authoritative(*)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
 
#ifndef _CRYPTO_H
#define _CRYPTO_H

#include <stdbool.h>
#include "gmime-extra.h"
#include "notmuch.h"

typedef struct _notmuch_crypto {
    bool verify;
    notmuch_decryption_policy_t decrypt;
#if (GMIME_MAJOR_VERSION < 3)
    GMimeCryptoContext* gpgctx;
    GMimeCryptoContext* pkcs7ctx;
    const char *gpgpath;
#endif
} _notmuch_crypto_t;

GMimeObject *
_notmuch_crypto_decrypt (bool *attempted,
			 notmuch_decryption_policy_t decrypt,
			 notmuch_message_t *message,
			 GMimeCryptoContext* crypto_ctx,
			 GMimeMultipartEncrypted *part,
			 GMimeDecryptResult **decrypt_result,
			 GError **err);

#if (GMIME_MAJOR_VERSION < 3)
notmuch_status_t
_notmuch_crypto_get_gmime_ctx_for_protocol (_notmuch_crypto_t *crypto,
					    const char *protocol,
					    GMimeCryptoContext **ctx);
#endif

void
_notmuch_crypto_cleanup (_notmuch_crypto_t *crypto);



/* The user probably wants to know if the entire message was in the
 * clear.  When replying, the MUA probably wants to know whether there
 * was any part decrypted in the message.  And when displaying to the
 * user, we probably only want to display "encrypted message" if the
 * entire message was covered by encryption. */
typedef enum {
    NOTMUCH_MESSAGE_DECRYPTED_NONE = 0,
    NOTMUCH_MESSAGE_DECRYPTED_PARTIAL,
    NOTMUCH_MESSAGE_DECRYPTED_FULL,
} _notmuch_message_decryption_status_t;

/* description of the cryptographic state of a given message overall;
 * for use by simple user agents.
 */
typedef struct _notmuch_message_crypto {
    /* encryption status: partial, full, none */
    _notmuch_message_decryption_status_t decryption_status;
    /* FIXME: can we show what key(s) a fully-encrypted message was
     * encrypted to? This data is not necessarily cryptographically
     * reliable; even when we decrypt, we might not know which public
     * key was used (e.g. if we're using a session key). */

    /* signature status of the whole message (either the whole message
     * is signed, or it is not) -- this means that partially-signed
     * messages will get no signature status. */
    GMimeSignatureList * sig_list;
    /* if part of the message was signed, and the MUA is clever, it
     * can determine on its own exactly which part and try to make
     * more sense of it. */

    /* mark this flag once we encounter a payload (i.e. something that
     * is not part of the cryptographic envelope) */
    bool payload_encountered;

    /* the value of any "Subject:" header in the cryptographic payload
     * (the top level part within the crypto envelope), converted to
     * UTF-8 */
    char * payload_subject;

    /* if both signed and encrypted, was the signature encrypted? */
    bool signature_encrypted;
} _notmuch_message_crypto_t;

_notmuch_message_crypto_t *
_notmuch_message_crypto_new (void *ctx);

void
_notmuch_message_crypto_cleanup (_notmuch_message_crypto_t *msg_crypto);

notmuch_status_t
_notmuch_message_crypto_set_sig_list (_notmuch_message_crypto_t *msg_crypto, GMimeSignatureList *sigs);

notmuch_status_t
_notmuch_message_crypto_successful_decryption (_notmuch_message_crypto_t *msg_crypto);

notmuch_status_t
_notmuch_message_crypto_potential_payload (_notmuch_message_crypto_t *msg_crypto, GMimeObject *payload, GMimeObject *parent, int childnum);

#endif

debug log:

solving 0cea927c ...
found 0cea927c in https://yhetil.org/notmuch/20180511055544.13676-10-dkg@fifthhorseman.net/
found 02c8793a in https://yhetil.org/notmuch/20180511055544.13676-5-dkg@fifthhorseman.net/
found c384601c in https://yhetil.org/notmuch.git/
preparing index
index prepared:
100644 c384601c11d35772a727c55996f4c3180076481e	util/crypto.h

applying [1/2] https://yhetil.org/notmuch/20180511055544.13676-5-dkg@fifthhorseman.net/
diff --git a/util/crypto.h b/util/crypto.h
index c384601c..02c8793a 100644


applying [2/2] https://yhetil.org/notmuch/20180511055544.13676-10-dkg@fifthhorseman.net/
diff --git a/util/crypto.h b/util/crypto.h
index 02c8793a..0cea927c 100644

Checking patch util/crypto.h...
Applied patch util/crypto.h cleanly.
Checking patch util/crypto.h...
Applied patch util/crypto.h cleanly.

index at:
100644 0cea927c451edca10a236fef79d7a5438acb6b6e	util/crypto.h

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).