aboutsummaryrefslogtreecommitdiff
path: root/src/gpg.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpg.c')
-rw-r--r--src/gpg.c43
1 files changed, 27 insertions, 16 deletions
diff --git a/src/gpg.c b/src/gpg.c
index 8979e9c..814be6f 100644
--- a/src/gpg.c
+++ b/src/gpg.c
@@ -147,22 +147,8 @@ create_gpg_homedir ()
147} 147}
148 148
149static int 149static int
150gpg_verify_signature (gpgme_ctx_t ctx, gpgme_signature_t sig, 150checksig (gpgme_signature_t sig, const char *uid, struct file_triplet *trp)
151 struct file_triplet *trp)
152{ 151{
153 if (!sig)
154 return 0;
155
156 for (; sig; sig = sig->next)
157 {
158 const char *uid;
159 gpgme_key_t key;
160
161 if (gpgme_get_key (ctx, sig->fpr, &key, 0) == GPG_ERR_NO_ERROR)
162 uid = key->uids->uid;
163 else
164 uid = sig->fpr;
165
166 switch (gpg_err_code (sig->status)) 152 switch (gpg_err_code (sig->status))
167 { 153 {
168 case GPG_ERR_NO_ERROR: 154 case GPG_ERR_NO_ERROR:
@@ -208,6 +194,30 @@ gpg_verify_signature (gpgme_ctx_t ctx, gpgme_signature_t sig,
208 logmsg (LOG_ERR, _("Unknown signature error")); 194 logmsg (LOG_ERR, _("Unknown signature error"));
209 return 0; 195 return 0;
210 } 196 }
197 return -1;
198}
199
200static int
201gpg_verify_signature (gpgme_ctx_t ctx, gpgme_signature_t sig,
202 struct file_triplet *trp)
203{
204 if (!sig)
205 return 0;
206
207 for (; sig; sig = sig->next)
208 {
209 const char *uid;
210 gpgme_key_t key;
211 int rc;
212
213 if (gpgme_get_key (ctx, sig->fpr, &key, 0) == GPG_ERR_NO_ERROR)
214 uid = key->uids->uid;
215 else
216 uid = sig->fpr;
217 rc = checksig (sig, uid, trp);
218 gpgme_key_unref (key);
219 if (rc != -1)
220 return rc;
211 } 221 }
212 return 1; 222 return 1;
213} 223}
@@ -217,7 +227,7 @@ int
217verify_directive_signature (struct file_triplet *trp) 227verify_directive_signature (struct file_triplet *trp)
218{ 228{
219 gpgme_ctx_t ctx; 229 gpgme_ctx_t ctx;
220 gpgme_data_t key_data, directive_data, plain; 230 gpgme_data_t key_data, directive_data, plain = NULL;
221 gpgme_error_t ec; 231 gpgme_error_t ec;
222 int rc; 232 int rc;
223 struct uploader_info *uptr; 233 struct uploader_info *uptr;
@@ -269,6 +279,7 @@ verify_directive_signature (struct file_triplet *trp)
269 trp->name, gpgme_strerror (ec)); 279 trp->name, gpgme_strerror (ec));
270 } 280 }
271 281
282 gpgme_data_release (plain);
272 gpgme_data_release (directive_data); 283 gpgme_data_release (directive_data);
273 gpgme_data_release (key_data); 284 gpgme_data_release (key_data);
274 gpgme_release (ctx); 285 gpgme_release (ctx);

Return to:

Send suggestions and report system problems to the System administrator.