aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/gpg-card.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/tools/gpg-card.c b/tools/gpg-card.c
index c9b8380cd..e2d728dab 100644
--- a/tools/gpg-card.c
+++ b/tools/gpg-card.c
@@ -1647,6 +1647,20 @@ cmd_writecert (card_info_t info, char *argstr)
err = get_data_from_file (argstr, &data, &datalen);
if (err)
goto leave;
+ if (ascii_memistr (data, datalen, "-----BEGIN CERTIFICATE-----")
+ && ascii_memistr (data, datalen, "-----END CERTIFICATE-----")
+ && !memchr (data, 0, datalen) && !memchr (data, 1, datalen))
+ {
+ struct b64state b64;
+
+ err = b64dec_start (&b64, "");
+ if (!err)
+ err = b64dec_proc (&b64, data, datalen, &datalen);
+ if (!err)
+ err = b64dec_finish (&b64);
+ if (err)
+ goto leave;
+ }
}
else
{