diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2009-11-09 23:15:17 +0100 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2009-11-09 23:15:17 +0100 |
commit | 262af16179f7a3fa315bd9546a1570aa34298dac (patch) | |
tree | 3094bddfbb68b5f72c96ca22fc2303a6dd7f35ac /src | |
parent | 5269150ebc577cd2814a456527fa8d75d8e04363 (diff) | |
download | strongswan-262af16179f7a3fa315bd9546a1570aa34298dac.tar.bz2 strongswan-262af16179f7a3fa315bd9546a1570aa34298dac.tar.xz |
accept PGP v3 or v4 fingerprint as alternative to PGP user_id
Diffstat (limited to 'src')
-rw-r--r-- | src/libstrongswan/plugins/pgp/pgp_cert.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/libstrongswan/plugins/pgp/pgp_cert.c b/src/libstrongswan/plugins/pgp/pgp_cert.c index 6c2bc4a27..373aba22c 100644 --- a/src/libstrongswan/plugins/pgp/pgp_cert.c +++ b/src/libstrongswan/plugins/pgp/pgp_cert.c @@ -104,7 +104,16 @@ static identification_t* get_issuer(private_pgp_cert_t *this) static id_match_t has_subject(private_pgp_cert_t *this, identification_t *subject) { - return this->user_id->matches(this->user_id, subject); + id_match_t match_user_id; + + match_user_id = this->user_id->matches(this->user_id, subject); + if (match_user_id == ID_MATCH_NONE && + subject->get_type(subject) == ID_KEY_ID && + chunk_equals(this->fingerprint, subject->get_encoding(subject))) + { + return ID_MATCH_PERFECT; + } + return match_user_id; } /** @@ -369,7 +378,7 @@ static bool parse_signature(private_pgp_cert_t *this, chunk_t packet) /* we parse only V3 signature packets */ if (version != 3) { - DBG1(" skipped V%d PGP signature", version); + DBG2(" skipped V%d PGP signature", version); return TRUE; } if (!pgp_read_scalar(&packet, 1, &len) || len != 5) |