Rocco Rutte:
[apps/madmutt.git] / mutt_crypt.h
index bd3c8c5..182d52d 100644 (file)
@@ -1,20 +1,12 @@
 /*
+ * Copyright notice from original mutt:
  * Copyright (C) 2003 Werner Koch <wk@gnupg.org>
- * 
- *     This program is free software; you can redistribute it and/or modify
- *     it under the terms of the GNU General Public License as published by
- *     the Free Software Foundation; either version 2 of the License, or
- *     (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License
- *     along with this program; if not, write to the Free Software
- *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
- */ 
+ * Copyright (C) 2004 g10code GmbH
+ *
+ * This file is part of mutt-ng, see http://www.muttng.org/.
+ * It's licensed under the GNU General Public License,
+ * please see the file GPL in the top level source directory.
+ */
 
 /*
    Common definitions and prototypes for the crypt functions. They are
@@ -24,7 +16,7 @@
 #ifndef MUTT_CRYPT_H
 #define MUTT_CRYPT_H
 
-#include "mutt.h"        /* Need this to declare BODY, ADDRESS. STATE etc. */
+#include "mutt.h"               /* Need this to declare BODY, ADDRESS. STATE etc. */
 /* FIXME: They should be pointer to anonymous structures for better
    information hiding. */
 
 #define BADSIGN    (1 << 3)
 #define PARTSIGN   (1 << 4)
 #define SIGNOPAQUE (1 << 5)
-/* (1 << 6) is used by PGPKEY below. */
+#define KEYBLOCK   (1 << 6)     /* KEY too generic? */
+#define INLINE     (1 << 7)
 
-#define APPLICATION_PGP    (1 << 7) 
-#define APPLICATION_SMIME  (1 << 8)
+#define APPLICATION_PGP    (1 << 8)
+#define APPLICATION_SMIME  (1 << 9)
+
+#define PGP_TRADITIONAL_CHECKED (1 << 10)
 
 #define PGPENCRYPT  (APPLICATION_PGP | ENCRYPT)
 #define PGPSIGN     (APPLICATION_PGP | SIGN)
 #define PGPGOODSIGN (APPLICATION_PGP | GOODSIGN)
-#define PGPKEY      (APPLICATION_PGP | (1 << 6)) 
+#define PGPKEY      (APPLICATION_PGP | KEYBLOCK)
+#define PGPINLINE   (APPLICATION_PGP | INLINE)
 
 #define SMIMEENCRYPT  (APPLICATION_SMIME | ENCRYPT)
 #define SMIMESIGN     (APPLICATION_SMIME | SIGN)
    effectively as a conditional compile directive. It is set to false
    if no crypto backend is configures or to a bit vector denoting the
    configured backends. */
-#if defined(CRYPT_BACKEND_CLASSIC_PGP) && defined(CRYPT_BACKEND_CLASSIC_SMIME)
+#if (defined(CRYPT_BACKEND_CLASSIC_PGP) && defined(CRYPT_BACKEND_CLASSIC_SMIME)) || defined (CRYPT_BACKEND_GPGME)
 # define WithCrypto (APPLICATION_PGP | APPLICATION_SMIME)
 #elif defined(CRYPT_BACKEND_CLASSIC_PGP)
 # define WithCrypto  APPLICATION_PGP
 #elif defined(CRYPT_BACKEND_CLASSIC_SMIME)
 # define WithCrypto  APPLICATION_SMIME
-#elif defined(CRYPT_BACKEND_GPGME)
-# define WithCrypto  (APPLICATION_PGP | APPLICATION_SMIME)
 #else
 # define WithCrypto 0
 #endif
@@ -74,6 +68,7 @@
 
 #define KEYFLAG_CANSIGN                (1 <<  0)
 #define KEYFLAG_CANENCRYPT             (1 <<  1)
+#define KEYFLAG_ISX509                  (1 <<  2)
 #define KEYFLAG_SECRET                 (1 <<  7)
 #define KEYFLAG_EXPIRED                (1 <<  8)
 #define KEYFLAG_REVOKED                (1 <<  9)
@@ -88,8 +83,7 @@
 
 #define KEYFLAG_ABILITIES (KEYFLAG_CANSIGN|KEYFLAG_CANENCRYPT|KEYFLAG_PREFER_ENCRYPTION|KEYFLAG_PREFER_SIGNING)
 
-enum pgp_ring
-{
+enum pgp_ring {
   PGP_PUBRING,
   PGP_SECRING
 };
@@ -103,7 +97,7 @@ typedef struct pgp_keyinfo *pgp_key_t;
 
 /* Some prototypes -- old crypt.h. */
 
-int mutt_protect (HEADER *, HEADER *, char *);
+int mutt_protect (HEADER *, char *);
 
 int mutt_is_multipart_encrypted (BODY *);
 
@@ -122,22 +116,22 @@ void convert_to_7bit (BODY *);
 
 
 
-/*-- crypt.c --*/ 
+/*-- crypt.c --*/
 
-/* Print the current time. */ 
-void crypt_current_time(STATE *s, char *app_name);
+/* Print the current time. */
+void crypt_current_time (STATE * s, char *app_name);
 
 /* Check out the type of encryption used and set the cached status
    values if there are any. */
-int crypt_query (BODY *m);
+int crypt_query (BODY * m);
 
 /* Fixme: To be documented. */
-void crypt_extract_keys_from_messages (HEADER *h);
+void crypt_extract_keys_from_messages (HEADER * h);
 
 /* Do a quick check to make sure that we can find all of the
    encryption keys if the user has requested this service. 
    Return the list of keys in KEYLIST. */
-int crypt_get_keys (HEADER *msg, char **keylist);
+int crypt_get_keys (HEADER * msg, char **keylist);
 
 /* Forget a passphrase and display a message. */
 void crypt_forget_passphrase (void);
@@ -147,7 +141,7 @@ int crypt_valid_passphrase (int);
 
 /* Write the message body/part A described by state S to a the given
    TEMPFILE.  */
-int crypt_write_signed(BODY *a, STATE *s, const char *tempf);
+int crypt_write_signed (BODY * a, STATE * s, const char *tempf);
 
 
 
@@ -160,56 +154,62 @@ void crypt_invoke_message (int type);
 /* Silently forget about a passphrase. */
 void crypt_pgp_void_passphrase (void);
 
+int crypt_pgp_valid_passphrase (void);
+
+
 /* Decrypt a PGP/MIME message. */
-int crypt_pgp_decrypt_mime (FILE *a, FILE **b, BODY *c, BODY **d);
+int crypt_pgp_decrypt_mime (FILE * a, FILE ** b, BODY * c, BODY ** d);
 
 /* MIME handler for the application/pgp content-type. */
-void crypt_pgp_application_pgp_handler (BODY *m, STATE *s);
+void crypt_pgp_application_pgp_handler (BODY * m, STATE * s);
 
 /* MIME handler for an PGP/MIME encrypted message. */
-void crypt_pgp_encrypted_handler (BODY *a, STATE *s);
+void crypt_pgp_encrypted_handler (BODY * a, STATE * s);
 
 /* fixme: needs documentation. */
-void crypt_pgp_invoke_getkeys (ADDRESS *addr);
+void crypt_pgp_invoke_getkeys (ADDRESS * addr);
 
 /* Ask for a PGP key. */
 pgp_key_t crypt_pgp_ask_for_key (char *tag, char *whatfor,
                                  short abilities, pgp_ring_t keyring);
 
 /* Check for a traditional PGP message in body B. */
-int crypt_pgp_check_traditional (FILE *fp, BODY *b, int tagged_only);
+int crypt_pgp_check_traditional (FILE * fp, BODY * b, int tagged_only);
 
 /* fixme: needs documentation. */
-BODY *crypt_pgp_traditional_encryptsign (BODY *a, int flags, char *keylist);
+BODY *crypt_pgp_traditional_encryptsign (BODY * a, int flags, char *keylist);
 
 /* Release the PGP key KPP (note, that we pass a pointer to it). */
-void crypt_pgp_free_key (pgp_key_t *kpp);
+void crypt_pgp_free_key (pgp_key_t * kpp);
 
 /* Generate a PGP public key attachment. */
 BODY *crypt_pgp_make_key_attachment (char *tempf);
 
 /* This routine attempts to find the keyids of the recipients of a
    message.  It returns NULL if any of the keys can not be found.  */
-char *crypt_pgp_findkeys (ADDRESS *to, ADDRESS *cc, ADDRESS *bcc);
+char *crypt_pgp_findkeys (ADDRESS * to, ADDRESS * cc, ADDRESS * bcc);
 
 /* Create a new body with a PGP signed message from A. */
-BODY *crypt_pgp_sign_message (BODY *a);
+BODY *crypt_pgp_sign_message (BODY * a);
 
 /* Warning: A is no longer freed in this routine, you need to free it
    later.  This is necessary for $fcc_attach. */
-BODY *crypt_pgp_encrypt_message (BODY *a, char *keylist, int sign);
+BODY *crypt_pgp_encrypt_message (BODY * a, char *keylist, int sign);
 
 /* Invoke the PGP command to import a key. */
 void crypt_pgp_invoke_import (const char *fname);
 
+int crypt_pgp_send_menu (HEADER * msg, int *redraw);
+
 /* fixme: needs documentation */
-int crypt_pgp_verify_one (BODY *sigbdy, STATE *s, const char *tempf);
+int crypt_pgp_verify_one (BODY * sigbdy, STATE * s, const char *tempf);
 
 /* Access the keyID in K. */
 char *crypt_pgp_keyid (pgp_key_t k);
 
 /* fixme: needs documentation */
-void crypt_pgp_extract_keys_from_attachment_list (FILE *fp, int tag,BODY *top);
+void crypt_pgp_extract_keys_from_attachment_list (FILE * fp, int tag,
+                                                  BODY * top);
 
 
 
@@ -218,36 +218,41 @@ void crypt_pgp_extract_keys_from_attachment_list (FILE *fp, int tag,BODY *top);
 /* Silently forget about a passphrase. */
 void crypt_smime_void_passphrase (void);
 
+int crypt_smime_valid_passphrase (void);
+
 /* Decrypt an S/MIME message. */
-int crypt_smime_decrypt_mime (FILE *a, FILE **b, BODY *c, BODY **d);
+int crypt_smime_decrypt_mime (FILE * a, FILE ** b, BODY * c, BODY ** d);
 
 /* MIME handler for the application/smime content-type. */
-void crypt_smime_application_smime_handler (BODY *m, STATE *s);
+void crypt_smime_application_smime_handler (BODY * m, STATE * s);
 
 /* fixme: Needs documentation. */
-void crypt_smime_getkeys (ENVELOPE *env);
+void crypt_smime_getkeys (ENVELOPE * env);
 
 /* Check that the sender matches. */
-int crypt_smime_verify_sender(HEADER *h);
+int crypt_smime_verify_sender (HEADER * h);
 
 /* Ask for an SMIME key. */
 char *crypt_smime_ask_for_key (char *prompt, char *mailbox, short public);
 
 /* This routine attempts to find the keyids of the recipients of a
    message.  It returns NULL if any of the keys can not be found.  */
-char *crypt_smime_findkeys (ADDRESS *to, ADDRESS *cc, ADDRESS *bcc);
+char *crypt_smime_findkeys (ADDRESS * to, ADDRESS * cc, ADDRESS * bcc);
 
 /* fixme: Needs documentation. */
-BODY *crypt_smime_sign_message (BODY *a);
+BODY *crypt_smime_sign_message (BODY * a);
 
 /* fixme: needs documentation. */
-BODY *crypt_smime_build_smime_entity (BODY *a, char *certlist);
+BODY *crypt_smime_build_smime_entity (BODY * a, char *certlist);
 
 /* Add a certificate and update index file (externally). */
 void crypt_smime_invoke_import (char *infile, char *mailbox);
 
+int crypt_smime_send_menu (HEADER * msg, int *redraw);
+
 /* fixme: needs documentation */
-int crypt_smime_verify_one (BODY *sigbdy, STATE *s, const char *tempf);
+int crypt_smime_verify_one (BODY * sigbdy, STATE * s, const char *tempf);
 
+void crypt_init (void);
 
-#endif /*MUTT_CRYPT_H*/
+#endif /*MUTT_CRYPT_H */