certmanager/lib
qgpgmesignjob.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifdef HAVE_CONFIG_H
00034 #include <config.h>
00035 #endif
00036
00037 #include "qgpgmesignjob.h"
00038
00039 #include "ui/messagebox.h"
00040
00041 #include <qgpgme/eventloopinteractor.h>
00042 #include <qgpgme/dataprovider.h>
00043
00044 #include <gpgmepp/context.h>
00045 #include <gpgmepp/signingresult.h>
00046 #include <gpgmepp/data.h>
00047 #include <gpgmepp/key.h>
00048
00049 #include <tdelocale.h>
00050
00051 #include <assert.h>
00052 #include <stdlib.h>
00053
00054 Kleo::QGpgMESignJob::QGpgMESignJob( GpgME::Context * context )
00055 : SignJob( QGpgME::EventLoopInteractor::instance(), "Kleo::QGpgMESignJob" ),
00056 QGpgMEJob( this, context )
00057 {
00058 assert( context );
00059 }
00060
00061 Kleo::QGpgMESignJob::~QGpgMESignJob() {
00062 }
00063
00064 GpgME::Error Kleo::QGpgMESignJob::setup( const std::vector<GpgME::Key> & signers,
00065 const TQByteArray & plainText ) {
00066 assert( !mInData );
00067 assert( !mOutData );
00068
00069 createInData( plainText );
00070 createOutData();
00071
00072 return setSigningKeys( signers );
00073 }
00074
00075 GpgME::Error Kleo::QGpgMESignJob::start( const std::vector<GpgME::Key> & signers,
00076 const TQByteArray & plainText,
00077 GpgME::Context::SignatureMode mode ) {
00078 if ( const GpgME::Error error = setup( signers, plainText ) ) {
00079 deleteLater();
00080 return error;
00081 }
00082
00083 hookupContextToEventLoopInteractor();
00084
00085 const GpgME::Error err = mCtx->startSigning( *mInData, *mOutData, mode );
00086
00087 if ( err )
00088 deleteLater();
00089 mResult = GpgME::SigningResult( err );
00090 return err;
00091 }
00092
00093 GpgME::SigningResult Kleo::QGpgMESignJob::exec( const std::vector<GpgME::Key> & signers,
00094 const TQByteArray & plainText,
00095 GpgME::Context::SignatureMode mode,
00096 TQByteArray & signature ) {
00097 if ( const GpgME::Error err = setup( signers, plainText ) )
00098 return mResult = GpgME::SigningResult( 0, err );
00099 mResult = mCtx->sign( *mInData, *mOutData, mode );
00100 signature = mOutDataDataProvider->data();
00101 getAuditLog();
00102 return mResult;
00103 }
00104
00105 void Kleo::QGpgMESignJob::doOperationDoneEvent( const GpgME::Error & ) {
00106 mResult = mCtx->signingResult();
00107 const TQByteArray signature = mOutDataDataProvider->data();
00108 getAuditLog();
00109 emit result( mResult, signature );
00110 }
00111
00112 void Kleo::QGpgMESignJob::showErrorDialog( TQWidget * parent, const TQString & caption ) const {
00113 if ( mResult.error() && !mResult.error().isCanceled() )
00114 Kleo::MessageBox::error( parent, mResult, this, caption );
00115 }
00116
00117 #include "qgpgmesignjob.moc"
|