aboutsummaryrefslogtreecommitdiffstats
path: root/sm/verify.c
diff options
context:
space:
mode:
Diffstat (limited to 'sm/verify.c')
-rw-r--r--sm/verify.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/sm/verify.c b/sm/verify.c
index 8a999da14..cb57682f1 100644
--- a/sm/verify.c
+++ b/sm/verify.c
@@ -85,7 +85,7 @@ store_cert (KsbaCert cert)
static void
-print_integer (unsigned char *p)
+print_integer_sexp (unsigned char *p)
{
unsigned long len;
@@ -93,9 +93,16 @@ print_integer (unsigned char *p)
log_printf ("none");
else
{
- len = (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3];
- for (p+=4; len; len--, p++)
- log_printf ("%02X", *p);
+ len = gcry_sexp_canon_len (p, 0, NULL, NULL);
+ if (!len)
+ log_printf ("invalid encoding");
+ else
+ {
+ for (; len && *p != ':'; len--, p++)
+ ;
+ for (p++; len; len--, p++)
+ log_printf ("%02X", *p);
+ }
}
}
@@ -289,9 +296,9 @@ gpgsm_verify (CTRL ctrl, int in_fd, int data_fd)
for (signer=0; signer < 1; signer++)
{
char *issuer = NULL;
- char *sigval = NULL;
+ KsbaSexp sigval = NULL;
time_t sigtime;
- unsigned char *serial;
+ KsbaSexp serial;
char *msgdigest = NULL;
size_t msgdigestlen;
@@ -300,7 +307,7 @@ gpgsm_verify (CTRL ctrl, int in_fd, int data_fd)
break;
log_debug ("signer %d - issuer: `%s'\n", signer, issuer? issuer:"[NONE]");
log_debug ("signer %d - serial: ", signer);
- print_integer (serial);
+ print_integer_sexp (serial);
log_printf ("\n");
err = ksba_cms_get_signing_time (cms, signer, &sigtime);