aboutsummaryrefslogtreecommitdiffstats
path: root/gpgmeplug/gpgmeplug.c
diff options
context:
space:
mode:
authorKarl-Heinz Zimmer <[email protected]>2002-03-21 21:48:33 +0000
committerKarl-Heinz Zimmer <[email protected]>2002-03-21 21:48:33 +0000
commit70251d0f5fd18a1b4330b1af3d6a2a8219bc23c7 (patch)
tree73b2f07983cbb260773056b8e0541214342e5b47 /gpgmeplug/gpgmeplug.c
parent* util.h (struct) [!HAVE_FOPENCOOKIE]: Make sure off_t and ssize_t (diff)
downloadgpgme-70251d0f5fd18a1b4330b1af3d6a2a8219bc23c7.tar.gz
gpgme-70251d0f5fd18a1b4330b1af3d6a2a8219bc23c7.zip
changed code according to our hack before CeBIT, we are giving *binary* data to the decryptMessage() and to the checkMessageSignature() methode instead of passing base64 encoded data to them
Diffstat (limited to '')
-rw-r--r--gpgmeplug/gpgmeplug.c29
1 files changed, 24 insertions, 5 deletions
diff --git a/gpgmeplug/gpgmeplug.c b/gpgmeplug/gpgmeplug.c
index 474e439d..5b856e8c 100644
--- a/gpgmeplug/gpgmeplug.c
+++ b/gpgmeplug/gpgmeplug.c
@@ -1204,8 +1204,8 @@ bool findCertificates( const char* addressee, char** certificates )
GpgmeKey rKey;
const char *s;
const char *s2;
- bool bOk = false;
-
+ int nFound = 0;
+
strcpy( *certificates, "" );
gpgme_new (&ctx);
@@ -1215,21 +1215,25 @@ bool findCertificates( const char* addressee, char** certificates )
while( GPGME_No_Error == err ) {
err = gpgme_op_keylist_next(ctx, &rKey);
if( GPGME_No_Error == err ) {
- bOk = true;
s = gpgme_key_get_string_attr (rKey, GPGME_ATTR_USERID, NULL, 0);
if( s ) {
s2 = gpgme_key_get_string_attr (rKey, GPGME_ATTR_FPR, NULL, 0);
if( s2 ) {
+ if( nFound )
+ strcat(*certificates,"\1" );
strcat( *certificates, s );
strcat( *certificates, " (" );
strcat( *certificates, s2 );
- strcat( *certificates, ")\1" );
+ strcat( *certificates, ")" );
+ ++nFound;
}
}
}
}
gpgme_op_keylist_end( ctx );
- return bOk;
+ gpgme_release (ctx);
+
+ return ( 0 < nFound );
}
bool encryptMessage( const char* cleartext,
@@ -1419,7 +1423,10 @@ bool encryptAndSignMessage( const char* cleartext,
return bOk;
}
+
bool decryptMessage( const char* ciphertext,
+ bool cipherIsBinary,
+ int cipherLen,
const char** cleartext,
const char* certificate )
{
@@ -1435,9 +1442,21 @@ bool decryptMessage( const char* ciphertext,
err = gpgme_new (&ctx);
gpgme_set_protocol (ctx, GPGMEPLUG_PROTOCOL);
+
+ gpgme_set_armor (ctx, cipherIsBinary ? 0 : 1);
+// gpgme_set_textmode (ctx, cipherIsBinary ? 0 : 1);
+ /*
gpgme_data_new_from_mem( &gCiphertext, ciphertext,
1+strlen( ciphertext ), 1 );
+ */
+ gpgme_data_new_from_mem( &gCiphertext,
+ ciphertext,
+ cipherIsBinary
+ ? cipherLen
+ : strlen( ciphertext ),
+ 1 );
+
gpgme_data_new( &gPlaintext );
gpgme_op_decrypt( ctx, gCiphertext, gPlaintext );