diff options
Diffstat (limited to '')
| -rw-r--r-- | gpgmeplug/gpgmeplug.c | 62 | 
1 files changed, 38 insertions, 24 deletions
| diff --git a/gpgmeplug/gpgmeplug.c b/gpgmeplug/gpgmeplug.c index 1fc88016..42b84384 100644 --- a/gpgmeplug/gpgmeplug.c +++ b/gpgmeplug/gpgmeplug.c @@ -951,7 +951,7 @@ bool encryptMessage( const char* cleartext,      // untrusted key (oder gar keiner) gefunden wurde, verweigert gpg      // das signieren.    } -   +    gpgme_release (ctx);    return bOk; @@ -966,11 +966,12 @@ bool decryptMessage( const char* ciphertext,                       const char** cleartext,                       const char* certificate )  { -    GpgmeCtx ctx; -    GpgmeData gCiphertext, gPlaintext; -    size_t rCLen; -    char*  rCiph = 0; -    bool bOk = false; +  GpgmeCtx ctx; +  GpgmeError err; +  GpgmeData gCiphertext, gPlaintext; +  size_t rCLen = 0; +  char*  rCiph = 0; +  bool bOk = false; @@ -984,6 +985,19 @@ bool decryptMessage( const char* ciphertext,    struct passphrase_cb_info_s info; + + + +  if( !ciphertext ) +    return false; + +  err = gpgme_new (&ctx); +  gpgme_set_protocol (ctx, GPGMEPLUG_PROTOCOL); + + + + +  /*    temporary code!! @@ -999,28 +1013,28 @@ bool decryptMessage( const char* ciphertext, -    gpgme_new( &ctx ); -    gpgme_data_new_from_mem( &gCiphertext, ciphertext, -                             1+strlen( ciphertext ), 1 ); -    gpgme_data_new( &gPlaintext ); -    gpgme_op_decrypt( ctx, gCiphertext, gPlaintext ); -    gpgme_data_release( gCiphertext ); +  gpgme_data_new_from_mem( &gCiphertext, ciphertext, +                           1+strlen( ciphertext ), 1 ); +  gpgme_data_new( &gPlaintext ); -    rCiph = gpgme_data_release_and_get_mem( gPlaintext,  &rCLen ); +  gpgme_op_decrypt( ctx, gCiphertext, gPlaintext ); +  gpgme_data_release( gCiphertext ); -    *cleartext = malloc( rCLen + 1 ); -    if( *cleartext ) { -        if( rCLen ) { -            bOk = true; -            strncpy((char*)*cleartext, rCiph, rCLen ); -        } -        ((char*)(*cleartext))[rCLen] = 0; -    } +  rCiph = gpgme_data_release_and_get_mem( gPlaintext,  &rCLen ); -    free( rCiph ); -    gpgme_release( ctx ); -    return bOk; +  *cleartext = malloc( rCLen + 1 ); +  if( *cleartext ) { +      if( rCLen ) { +          bOk = true; +          strncpy((char*)*cleartext, rCiph, rCLen ); +      } +      ((char*)(*cleartext))[rCLen] = 0; +  } + +  free( rCiph ); +  gpgme_release( ctx ); +  return bOk;  }  bool decryptAndCheckMessage( const char* ciphertext, | 
