Initialize the gmime for upstream
[platform/upstream/gmime.git] / gmime / gmime-signature.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*  GMime
3  *  Copyright (C) 2000-2012 Jeffrey Stedfast
4  *
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.
9  *
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.
14  *
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
18  *  02110-1301, USA.
19  */
20
21
22 #ifndef __GMIME_SIGNATURE_H__
23 #define __GMIME_SIGNATURE_H__
24
25 #include <gmime/gmime-certificate.h>
26
27 G_BEGIN_DECLS
28
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))
35
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))
42
43
44 typedef struct _GMimeSignature GMimeSignature;
45 typedef struct _GMimeSignatureClass GMimeSignatureClass;
46
47 typedef struct _GMimeSignatureList GMimeSignatureList;
48 typedef struct _GMimeSignatureListClass GMimeSignatureListClass;
49
50
51 /**
52  * GMimeSignatureStatus:
53  * @GMIME_SIGNATURE_STATUS_GOOD: Good signature.
54  * @GMIME_SIGNATURE_STATUS_ERROR: An error occurred.
55  * @GMIME_SIGNATURE_STATUS_BAD: Bad signature.
56  *
57  * A value representing the signature status for a particular
58  * #GMimeSignature.
59  **/
60 typedef enum {
61         GMIME_SIGNATURE_STATUS_GOOD,
62         GMIME_SIGNATURE_STATUS_ERROR,
63         GMIME_SIGNATURE_STATUS_BAD
64 } GMimeSignatureStatus;
65
66
67 /**
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.
75  *
76  * Possible errors that a #GMimeSignature could have.
77  **/
78 typedef enum {
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;
86
87
88 /**
89  * GMimeSignature:
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.
96  *
97  * An object containing useful information about a signature.
98  **/
99 struct _GMimeSignature {
100         GObject parent_object;
101         
102         GMimeSignatureStatus status;
103         GMimeSignatureError errors;
104         GMimeCertificate *cert;
105         time_t created;
106         time_t expires;
107 };
108
109 struct _GMimeSignatureClass {
110         GObjectClass parent_class;
111         
112 };
113
114
115 GType g_mime_signature_get_type (void);
116
117 GMimeSignature *g_mime_signature_new (void);
118
119 void g_mime_signature_set_certificate (GMimeSignature *sig, GMimeCertificate *cert);
120 GMimeCertificate *g_mime_signature_get_certificate (GMimeSignature *sig);
121
122 void g_mime_signature_set_status (GMimeSignature *sig, GMimeSignatureStatus status);
123 GMimeSignatureStatus g_mime_signature_get_status (GMimeSignature *sig);
124
125 void g_mime_signature_set_errors (GMimeSignature *sig, GMimeSignatureError errors);
126 GMimeSignatureError g_mime_signature_get_errors (GMimeSignature *sig);
127
128 void g_mime_signature_set_created (GMimeSignature *sig, time_t created);
129 time_t g_mime_signature_get_created (GMimeSignature *sig);
130
131 void g_mime_signature_set_expires (GMimeSignature *sig, time_t expires);
132 time_t g_mime_signature_get_expires (GMimeSignature *sig);
133
134
135 /**
136  * GMimeSignatureList:
137  * @parent_object: parent #GObject
138  * @array: An array of #GMimeSignature objects.
139  *
140  * A collection of #GMimeSignature objects.
141  **/
142 struct _GMimeSignatureList {
143         GObject parent_object;
144         GPtrArray *array;
145 };
146
147 struct _GMimeSignatureListClass {
148         GObjectClass parent_class;
149         
150 };
151
152
153 GType g_mime_signature_list_get_type (void);
154
155 GMimeSignatureList *g_mime_signature_list_new (void);
156
157 int g_mime_signature_list_length (GMimeSignatureList *list);
158
159 void g_mime_signature_list_clear (GMimeSignatureList *list);
160
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);
165
166 gboolean g_mime_signature_list_contains (GMimeSignatureList *list, GMimeSignature *sig);
167 int g_mime_signature_list_index_of (GMimeSignatureList *list, GMimeSignature *sig);
168
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);
171
172 G_END_DECLS
173
174 #endif /* __GMIME_SIGNATURE_H__ */