1 |
twoaday |
2 |
/* wptKeyEdit.h |
2 |
|
|
* Copyright (C) 2003, 2004 Timo Schulz |
3 |
|
|
* |
4 |
|
|
* This file is part of WinPT. |
5 |
|
|
* |
6 |
|
|
* WinPT is free software; you can redistribute it and/or |
7 |
|
|
* modify it under the terms of the GNU General Public License |
8 |
|
|
* as published by the Free Software Foundation; either version 2 |
9 |
|
|
* of the License, or (at your option) any later version. |
10 |
|
|
* |
11 |
|
|
* WinPT is distributed in the hope that it will be useful, |
12 |
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 |
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 |
|
|
* General Public License for more details. |
15 |
|
|
* |
16 |
|
|
* You should have received a copy of the GNU General Public License |
17 |
|
|
* along with WinPT; if not, write to the Free Software Foundation, |
18 |
|
|
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
19 |
|
|
*/ |
20 |
|
|
|
21 |
|
|
#ifndef WPT_KEY_EDIT_H |
22 |
|
|
#define WPT_KEY_EDIT_H |
23 |
|
|
|
24 |
twoaday |
23 |
/* IDs for all possible gpg edit key commands. */ |
25 |
|
|
enum { |
26 |
|
|
GPG_EDITKEY_SIGN = 1, |
27 |
|
|
GPG_EDITKEY_LSIGN = 2, |
28 |
|
|
GPG_EDITKEY_NRSIGN = 19, |
29 |
|
|
GPG_EDITKEY_NRLSIGN = 22, |
30 |
|
|
GPG_EDITKEY_TSIGN = 20, |
31 |
|
|
GPG_EDITKEY_TRUST = 3, |
32 |
|
|
GPG_EDITKEY_ADDUID = 4, |
33 |
|
|
GPG_EDITKEY_DELUID = 5, |
34 |
|
|
GPG_EDITKEY_DELKEY = 6, |
35 |
|
|
GPG_EDITKEY_ADDKEY = 7, |
36 |
|
|
GPG_EDITKEY_PASSWD = 8, |
37 |
|
|
GPG_EDITKEY_PRIMARY = 9, |
38 |
|
|
GPG_EDITKEY_EXPIRE = 10, |
39 |
|
|
GPG_EDITKEY_REVSIG = 11, |
40 |
|
|
GPG_EDITKEY_REVKEY = 12, |
41 |
|
|
GPG_EDITKEY_REVOKE = 13, /* revoke the whole key */ |
42 |
|
|
GPG_EDITKEY_ADDREV = 14, |
43 |
|
|
GPG_EDITKEY_ADDPHOTO= 15, |
44 |
|
|
GPG_EDITKEY_ENABLE = 16, |
45 |
|
|
GPG_EDITKEY_DISABLE = 17, |
46 |
|
|
GPG_EDITKEY_SETPREF = 18, |
47 |
|
|
GPG_EDITKEY_DELSIG = 21, |
48 |
twoaday |
25 |
GPG_EDITKEY_KEYSERV = 23, |
49 |
|
|
GPG_EDITKEY_REVUID = 24 |
50 |
twoaday |
23 |
}; |
51 |
|
|
|
52 |
|
|
/* Reasons for revocations. */ |
53 |
|
|
enum { |
54 |
|
|
GPG_REVOKE_INSECURE = 1, |
55 |
|
|
GPG_REVOKE_SUPERSEDED = 2, |
56 |
|
|
GPG_REVOKE_NOUSED = 3 |
57 |
|
|
}; |
58 |
|
|
|
59 |
twoaday |
24 |
|
60 |
|
|
/* Possible results for the operation. */ |
61 |
|
|
enum { |
62 |
twoaday |
25 |
GPG_EDITRES_ALREADY_SIGNED = 1, |
63 |
|
|
GPG_EDITRES_BAD_PASSPHRASE = 2 |
64 |
twoaday |
24 |
}; |
65 |
|
|
|
66 |
twoaday |
23 |
/* Contain information about designated revokers. */ |
67 |
|
|
struct gpg_desig_rev_s { |
68 |
|
|
struct gpg_desig_rev_s *next; |
69 |
|
|
gpgme_pubkey_algo_t pubkey_algo; |
70 |
|
|
char fpr[41]; |
71 |
|
|
}; |
72 |
|
|
typedef struct gpg_desig_rev_s *gpg_desig_rev_t; |
73 |
|
|
|
74 |
|
|
/* Context to hold all user-ID information. */ |
75 |
|
|
struct gpg_user_id_info_s { |
76 |
|
|
struct gpg_user_id_info_s *next; |
77 |
|
|
struct { |
78 |
|
|
unsigned int revoked:1; |
79 |
|
|
unsigned int invalid:1; |
80 |
|
|
unsigned int primary:1; |
81 |
|
|
unsigned int mdc:1; |
82 |
|
|
unsigned int no_ks_modify:1; |
83 |
|
|
} flags; |
84 |
|
|
int validity; |
85 |
|
|
char *name; |
86 |
|
|
char *email; |
87 |
|
|
char *prefs; |
88 |
|
|
int index; |
89 |
|
|
}; |
90 |
|
|
typedef struct gpg_user_id_info_s *gpg_uid_info_t; |
91 |
|
|
|
92 |
|
|
/* Class to abstract the gpg edit key interface. */ |
93 |
|
|
class GpgKeyEdit { |
94 |
|
|
private: |
95 |
|
|
gpgme_key_t key; |
96 |
|
|
gpgme_ctx_t ctx; |
97 |
twoaday |
24 |
int resval; |
98 |
twoaday |
28 |
int type; |
99 |
twoaday |
23 |
|
100 |
|
|
public: |
101 |
twoaday |
28 |
|
102 |
twoaday |
23 |
int cnt; |
103 |
|
|
int cmd_sent; |
104 |
|
|
const char *pass; |
105 |
|
|
const char *new_pass; |
106 |
|
|
int sig_index; |
107 |
|
|
int key_index; |
108 |
|
|
int uid_index; |
109 |
|
|
const char *url; |
110 |
|
|
int trust_id; |
111 |
|
|
char *name, *cmt, *email; |
112 |
|
|
const char *exp_date; /* XXX */ |
113 |
|
|
gpgme_pubkey_algo_t pubkey_algo; |
114 |
|
|
int pubkey_size; |
115 |
|
|
int valid; /* XXX */ |
116 |
|
|
int flags; |
117 |
|
|
int sig_class; |
118 |
|
|
int reason; |
119 |
|
|
|
120 |
|
|
public: |
121 |
|
|
GpgKeyEdit (gpgme_key_t key); |
122 |
|
|
GpgKeyEdit (const char *keyid); |
123 |
|
|
~GpgKeyEdit (void); |
124 |
|
|
|
125 |
|
|
bool isValid (void); |
126 |
|
|
gpgme_key_t getKey (void); |
127 |
twoaday |
24 |
void reset (void); |
128 |
twoaday |
23 |
|
129 |
|
|
void setPassphrase (const char *pass); |
130 |
|
|
void setKey (gpgme_key_t key); |
131 |
|
|
void setKeyID (const char *keyid); |
132 |
|
|
void setLocalUser (gpgme_key_t locusr); |
133 |
|
|
void setCallback (gpgme_progress_cb_t cb, void *cb_value); |
134 |
twoaday |
28 |
int getType (void); |
135 |
twoaday |
26 |
void setResult (int val); |
136 |
|
|
int getResult (void); |
137 |
twoaday |
24 |
|
138 |
twoaday |
23 |
gpgme_error_t signKey (int mode, int sig_class, const char *exp_date); |
139 |
|
|
gpgme_error_t setTrust (gpgme_validity_t trust); |
140 |
twoaday |
25 |
gpgme_error_t addUserid (const char *name, const char *cmt, |
141 |
|
|
const char *email); |
142 |
twoaday |
23 |
gpgme_error_t delUserid (int index); |
143 |
|
|
gpgme_error_t delKey (int index); |
144 |
twoaday |
25 |
gpgme_error_t addSubkey (gpgme_pubkey_algo_t pubkey_algo, |
145 |
|
|
unsigned int nbits, long valid); |
146 |
twoaday |
23 |
gpgme_error_t changePassphrase (const char *new_pass, int allow_empty); |
147 |
|
|
gpgme_error_t setPrimaryUserid (int uid_indx); |
148 |
twoaday |
25 |
gpgme_error_t setKeyExpireDate (int key_index, long exp_timestamp, |
149 |
|
|
bool exp_days); |
150 |
|
|
gpgme_error_t revokeUserid (int uid_indx); |
151 |
twoaday |
23 |
gpgme_error_t revokeSignature (int uid_index, int sig_index); |
152 |
|
|
gpgme_error_t revokeSubkey (int key_index, int reason, const char *cmt); |
153 |
|
|
gpgme_error_t addDesignatedRevoker (const char *uid); |
154 |
|
|
gpgme_error_t addPhotoid (const char *jpg_file); |
155 |
|
|
gpgme_error_t enable (void); |
156 |
|
|
gpgme_error_t disable (void); |
157 |
|
|
gpgme_error_t setUseridPreferences (int uid_index, const char *new_prefs); |
158 |
twoaday |
24 |
gpgme_error_t delUseridSignature (int uid_index, int sig_index); |
159 |
twoaday |
23 |
gpgme_error_t setPreferredKeyserver (int uid_index, const char *url); |
160 |
|
|
|
161 |
|
|
gpgme_error_t getUseridInfo (gpg_uid_info_t *r_uinf); |
162 |
|
|
|
163 |
|
|
gpgme_error_t getDesignatedRevoker (gpg_desig_rev_t *r_rev); |
164 |
|
|
}; |
165 |
|
|
|
166 |
twoaday |
2 |
BOOL keyedit_add_subkey (winpt_key_t k, HWND dlg, listview_ctrl_t lv); |
167 |
|
|
BOOL keyedit_add_userid (winpt_key_t k, HWND dlg, listview_ctrl_t lv); |
168 |
|
|
BOOL keyedit_add_revoker (winpt_key_t k, HWND dlg); |
169 |
|
|
BOOL keyedit_add_photo (winpt_key_t k, HWND dlg ); |
170 |
|
|
BOOL keyedit_change_passwd (winpt_key_t k, HWND dlg); |
171 |
twoaday |
22 |
BOOL keyedit_set_pref_keyserver (winpt_key_t k, HWND dlg); |
172 |
twoaday |
2 |
|
173 |
twoaday |
23 |
gpgme_error_t gpg_editkey (gpgme_ctx_t ctx, gpgme_key_t key, GpgKeyEdit *ek); |
174 |
|
|
void gpg_uid_info_release (gpg_uid_info_t inf); |
175 |
|
|
void gpg_desig_rev_release (gpg_desig_rev_t rev); |
176 |
|
|
|
177 |
|
|
#endif /*WPT_KEY_EDIT_H*/ |