reorganize code a lot: create a lib-crypt with everything smime or gpg
[apps/madmutt.git] / lib-crypt / pgplib.h
diff --git a/lib-crypt/pgplib.h b/lib-crypt/pgplib.h
new file mode 100644 (file)
index 0000000..ace0e3d
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * Copyright notice from original mutt:
+ * Copyright (C) 1996,1997 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 1999-2000 Thomas Roessler <roessler@does-not-exist.org>
+ *
+ * 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.
+ */
+
+#include "crypt.h"
+
+typedef struct pgp_signature {
+  struct pgp_signature *next;
+  unsigned char sigtype;
+  unsigned long sid1;
+  unsigned long sid2;
+} pgp_sig_t;
+
+struct pgp_keyinfo {
+  char *keyid;
+  struct pgp_uid *address;
+  int flags;
+  short keylen;
+  time_t gen_time;
+  int numalg;
+  const char *algorithm;
+  struct pgp_keyinfo *parent;
+  struct pgp_signature *sigs;
+  struct pgp_keyinfo *next;
+
+  short fp_len;                 /* length of fingerprint.
+                                 * 20 for sha-1, 16 for md5.
+                                 */
+  unsigned char fingerprint[20];        /* large enough to hold SHA-1 and RIPEMD160
+                                           hashes (20 bytes), MD5 hashes just use the
+                                           first 16 bytes */
+};
+
+/* Note, that pgp_key_t is now pointer and declared in crypt.h */
+
+typedef struct pgp_uid {
+  char *addr;
+  short trust;
+  int flags;
+  struct pgp_keyinfo *parent;
+  struct pgp_uid *next;
+  struct pgp_signature *sigs;
+} pgp_uid_t;
+
+enum pgp_version {
+  PGP_V2,
+  PGP_V3,
+  PGP_GPG,
+  PGP_UNKNOWN
+};
+
+/* prototypes */
+
+const char *pgp_pkalgbytype (unsigned char);
+
+pgp_key_t pgp_remove_key (pgp_key_t *, pgp_key_t);
+pgp_uid_t *pgp_copy_uids (pgp_uid_t *, pgp_key_t);
+
+short pgp_canencrypt (unsigned char);
+short pgp_cansign (unsigned char);
+short pgp_get_abilities (unsigned char);
+
+void pgp_free_key (pgp_key_t * kpp);
+
+#define pgp_new_keyinfo() xmalloc(sizeof *((pgp_key_t)0))