aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--gpgmeplug/cryptplug.h7
-rw-r--r--gpgmeplug/gpgmeplug.c21
2 files changed, 20 insertions, 8 deletions
diff --git a/gpgmeplug/cryptplug.h b/gpgmeplug/cryptplug.h
index c390b6e6..fddaf179 100644
--- a/gpgmeplug/cryptplug.h
+++ b/gpgmeplug/cryptplug.h
@@ -1596,12 +1596,9 @@ const char* requestCertificateDialog( void );
/*! \ingroup groupCertAct
\brief Generates a prototype certificate with the data provided
- in the first four parameters and sends it via email to the CA
- specified in \c ca_address.
+ in the four parameter.
*/
-bool requestDecentralCertificate( const char* name, const char*
- email, const char* organization, const char* department,
- const char* ca_address );
+bool requestDecentralCertificate( const char* certparms, char** generatedKey );
/*! \ingroup groupCertAct
\brief Requests a certificate in a PSE from the CA
diff --git a/gpgmeplug/gpgmeplug.c b/gpgmeplug/gpgmeplug.c
index 74fb3c26..342c7bd3 100644
--- a/gpgmeplug/gpgmeplug.c
+++ b/gpgmeplug/gpgmeplug.c
@@ -1510,9 +1510,24 @@ bool decryptAndCheckMessage( const char* ciphertext,
const char* requestCertificateDialog(){ return 0; }
-bool requestDecentralCertificate( const char* name, const char*
- email, const char* organization, const char* department,
- const char* ca_address ){ return true; }
+bool requestDecentralCertificate( const char* certparms, char** generatedKey )
+{
+ GpgmeCtx ctx;
+ GpgmeError err = gpgme_new (&ctx);
+ if( err != GPGME_No_Error )
+ return false;
+
+ gpgme_set_protocol (ctx, GPGMEPLUG_PROTOCOL);
+
+ gpgme_set_armor (ctx, __GPGMEPLUG_SIGNATURE_CODE_IS_BINARY ? 0 : 1);
+
+ if( gpgme_op_genkey( ctx, certparms, NULL, NULL ) == GPGME_No_Error )
+ return true;
+ else
+ return false;
+
+ gpgme_release( ctx );
+}
bool requestCentralCertificateAndPSE( const char* name,
const char* email, const char* organization, const char* department,