1
0
Fork 0
mirror of git://git.gnupg.org/gnupg.git synced 2025-07-02 22:46:30 +02:00

* minip12.c (parse_bag_encrypted_data): Finished implementation.

(p12_parse): Add callback args.
* protect-tool.c (import_p12_cert_cb): New.
(import_p12_file): Use it.
This commit is contained in:
Werner Koch 2004-02-10 19:26:55 +00:00
parent cfb33014ae
commit a1dd1cc223
4 changed files with 199 additions and 38 deletions

View file

@ -563,6 +563,23 @@ rsa_key_check (struct rsa_secret_key_s *skey)
}
/* A callback used by p12_parse to return a certificate. */
static void
import_p12_cert_cb (void *opaque, const unsigned char *cert, size_t certlen)
{
struct b64state state;
gpg_error_t err, err2;
err = b64enc_start (&state, stdout, "CERTIFICATE");
if (!err)
err = b64enc_write (&state, cert, certlen);
err2 = b64enc_finish (&state);
if (!err)
err = err2;
if (err)
log_error ("error writing armored certificate: %s\n", gpg_strerror (err));
}
static void
import_p12_file (const char *fname)
{
@ -583,11 +600,12 @@ import_p12_file (const char *fname)
if (!buf)
return;
kparms = p12_parse (buf, buflen, get_passphrase ());
kparms = p12_parse (buf, buflen, get_passphrase (),
import_p12_cert_cb, NULL);
xfree (buf);
if (!kparms)
{
log_error ("error parsing or decrypting the PKCS-1 file\n");
log_error ("error parsing or decrypting the PKCS-12 file\n");
return;
}
for (i=0; kparms[i]; i++)