From kde-commits Tue Oct 19 19:22:22 2004 From: Marc Mutz Date: Tue, 19 Oct 2004 19:22:22 +0000 To: kde-commits Subject: kdepim/certmanager/lib Message-Id: <20041019192222.8636F16C60 () office ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=109821375318065 CVS commit by mutz: From KDE_3_3_BRANCH: Detect wrong key usage (e.g. signing-only keys used for encryption) M +15 -1 cryptplug.cpp 1.15 M +4 -4 cryptplug.h 1.6 M +3 -0 cryptplugwrapper.h 1.17 --- kdepim/certmanager/lib/cryptplug.cpp #1.14:1.15 @@ -1990,4 +1990,5 @@ bool CryptPlug::decryptAndCheckMessage( gpgme_ctx_t ctx; gpgme_error_t err; + gpgme_decrypt_result_t decryptresult; gpgme_data_t gCiphertext, gPlaintext; gpgme_sig_stat_t sigstatus = GPGME_SIG_STAT_NONE; @@ -1995,4 +1996,5 @@ bool CryptPlug::decryptAndCheckMessage( char* rCiph = 0; bool bOk = false; + bool bWrongKeyUsage = false; if( !ciphertext ) @@ -2019,4 +2021,11 @@ bool CryptPlug::decryptAndCheckMessage( err = gpgme_op_decrypt_verify( ctx, gCiphertext, gPlaintext ); gpgme_data_release( gCiphertext ); + + decryptresult = gpgme_op_decrypt_result( ctx ); +#ifdef HAVE_GPGME_WRONG_KEY_USAGE + if( decryptresult->wrong_key_usage ) + bWrongKeyUsage = true; +#endif + if( err ) { fprintf( stderr, "\ngpgme_op_decrypt_verify() returned this error code: %i\n\n", err ); @@ -2034,4 +2043,9 @@ bool CryptPlug::decryptAndCheckMessage( } + if( bWrongKeyUsage ) { + if( errId ) + *errId = CRYPTPLUG_ERR_WRONG_KEY_USAGE; // report the wrong key usage + } + rCiph = gpgme_data_release_and_get_mem( gPlaintext, &rCLen ); --- kdepim/certmanager/lib/cryptplug.h #1.5:1.6 @@ -413,5 +413,5 @@ const char* bugURL( void ); */ int interfaceVersion (int *min_version); - +#define CRYPTPLUG_ERR_WRONG_KEY_USAGE 0x7070 /*! \ingroup groupGeneral @@ -1127,7 +1127,7 @@ struct CertificateInfo { }; -/*! \fn struct CertIterator* startListCertificates( const char* pattern ); - \fn struct CertificateInfo* nextCertificate( struct CertIterator* ); - \fn void endListCertificates( struct CertIterator* ); +/*! \function struct CertIterator* startListCertificates( const char* pattern ); + \function struct CertificateInfo* nextCertificate( struct CertIterator* ); + \function void endListCertificates( struct CertIterator* ); \ingroup certList --- kdepim/certmanager/lib/cryptplugwrapper.h #1.16:1.17 @@ -535,4 +535,7 @@ public: crypto actions. + \param parent The parent widget to be used for displaying dialogs. + If this parameter is NULL the desktop is used as + the dialogs' parent widget. \param name The external name that is visible in lists, messages, etc.