Minor GUI fixes.
[gpgol.git] / src / common.h
index 86237bf..fbcc53b 100644 (file)
@@ -1,6 +1,6 @@
 /* common.h - Common declarations for GpgOL
  *     Copyright (C) 2004 Timo Schulz
- *     Copyright (C) 2005, 2006, 2007 g10 Code GmbH
+ *     Copyright (C) 2005, 2006, 2007, 2008 g10 Code GmbH
  *
  * This file is part of GpgOL.
  *
  * 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 Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
+
 #ifndef GPGOL_COMMON_H
 #define GPGOL_COMMON_H
 
@@ -34,6 +33,10 @@ extern "C" {
 #endif
 #endif
 
+/* The Registry key used by GnuPg and closley related software.  */
+#define GNUPG_REGKEY  "Software\\GNU\\GnuPG"
+
+
 /* Identifiers for the protocol.  We use different one than those use
    by gpgme.  FIXME: We might want to define an unknown protocol to
    non-null and define such a value also in gpgme. */
@@ -102,16 +105,20 @@ extern
 #endif
 struct 
 {
+  int enable_debug;         /* Enable extra debug options.  Values
+                                larger than 1 increases the debug log
+                                verbosity.  */
+  int enable_smime;         /* Enable S/MIME support. */
   int passwd_ttl;            /* Time in seconds the passphrase is stored. */
+  protocol_t default_protocol;/* The default protocol. */
   int encrypt_default;       /* Encrypt by default. */
   int sign_default;          /* Sign by default. */
-  int save_decrypted_attach; /* Save decrypted attachments. */
-  int auto_sign_attach;             /* Sign all outgoing attachments. */
   int enc_format;            /* Encryption format for attachments. */
   char *default_key;         /* The key we want to always encrypt to. */
   int enable_default_key;    /* Enable the use of DEFAULT_KEY. */
   int preview_decrypt;       /* Decrypt in preview window. */
   int prefer_html;           /* Prefer html in html/text alternatives. */
+  int body_as_attachment;    /* Present encrypted message as attachment.  */
 
   /* The compatibility flags. */
   struct 
@@ -124,6 +131,17 @@ struct
     unsigned int auto_decrypt: 1;   /* Try to decrypt when clicked. */
     unsigned int no_attestation: 1; /* Don't create an attestation. */
   } compat; 
+
+  /* The SVN revision as stored in the registry.  */
+  int svn_revision; 
+
+  /* The SVN revision of the the binary used to install the forms.  */
+  int forms_revision;
+
+  /* Disable message processing until restart.  This is required to
+     implement message reverting as a perparation to remove GpgOL.  */
+  int disable_gpgol;
+
 } opt;
 
 
@@ -137,17 +155,52 @@ struct b64_state_s
 };
 typedef struct b64_state_s b64_state_t;
 
+/* Bit values used for extra log file verbosity.  Value 1 is reserved
+   to enable debug menu options.  */
+#define DBG_IOWORKER       (1<<1)
+#define DBG_IOWORKER_EXTRA (1<<2) 
+#define DBG_FILTER         (1<<3)
+#define DBG_FILTER_EXTRA   (1<<4) 
+#define DBG_MEMORY         (1<<5)
+#define DBG_COMMANDS       (1<<6)
+#define DBG_MIME_PARSER    (1<<7)
+#define DBG_MIME_DATA      (1<<8)
+
+/* Macros to used in conditionals to enable debug output.  */
+#define debug_commands    (opt.enable_debug & DBG_COMMANDS)
+
+
+/* Type and constants used with parse_tlv.  */
+struct tlvinfo_s
+{
+  int cls;            /* The class of the tag.  */             
+  int tag;            /* The tag.  */           
+  int is_cons;        /* True if it is a constructed object.  */
+  int is_ndef;        /* True if the object has an indefinite length.  */
+  size_t length;      /* The length of the value.  */
+  size_t nhdr;        /* The number of octets in the header (tag,length). */
+};
+typedef struct tlvinfo_s tlvinfo_t;
+#define MY_ASN_CLASS_UNIVERSAL   0
+#define MY_ASN_CLASS_APPLICATION 1
+#define MY_ASN_CLASS_CONTEXT     2
+#define MY_ASN_CLASS_PRIVATE     3
+#define MY_ASN_TAG_OBJECT_ID     6
+#define MY_ASN_TAG_SEQUENCE     16
+
 
 
 /*-- common.c --*/
 void set_global_hinstance (HINSTANCE hinst);
 void center_window (HWND childwnd, HWND style);
+HBITMAP get_system_check_bitmap (int checked);
 char *get_save_filename (HWND root, const char *srcname);
 char *utf8_to_wincp (const char *string);
 
-HRESULT w32_shgetfolderpath (HWND a, int b, HANDLE c, DWORD d, LPSTR e);
+const char *default_homedir (void);
+char *get_data_dir (void);
 
-size_t qp_decode (char *buffer, size_t length);
+size_t qp_decode (char *buffer, size_t length, int *r_slbrk);
 void b64_init (b64_state_t *state);
 size_t b64_decode (b64_state_t *state, char *buffer, size_t length);
 
@@ -156,6 +209,10 @@ size_t b64_decode (b64_state_t *state, char *buffer, size_t length);
 #define BOUNDARYSIZE 20
 char *generate_boundary (char *buffer);
 
+int gpgol_spawn_detached (const char *cmdline);
+
+int parse_tlv (char const **buffer, size_t *size, tlvinfo_t *ti);
+
 
 /*-- recipient-dialog.c --*/
 unsigned int recipient_dialog_box (gpgme_key_t **ret_rset);
@@ -172,7 +229,6 @@ const char *get_pubkey_algo_str (gpgme_pubkey_algo_t id);
 
 /*-- config-dialog.c --*/
 void config_dialog_box (HWND parent);
-int start_key_manager (void);
 int store_extension_value (const char *key, const char *val);
 int load_extension_value (const char *key, char **val);