From 6798c68f2f1e3c64008ef3eec98fd3fab9bf4004 Mon Sep 17 00:00:00 2001 From: Karl-Heinz Zimmer Date: Wed, 19 Jun 2002 10:22:49 +0000 Subject: Use gpgme_get_sig_ulong_attr(.., GPGME_ATTR_SIG_SUMMARY ) function to return extended signature status information from the CryptPlug to the calling process after trying to verify a signature. --- gpgmeplug/gpgmeplug.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'gpgmeplug/gpgmeplug.c') diff --git a/gpgmeplug/gpgmeplug.c b/gpgmeplug/gpgmeplug.c index eabcf35b..217cca12 100644 --- a/gpgmeplug/gpgmeplug.c +++ b/gpgmeplug/gpgmeplug.c @@ -1179,6 +1179,8 @@ bool checkMessageSignature( char** cleartext, { GpgmeCtx ctx; GpgmeSigStat status; + unsigned long sumGPGME; + SigStatusFlags sumPlug; GpgmeData datapart, sigpart; char* rClear = 0; size_t clearLen; @@ -1268,6 +1270,28 @@ bool checkMessageSignature( char** cleartext, ctime_val, sizeof( struct tm ) ); } + /* the extended signature verification status */ + sumGPGME = gpgme_get_sig_ulong_attr( ctx, + sig_idx, + GPGME_ATTR_SIG_SUMMARY, + 0 ); + // translate GPGME status flags to common CryptPlug status flags + sumPlug = 0; + if( sumGPGME & GPGME_SIGSUM_VALID ) sumPlug |= SigStat_VALID ; + if( sumGPGME & GPGME_SIGSUM_GREEN ) sumPlug |= SigStat_GREEN ; + if( sumGPGME & GPGME_SIGSUM_RED ) sumPlug |= SigStat_RED ; + if( sumGPGME & GPGME_SIGSUM_KEY_REVOKED ) sumPlug |= SigStat_KEY_REVOKED; + if( sumGPGME & GPGME_SIGSUM_KEY_EXPIRED ) sumPlug |= SigStat_KEY_EXPIRED; + if( sumGPGME & GPGME_SIGSUM_SIG_EXPIRED ) sumPlug |= SigStat_SIG_EXPIRED; + if( sumGPGME & GPGME_SIGSUM_KEY_MISSING ) sumPlug |= SigStat_KEY_MISSING; + if( sumGPGME & GPGME_SIGSUM_CRL_MISSING ) sumPlug |= SigStat_CRL_MISSING; + if( sumGPGME & GPGME_SIGSUM_CRL_TOO_OLD ) sumPlug |= SigStat_CRL_TOO_OLD; + if( sumGPGME & GPGME_SIGSUM_BAD_POLICY ) sumPlug |= SigStat_BAD_POLICY ; + if( sumGPGME & GPGME_SIGSUM_SYS_ERROR ) sumPlug |= SigStat_SYS_ERROR ; + if( !sumPlug ) + sumPlug = SigStat_NUMERICAL_CODE | sumGPGME; + sigmeta->extended_info[sig_idx].sigStatusFlags = sumPlug; + sigmeta->extended_info[sig_idx].validity = GPGME_VALIDITY_UNKNOWN; err = gpgme_get_sig_key (ctx, sig_idx, &key); -- cgit v1.2.3