2 * Copyright notice from original mutt:
3 * Copyright (C) 2003 Werner Koch <wk@gnupg.org>
4 * Copyright (C) 2004 g10code GmbH
6 * This file is part of mutt-ng, see http://www.muttng.org/.
7 * It's licensed under the GNU General Public License,
8 * please see the file GPL in the top level source directory.
12 Common definitions and prototypes for the crypt functions. They are
13 all defined in crypt.c and cryptglue.c
19 #include <lib-mime/mime.h>
22 #define ENCRYPT (1 << 0)
24 #define GOODSIGN (1 << 2)
25 #define BADSIGN (1 << 3)
26 #define PARTSIGN (1 << 4)
27 #define SIGNOPAQUE (1 << 5)
28 #define KEYBLOCK (1 << 6) /* KEY too generic? */
29 #define INLINE (1 << 7)
31 #define APPLICATION_PGP (1 << 8)
32 #define APPLICATION_SMIME (1 << 9)
34 #define PGP_TRADITIONAL_CHECKED (1 << 10)
36 #define PGPENCRYPT (APPLICATION_PGP | ENCRYPT)
37 #define PGPSIGN (APPLICATION_PGP | SIGN)
38 #define PGPKEY (APPLICATION_PGP | KEYBLOCK)
39 #define PGPINLINE (APPLICATION_PGP | INLINE)
41 #define SMIMEENCRYPT (APPLICATION_SMIME | ENCRYPT)
42 #define SMIMESIGN (APPLICATION_SMIME | SIGN)
43 #define SMIMEOPAQUE (APPLICATION_SMIME | SIGNOPAQUE)
45 #define KEYFLAG_CANSIGN (1 << 0)
46 #define KEYFLAG_CANENCRYPT (1 << 1)
47 #define KEYFLAG_ISX509 (1 << 2)
48 #define KEYFLAG_SECRET (1 << 7)
49 #define KEYFLAG_EXPIRED (1 << 8)
50 #define KEYFLAG_REVOKED (1 << 9)
51 #define KEYFLAG_DISABLED (1 << 10)
52 #define KEYFLAG_SUBKEY (1 << 11)
53 #define KEYFLAG_CRITICAL (1 << 12)
54 #define KEYFLAG_PREFER_ENCRYPTION (1 << 13)
55 #define KEYFLAG_PREFER_SIGNING (1 << 14)
57 #define KEYFLAG_CANTUSE (KEYFLAG_DISABLED|KEYFLAG_REVOKED|KEYFLAG_EXPIRED)
58 #define KEYFLAG_RESTRICTIONS (KEYFLAG_CANTUSE|KEYFLAG_CRITICAL)
60 #define KEYFLAG_ABILITIES (KEYFLAG_CANSIGN|KEYFLAG_CANENCRYPT|KEYFLAG_PREFER_ENCRYPTION|KEYFLAG_PREFER_SIGNING)
62 int crypt_send_menu(HEADER *msg, int *redraw, int smime);
63 int mutt_protect (HEADER *, char *);
64 int mutt_signed_handler (BODY *, STATE *);
65 int mutt_parse_crypt_hdr (char *, int);
67 /* Check out the type of encryption used and set the cached status
68 values if there are any. */
69 int crypt_query (BODY * m);
71 /* Fixme: To be documented. */
72 void crypt_extract_keys_from_messages (HEADER * h);
74 /* Do a quick check to make sure that we can find all of the
75 encryption keys if the user has requested this service.
76 Return the list of keys in KEYLIST. */
77 int crypt_get_keys (HEADER * msg, char **keylist);
80 /* Show a message that a backend will be invoked. */
81 void crypt_invoke_message (int type);
83 /* Decrypt a PGP/MIME message. */
84 int crypt_pgp_decrypt_mime (FILE * a, FILE ** b, BODY * c, BODY ** d);
86 /* MIME handler for the application/pgp content-type. */
87 int crypt_pgp_application_pgp_handler (BODY * m, STATE * s);
89 /* MIME handler for an PGP/MIME encrypted message. */
90 int crypt_pgp_encrypted_handler (BODY * a, STATE * s);
92 /* Check for a traditional PGP message in body B. */
93 int crypt_pgp_check_traditional (FILE * fp, BODY * b, int tagged_only);
95 /* Generate a PGP public key attachment. */
96 BODY *crypt_pgp_make_key_attachment (char *tempf);
98 /* fixme: needs documentation */
99 void crypt_pgp_extract_keys_from_attachment_list (FILE * fp, int tag,
103 /* Decrypt an S/MIME message. */
104 int crypt_smime_decrypt_mime (FILE * a, FILE ** b, BODY * c, BODY ** d);
106 /* MIME handler for the application/smime content-type. */
107 int crypt_smime_application_smime_handler (BODY * m, STATE * s);
109 /* Check that the sender matches. */
110 int crypt_smime_verify_sender (HEADER * h);
112 #endif /*MUTT_CRYPT_H */