1 |
werner |
37 |
/* 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 |
|
|
/* IDs for all possible gpg edit key commands. */ |
25 |
|
|
enum gpg_editkey_t { |
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 |
|
|
GPG_EDITKEY_KEYSERV = 23, |
49 |
twoaday |
119 |
GPG_EDITKEY_REVUID = 24, |
50 |
twoaday |
200 |
GPG_EDITKEY_CLEAN = 25, |
51 |
twoaday |
206 |
GPG_EDITKEY_NOTATION= 26, |
52 |
|
|
GPG_EDITKEY_MINIMIZE= 27 |
53 |
werner |
37 |
}; |
54 |
|
|
|
55 |
|
|
/* Reasons for revocations. */ |
56 |
|
|
enum gpg_revoke_t { |
57 |
|
|
GPG_REVOKE_INSECURE = 1, |
58 |
|
|
GPG_REVOKE_SUPERSEDED = 2, |
59 |
|
|
GPG_REVOKE_NOUSED = 3 |
60 |
|
|
}; |
61 |
|
|
|
62 |
|
|
/* Contain information about designated revokers. */ |
63 |
|
|
struct gpg_desig_rev_s { |
64 |
|
|
struct gpg_desig_rev_s *next; |
65 |
|
|
gpgme_pubkey_algo_t pubkey_algo; |
66 |
|
|
char fpr[41]; |
67 |
|
|
}; |
68 |
|
|
typedef struct gpg_desig_rev_s *gpg_desig_rev_t; |
69 |
|
|
|
70 |
|
|
/* Context to hold all user-ID information. */ |
71 |
|
|
struct gpg_user_id_info_s { |
72 |
|
|
struct gpg_user_id_info_s *next; |
73 |
|
|
struct { |
74 |
|
|
unsigned int revoked:1; |
75 |
|
|
unsigned int invalid:1; |
76 |
|
|
unsigned int primary:1; |
77 |
|
|
unsigned int mdc:1; |
78 |
|
|
unsigned int no_ks_modify:1; |
79 |
|
|
} flags; |
80 |
|
|
int validity; |
81 |
|
|
char *name; |
82 |
|
|
char *email; |
83 |
|
|
char *prefs; |
84 |
|
|
int index; |
85 |
|
|
}; |
86 |
|
|
typedef struct gpg_user_id_info_s *gpg_uid_info_t; |
87 |
|
|
|
88 |
|
|
/* Class to abstract the gpg edit key interface. */ |
89 |
|
|
class GpgKeyEdit { |
90 |
|
|
private: |
91 |
|
|
gpgme_key_t key; |
92 |
|
|
gpgme_ctx_t ctx; |
93 |
|
|
int resval; |
94 |
|
|
int type; |
95 |
|
|
|
96 |
twoaday |
176 |
bool key_has_passwd; |
97 |
|
|
|
98 |
twoaday |
170 |
int sig_index; |
99 |
|
|
int key_index; |
100 |
|
|
int uid_index; |
101 |
|
|
|
102 |
twoaday |
176 |
int valid; |
103 |
|
|
|
104 |
werner |
37 |
public: |
105 |
|
|
int cnt; |
106 |
|
|
int cmd_sent; |
107 |
|
|
const char *pass; |
108 |
|
|
const char *new_pass; |
109 |
|
|
const char *url; |
110 |
|
|
int trust_id; |
111 |
twoaday |
200 |
char *notation; |
112 |
werner |
37 |
char *name, *cmt, *email; |
113 |
|
|
const char *exp_date; /* XXX */ |
114 |
|
|
gpgme_pubkey_algo_t pubkey_algo; |
115 |
twoaday |
200 |
unsigned int pubkey_size; |
116 |
werner |
37 |
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 |
|
|
void reset (void); |
127 |
twoaday |
175 |
|
128 |
twoaday |
170 |
void clear (void); |
129 |
twoaday |
175 |
void clearPassphrase (void); |
130 |
werner |
37 |
|
131 |
twoaday |
176 |
void setNoPassphrase (bool val); |
132 |
werner |
37 |
void setPassphrase (const char *pass); |
133 |
|
|
void setKey (gpgme_key_t key); |
134 |
|
|
void setKeyID (const char *keyid); |
135 |
|
|
void setLocalUser (gpgme_key_t locusr); |
136 |
twoaday |
170 |
void setCallback (gpgme_progress_cb_t cb, void *cb_value); |
137 |
werner |
37 |
void setResult (int val); |
138 |
|
|
int getResult (void); |
139 |
|
|
|
140 |
twoaday |
170 |
gpgme_key_t getKey (void); |
141 |
|
|
int getType (void); |
142 |
|
|
int getUseridIndex (void); |
143 |
|
|
int getKeyIndex (void); |
144 |
|
|
int getSigIndex (void); |
145 |
twoaday |
176 |
int getValidDays (void); |
146 |
twoaday |
170 |
|
147 |
twoaday |
200 |
gpgme_error_t addNotation (int uid_idx, const char *notation); |
148 |
twoaday |
170 |
gpgme_error_t signUserid (int uid_idx, int mode, int sig_class, |
149 |
|
|
const char *exp_date); |
150 |
werner |
37 |
gpgme_error_t signKey (int mode, int sig_class, const char *exp_date); |
151 |
|
|
gpgme_error_t setTrust (gpgme_validity_t trust); |
152 |
|
|
gpgme_error_t addUserid (const char *name, const char *cmt, |
153 |
|
|
const char *email); |
154 |
|
|
gpgme_error_t delUserid (int index); |
155 |
|
|
gpgme_error_t delKey (int index); |
156 |
|
|
gpgme_error_t addSubkey (gpgme_pubkey_algo_t pubkey_algo, |
157 |
|
|
unsigned int nbits, long valid); |
158 |
|
|
gpgme_error_t changePassphrase (const char *new_pass, int allow_empty); |
159 |
|
|
gpgme_error_t setPrimaryUserid (int uid_indx); |
160 |
|
|
gpgme_error_t setKeyExpireDate (int key_index, long exp_timestamp, |
161 |
|
|
bool exp_days); |
162 |
|
|
gpgme_error_t revokeUserid (int uid_indx); |
163 |
|
|
gpgme_error_t revokeSignature (int uid_index, int sig_index); |
164 |
|
|
gpgme_error_t revokeSubkey (int key_index, int reason, const char *cmt); |
165 |
|
|
gpgme_error_t addDesignatedRevoker (const char *uid); |
166 |
|
|
gpgme_error_t addPhotoid (const char *jpg_file); |
167 |
|
|
gpgme_error_t enable (void); |
168 |
|
|
gpgme_error_t disable (void); |
169 |
|
|
gpgme_error_t setUseridPreferences (int uid_index, const char *new_prefs); |
170 |
|
|
gpgme_error_t delUseridSignature (int uid_index, int sig_index); |
171 |
|
|
gpgme_error_t setPreferredKeyserver (int uid_index, const char *url); |
172 |
twoaday |
119 |
gpgme_error_t cleanKey (void); |
173 |
twoaday |
206 |
gpgme_error_t minimizeKey (void); |
174 |
|
|
|
175 |
werner |
37 |
|
176 |
|
|
gpgme_error_t getUseridInfo (gpg_uid_info_t *r_uinf); |
177 |
|
|
|
178 |
|
|
gpgme_error_t getDesignatedRevoker (gpg_desig_rev_t *r_rev); |
179 |
|
|
}; |
180 |
|
|
|
181 |
|
|
BOOL keyedit_add_subkey (winpt_key_t k, HWND dlg, listview_ctrl_t lv); |
182 |
|
|
BOOL keyedit_add_userid (winpt_key_t k, HWND dlg, listview_ctrl_t lv); |
183 |
|
|
BOOL keyedit_add_revoker (winpt_key_t k, HWND dlg); |
184 |
|
|
BOOL keyedit_add_photo (winpt_key_t k, HWND dlg ); |
185 |
|
|
BOOL keyedit_change_passwd (winpt_key_t k, HWND dlg); |
186 |
|
|
BOOL keyedit_set_pref_keyserver (winpt_key_t k, HWND dlg); |
187 |
|
|
|
188 |
|
|
gpgme_error_t gpg_editkey (gpgme_ctx_t ctx, gpgme_key_t key, GpgKeyEdit *ek); |
189 |
|
|
void gpg_uid_info_release (gpg_uid_info_t inf); |
190 |
|
|
void gpg_desig_rev_release (gpg_desig_rev_t rev); |
191 |
|
|
|
192 |
|
|
#endif /*WPT_KEY_EDIT_H*/ |