1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3 * Copyright (C) 2000-2012 Jeffrey Stedfast
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public License
7 * as published by the Free Software Foundation; either version 2.1
8 * of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free
17 * Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
22 #ifndef __GMIME_SIGNATURE_H__
23 #define __GMIME_SIGNATURE_H__
25 #include <gmime/gmime-certificate.h>
29 #define GMIME_TYPE_SIGNATURE (g_mime_signature_get_type ())
30 #define GMIME_SIGNATURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GMIME_TYPE_SIGNATURE, GMimeSignature))
31 #define GMIME_SIGNATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GMIME_TYPE_SIGNATURE, GMimeSignatureClass))
32 #define GMIME_IS_SIGNATURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GMIME_TYPE_SIGNATURE))
33 #define GMIME_IS_SIGNATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GMIME_TYPE_SIGNATURE))
34 #define GMIME_SIGNATURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GMIME_TYPE_SIGNATURE, GMimeSignatureClass))
36 #define GMIME_TYPE_SIGNATURE_LIST (g_mime_signature_list_get_type ())
37 #define GMIME_SIGNATURE_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GMIME_TYPE_SIGNATURE_LIST, GMimeSignatureList))
38 #define GMIME_SIGNATURE_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GMIME_TYPE_SIGNATURE_LIST, GMimeSignatureListClass))
39 #define GMIME_IS_SIGNATURE_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GMIME_TYPE_SIGNATURE_LIST))
40 #define GMIME_IS_SIGNATURE_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GMIME_TYPE_SIGNATURE_LIST))
41 #define GMIME_SIGNATURE_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GMIME_TYPE_SIGNATURE_LIST, GMimeSignatureListClass))
44 typedef struct _GMimeSignature GMimeSignature;
45 typedef struct _GMimeSignatureClass GMimeSignatureClass;
47 typedef struct _GMimeSignatureList GMimeSignatureList;
48 typedef struct _GMimeSignatureListClass GMimeSignatureListClass;
52 * GMimeSignatureStatus:
53 * @GMIME_SIGNATURE_STATUS_GOOD: Good signature.
54 * @GMIME_SIGNATURE_STATUS_ERROR: An error occurred.
55 * @GMIME_SIGNATURE_STATUS_BAD: Bad signature.
57 * A value representing the signature status for a particular
61 GMIME_SIGNATURE_STATUS_GOOD,
62 GMIME_SIGNATURE_STATUS_ERROR,
63 GMIME_SIGNATURE_STATUS_BAD
64 } GMimeSignatureStatus;
68 * GMimeSignatureError:
69 * @GMIME_SIGNATURE_ERROR_NONE: No error.
70 * @GMIME_SIGNATURE_ERROR_EXPSIG: Expired signature.
71 * @GMIME_SIGNATURE_ERROR_NO_PUBKEY: No public key found.
72 * @GMIME_SIGNATURE_ERROR_EXPKEYSIG: Expired signature key.
73 * @GMIME_SIGNATURE_ERROR_REVKEYSIG: Revoked signature key.
74 * @GMIME_SIGNATURE_ERROR_UNSUPP_ALGO: Unsupported algorithm.
76 * Possible errors that a #GMimeSignature could have.
79 GMIME_SIGNATURE_ERROR_NONE = 0,
80 GMIME_SIGNATURE_ERROR_EXPSIG = (1 << 0), /* expired signature */
81 GMIME_SIGNATURE_ERROR_NO_PUBKEY = (1 << 1), /* no public key */
82 GMIME_SIGNATURE_ERROR_EXPKEYSIG = (1 << 2), /* expired key */
83 GMIME_SIGNATURE_ERROR_REVKEYSIG = (1 << 3), /* revoked key */
84 GMIME_SIGNATURE_ERROR_UNSUPP_ALGO = (1 << 4) /* unsupported algorithm */
85 } GMimeSignatureError;
90 * @parent_object: parent #GObject
91 * @status: A #GMimeSignatureStatus.
92 * @errors: A bitfield of #GMimeSignatureError values.
93 * @cert: The #GMimeCertificate used in the signature.
94 * @created: The creation date of the signature.
95 * @expires: The expiration date of the signature.
97 * An object containing useful information about a signature.
99 struct _GMimeSignature {
100 GObject parent_object;
102 GMimeSignatureStatus status;
103 GMimeSignatureError errors;
104 GMimeCertificate *cert;
109 struct _GMimeSignatureClass {
110 GObjectClass parent_class;
115 GType g_mime_signature_get_type (void);
117 GMimeSignature *g_mime_signature_new (void);
119 void g_mime_signature_set_certificate (GMimeSignature *sig, GMimeCertificate *cert);
120 GMimeCertificate *g_mime_signature_get_certificate (GMimeSignature *sig);
122 void g_mime_signature_set_status (GMimeSignature *sig, GMimeSignatureStatus status);
123 GMimeSignatureStatus g_mime_signature_get_status (GMimeSignature *sig);
125 void g_mime_signature_set_errors (GMimeSignature *sig, GMimeSignatureError errors);
126 GMimeSignatureError g_mime_signature_get_errors (GMimeSignature *sig);
128 void g_mime_signature_set_created (GMimeSignature *sig, time_t created);
129 time_t g_mime_signature_get_created (GMimeSignature *sig);
131 void g_mime_signature_set_expires (GMimeSignature *sig, time_t expires);
132 time_t g_mime_signature_get_expires (GMimeSignature *sig);
136 * GMimeSignatureList:
137 * @parent_object: parent #GObject
138 * @array: An array of #GMimeSignature objects.
140 * A collection of #GMimeSignature objects.
142 struct _GMimeSignatureList {
143 GObject parent_object;
147 struct _GMimeSignatureListClass {
148 GObjectClass parent_class;
153 GType g_mime_signature_list_get_type (void);
155 GMimeSignatureList *g_mime_signature_list_new (void);
157 int g_mime_signature_list_length (GMimeSignatureList *list);
159 void g_mime_signature_list_clear (GMimeSignatureList *list);
161 int g_mime_signature_list_add (GMimeSignatureList *list, GMimeSignature *sig);
162 void g_mime_signature_list_insert (GMimeSignatureList *list, int index, GMimeSignature *sig);
163 gboolean g_mime_signature_list_remove (GMimeSignatureList *list, GMimeSignature *sig);
164 gboolean g_mime_signature_list_remove_at (GMimeSignatureList *list, int index);
166 gboolean g_mime_signature_list_contains (GMimeSignatureList *list, GMimeSignature *sig);
167 int g_mime_signature_list_index_of (GMimeSignatureList *list, GMimeSignature *sig);
169 GMimeSignature *g_mime_signature_list_get_signature (GMimeSignatureList *list, int index);
170 void g_mime_signature_list_set_signature (GMimeSignatureList *list, int index, GMimeSignature *sig);
174 #endif /* __GMIME_SIGNATURE_H__ */