aboutsummaryrefslogtreecommitdiffstats
path: root/sm/decrypt.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2001-12-18 17:37:48 +0000
committerWerner Koch <[email protected]>2001-12-18 17:37:48 +0000
commit56172ce393437be1434d5af11f775c85ed72c1b0 (patch)
tree73821dd5f67e3f6c7a911d75676aea7041bd6e7a /sm/decrypt.c
parent* gpgsm.c (main): Renamed the default key database to "keyring.kbx". (diff)
downloadgnupg-56172ce393437be1434d5af11f775c85ed72c1b0.tar.gz
gnupg-56172ce393437be1434d5af11f775c85ed72c1b0.zip
Changes to be used with the new libksba interface.
libgcrypt-1.1.5 is required (cvs or tarball)
Diffstat (limited to 'sm/decrypt.c')
-rw-r--r--sm/decrypt.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/sm/decrypt.c b/sm/decrypt.c
index 4038f8d27..7237fef7c 100644
--- a/sm/decrypt.c
+++ b/sm/decrypt.c
@@ -51,7 +51,7 @@ struct decrypt_filter_parm_s {
static void
-print_integer (unsigned char *p)
+print_integer_sexp (unsigned char *p)
{
unsigned long len;
@@ -59,23 +59,30 @@ 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);
+ }
}
}
/* decrypt the session key and fill in the parm structure. The
algo and the IV is expected to be already in PARM. */
static int
-prepare_decryption (const char *hexkeygrip, const char *enc_val,
+prepare_decryption (const char *hexkeygrip, KsbaConstSexp enc_val,
struct decrypt_filter_parm_s *parm)
{
char *seskey = NULL;
size_t n, seskeylen;
int rc;
- rc = gpgsm_agent_pkdecrypt (hexkeygrip, enc_val, strlen (enc_val),
+ rc = gpgsm_agent_pkdecrypt (hexkeygrip, enc_val,
&seskey, &seskeylen);
if (rc)
{
@@ -348,8 +355,8 @@ gpgsm_decrypt (CTRL ctrl, int in_fd, FILE *out_fp)
for (recp=0; recp < 1; recp++)
{
char *issuer;
- unsigned char *serial;
- char *enc_val;
+ KsbaSexp serial;
+ KsbaSexp enc_val;
char *hexkeygrip = NULL;
err = ksba_cms_get_issuer_serial (cms, recp, &issuer, &serial);
@@ -363,7 +370,7 @@ gpgsm_decrypt (CTRL ctrl, int in_fd, FILE *out_fp)
log_debug ("recp %d - issuer: `%s'\n",
recp, issuer? issuer:"[NONE]");
log_debug ("recp %d - serial: ", recp);
- print_integer (serial);
+ print_integer_sexp (serial);
log_printf ("\n");
keydb_search_reset (kh);
@@ -395,8 +402,6 @@ gpgsm_decrypt (CTRL ctrl, int in_fd, FILE *out_fp)
recp);
else
{
- log_debug ("recp %d - enc-val: `%s'\n",
- recp, enc_val);
rc = prepare_decryption (hexkeygrip, enc_val,
&dfparm);
xfree (enc_val);