Mercurial > ~mikael > mcabber > hg
comparison mcabber/mcabber/pgp.c @ 2200:fec172dbacc7
Check all signatures and stop immediately if one could be verified
author | Sven Gaerner <sgaerner@gmx.net> |
---|---|
date | Sun, 01 Feb 2015 20:55:22 +0100 |
parents | 8811fe9d6ef0 |
children | ff18feb75a6d |
comparison
equal
deleted
inserted
replaced
2199:527ba1c1873e | 2200:fec172dbacc7 |
---|---|
260 if (!err) { | 260 if (!err) { |
261 err = gpgme_op_verify(ctx, data_sign, data_text, 0); | 261 err = gpgme_op_verify(ctx, data_sign, data_text, 0); |
262 if (!err) { | 262 if (!err) { |
263 gpgme_verify_result_t vr = gpgme_op_verify_result(ctx); | 263 gpgme_verify_result_t vr = gpgme_op_verify_result(ctx); |
264 if (vr && vr->signatures) { | 264 if (vr && vr->signatures) { |
265 char *r = vr->signatures->fpr; | 265 gpgme_signature_t s = NULL; |
266 // Found the fingerprint. Let's try to get the key id. | 266 // check all signatures and stop if the first could be verified |
267 if (!gpgme_get_key(ctx, r, &key, 0) && key) { | 267 for (s = vr->signatures; |
268 r = key->subkeys->keyid; | 268 (s != NULL) && (verified_key != NULL); |
269 gpgme_key_release(key); | 269 s = s->next) { |
270 } | 270 // Found the fingerprint. Let's try to get the key id. |
271 // r is a static variable, let's copy it. | 271 if (NULL != s->fpr) { |
272 verified_key = g_strdup(r); | 272 if (!gpgme_get_key(ctx, s->fpr, &key, 0)) { |
273 *sigsum = vr->signatures->summary; | 273 if (key) { |
274 // For some reason summary could be 0 when status is 0 too, | 274 verified_key = g_strdup(key->subkeys->keyid); |
275 // which means the signature is valid... | 275 gpgme_key_release(key); |
276 if (!*sigsum && !vr->signatures->status) | 276 } |
277 *sigsum = GPGME_SIGSUM_GREEN; | 277 } |
278 } | |
279 *sigsum = s->summary; | |
280 // For some reason summary could be 0 when status is 0 too, | |
281 // which means the signature is valid... | |
282 if ((!*sigsum) && (!s->status)) | |
283 *sigsum = GPGME_SIGSUM_GREEN; | |
284 } | |
278 } | 285 } |
279 } | 286 } |
280 gpgme_data_release(data_text); | 287 gpgme_data_release(data_text); |
281 } | 288 } |
282 gpgme_data_release(data_sign); | 289 gpgme_data_release(data_sign); |