2008-01-18 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Fri, 18 Jan 2008 14:30:56 +0000 (14:30 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Fri, 18 Jan 2008 14:30:56 +0000 (14:30 +0000)
* mimeparser.c (mime_verify): New variable sig_len, and pass it on
to engine_verify_start.
* engine.h (engine_verify_start): Add new argument sig_len.
* engine.c (engine_verify_start): Add new argument sig_len and
pass it on to op_assuan_verify and op_gpgme_verify.
* engine-assuan.h (op_asssuan_verify): Add new argument sig_len.
* engine-gpgme.c (op_gpgme_verify): New argument sig_len and use
it instead of string length of signature.
* engine-assuan.c (op_assuan_verify): Likewise.

src/ChangeLog
src/engine-assuan.c
src/engine-assuan.h
src/engine-gpgme.c
src/engine.c
src/engine.h
src/mimeparser.c

index 0b8cfba..66de08b 100644 (file)
@@ -1,3 +1,15 @@
+2008-01-18  Marcus Brinkmann  <marcus@g10code.de>
+
+       * mimeparser.c (mime_verify): New variable sig_len, and pass it on
+       to engine_verify_start.
+       * engine.h (engine_verify_start): Add new argument sig_len.
+       * engine.c (engine_verify_start): Add new argument sig_len and
+       pass it on to op_assuan_verify and op_gpgme_verify.
+       * engine-assuan.h (op_asssuan_verify): Add new argument sig_len.
+       * engine-gpgme.c (op_gpgme_verify): New argument sig_len and use
+       it instead of string length of signature.
+       * engine-assuan.c (op_assuan_verify): Likewise.
+
 2008-01-11  Werner Koch  <wk@g10code.com>
 
        * mimemaker.c (finalize_message): Add args PROTOCOL and ENCRYPT
index 57bb87f..7f6b5b4 100644 (file)
@@ -1684,7 +1684,7 @@ verify_closure (closure_data_t cld)
    MSGDATA and the signature given as the string SIGNATURE. */
 int 
 op_assuan_verify (gpgme_protocol_t protocol, 
-                  gpgme_data_t msgdata, const char *signature,
+                  gpgme_data_t msgdata, const char *signature, size_t sig_len,
                   engine_filter_t filter, void *hwnd)
 {
   gpg_error_t err;
@@ -1705,7 +1705,7 @@ op_assuan_verify (gpgme_protocol_t protocol,
   if (!(protocol_name = get_protocol_name (protocol)))
     return gpg_error(GPG_ERR_INV_VALUE);
 
-  err = gpgme_data_new_from_mem (&sigdata, signature, strlen (signature), 0);
+  err = gpgme_data_new_from_mem (&sigdata, signature, sig_len, 0);
   if (err)
     goto leave;
 
index f24fdfb..a96addc 100644 (file)
@@ -47,7 +47,7 @@ int op_assuan_decrypt (protocol_t protocol,
                        engine_filter_t filter, void *hwnd,
                        int with_verify);
 int op_assuan_verify (gpgme_protocol_t protocol, 
-                      gpgme_data_t data, const char *signature,
+                      gpgme_data_t data, const char *signature, size_t sig_len,
                       engine_filter_t filter, void *hwnd);
 
 int op_assuan_start_keymanager (void *hwnd);
index 3d06da3..11614a9 100644 (file)
@@ -684,7 +684,7 @@ verify_closure (closure_data_t cld, gpgme_ctx_t ctx, gpg_error_t err)
    DATA and the signature given as the string SIGNATUEE. */
 int
 op_gpgme_verify (gpgme_protocol_t protocol, 
-                 gpgme_data_t data, const char *signature,
+                 gpgme_data_t data, const char *signature, size_t sig_len,
                  engine_filter_t filter, void *hwnd)
 {
   gpgme_error_t err;
@@ -715,7 +715,7 @@ op_gpgme_verify (gpgme_protocol_t protocol,
   if (err)
     goto leave;
 
-  err = gpgme_data_new_from_mem (&sigobj, signature, strlen (signature), 0);
+  err = gpgme_data_new_from_mem (&sigobj, signature, sig_len, 0);
   if (err)
     goto leave;
   cld->sigobj = sigobj;
index 1a9a788..0b6cceb 100644 (file)
@@ -738,7 +738,7 @@ engine_decrypt_start (engine_filter_t filter, HWND hwnd, protocol_t protocol,
    object lasts until the final engine_wait or engine_cancel.  */
 int
 engine_verify_start (engine_filter_t filter, HWND hwnd, const char *signature,
-                     protocol_t protocol)
+                    size_t sig_len, protocol_t protocol)
 {
   gpg_error_t err;
 
@@ -750,9 +750,11 @@ engine_verify_start (engine_filter_t filter, HWND hwnd, const char *signature,
     }
 
   if (filter->use_assuan)
-    err = op_assuan_verify (protocol, filter->indata, signature, filter, hwnd);
+    err = op_assuan_verify (protocol, filter->indata, signature,
+                           sig_len, filter, hwnd);
   else
-    err = op_gpgme_verify (protocol, filter->indata, signature, filter, hwnd);
+    err = op_gpgme_verify (protocol, filter->indata, signature,
+                          sig_len, filter, hwnd);
   return err;
 }
 
index a831206..f10932f 100644 (file)
@@ -69,7 +69,8 @@ int engine_sign_start (engine_filter_t filter, HWND hwnd, protocol_t protocol);
 int engine_decrypt_start (engine_filter_t filter, HWND hwnd,
                           protocol_t protocol, int with_verify);
 int engine_verify_start (engine_filter_t filter, HWND hwnd,
-                         const char *signature, protocol_t protocol);
+                         const char *signature, size_t sig_len,
+                        protocol_t protocol);
 
 int engine_start_keymanager (HWND hwnd);
 
index 14494db..01a41c4 100644 (file)
@@ -1107,6 +1107,7 @@ mime_verify (protocol_t protocol, const char *message, size_t messagelen,
   const char *s;
   size_t len;
   char *signature = NULL;
+  size_t sig_len;
   engine_filter_t filter = NULL;
 
   /* Note: PROTOCOL is not used here but figured out directly while
@@ -1154,7 +1155,7 @@ mime_verify (protocol_t protocol, const char *message, size_t messagelen,
      incomplete last line.  */
   if (ctx->sig_data && gpgme_data_write (ctx->sig_data, "", 1) == 1)
     {
-      signature = gpgme_data_release_and_get_mem (ctx->sig_data, NULL);
+      signature = gpgme_data_release_and_get_mem (ctx->sig_data, &sig_len);
       ctx->sig_data = NULL; 
     }
 
@@ -1165,7 +1166,8 @@ mime_verify (protocol_t protocol, const char *message, size_t messagelen,
       
       if ((err=engine_create_filter (&filter, NULL, NULL)))
         goto leave;
-      if ((err=engine_verify_start (filter, hwnd, signature, ctx->protocol)))
+      if ((err=engine_verify_start (filter, hwnd, signature, sig_len,
+                                   ctx->protocol)))
         goto leave;
 
       /* Filter the data.  */