changed code according to our hack before CeBIT, we are giving *binary* data to the...
authorKarl-Heinz Zimmer <khz@kde.org>
Thu, 21 Mar 2002 21:48:33 +0000 (21:48 +0000)
committerKarl-Heinz Zimmer <khz@kde.org>
Thu, 21 Mar 2002 21:48:33 +0000 (21:48 +0000)
trunk/gpgmeplug/cryptplug.h
trunk/gpgmeplug/gpgmeplug.c

index ed936f7e7792bd48a2d412342e900b050f29280b..e3aea6ca1b07cd4cfcdc37f48a75d2ef437538b4 100644 (file)
@@ -1549,8 +1549,11 @@ bool encryptAndSignMessage( const char* cleartext,
           \c true, otherwise
           \c false.
 */
-bool decryptMessage( const char* ciphertext, const
-          char** cleartext, const char* certificate );
+bool decryptMessage( const char* ciphertext,
+                     bool        cipherIsBinary,
+                     int         cipherLen,
+                     const char** cleartext,
+                     const char* certificate );
 
 /*! \ingroup groupCryptAct
    \brief Combines the functionality of
index 474e439d60a2a0c7b79ccd79ab679720ce887f25..5b856e8c38801c774f58f9f76e034c9aef0307c2 100644 (file)
@@ -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 );