Changes by Jose and Tommy.
[gpgme.git] / gpgme / key.h
1 /* key.h 
2  *      Copyright (C) 2000 Werner Koch (dd9jn)
3  *      Copyright (C) 2001 g10 Code GmbH
4  *
5  * This file is part of GPGME.
6  *
7  * GPGME is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * GPGME is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
20  */
21
22 #ifndef KEY_H
23 #define KEY_H
24
25 #include <time.h>
26 #include "types.h"
27 #include "context.h"
28
29 struct subkey_s {
30     struct subkey_s *next;
31     unsigned int secret:1;
32     struct {
33         unsigned int revoked:1 ;
34         unsigned int expired:1 ;
35         unsigned int disabled:1 ;
36         unsigned int invalid:1 ;
37         unsigned int can_encrypt:1;
38         unsigned int can_sign:1;
39         unsigned int can_certify:1;
40     } flags;
41     unsigned int key_algo;
42     unsigned int key_len;
43     char keyid[16+1]; 
44     char *fingerprint; /* malloced hex digits */
45     time_t timestamp; /* -1 for invalid, 0 for not available */
46 };
47
48 struct gpgme_key_s {
49     struct {
50         unsigned int revoked:1 ;
51         unsigned int expired:1 ;
52         unsigned int disabled:1 ;
53         unsigned int invalid:1 ;
54         unsigned int can_encrypt:1;
55         unsigned int can_sign:1;
56         unsigned int can_certify:1;
57     } gloflags; 
58     unsigned int ref_count;
59     unsigned int secret:1;
60     struct subkey_s   keys; 
61     struct user_id_s *uids;
62 };
63
64 void _gpgme_key_cache_init (void);
65 void _gpgme_key_cache_add (GpgmeKey key);
66 GpgmeKey _gpgme_key_cache_get (const char *fpr);
67
68
69 struct subkey_s *_gpgme_key_add_subkey (GpgmeKey key);
70 struct subkey_s *_gpgme_key_add_secret_subkey (GpgmeKey key);
71 GpgmeError _gpgme_key_append_name ( GpgmeKey key, const char *s );
72
73
74
75 #endif /* KEY_H */
76
77
78
79
80