diff options
author | Karl-Heinz Zimmer <[email protected]> | 2002-06-19 10:22:49 +0000 |
---|---|---|
committer | Karl-Heinz Zimmer <[email protected]> | 2002-06-19 10:22:49 +0000 |
commit | 6798c68f2f1e3c64008ef3eec98fd3fab9bf4004 (patch) | |
tree | f0f7d98d6b8e809d1b62abc4714362d5ed304092 /gpgmeplug/gpgmeplug.c | |
parent | 2002-06-14 Marcus Brinkmann <[email protected]> (diff) | |
download | gpgme-6798c68f2f1e3c64008ef3eec98fd3fab9bf4004.tar.gz gpgme-6798c68f2f1e3c64008ef3eec98fd3fab9bf4004.zip |
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.
Diffstat (limited to 'gpgmeplug/gpgmeplug.c')
-rw-r--r-- | gpgmeplug/gpgmeplug.c | 24 |
1 files changed, 24 insertions, 0 deletions
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); |