From 13b7a732d11cac03efe4a8cb792df238d3a187a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Mon, 2 Jan 2006 13:01:29 +0000 Subject: [PATCH] Factor out certificate parsing code. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16424 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/hx509/ks_file.c | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/lib/hx509/ks_file.c b/lib/hx509/ks_file.c index 9e6e7703c..e4acc2bdd 100644 --- a/lib/hx509/ks_file.c +++ b/lib/hx509/ks_file.c @@ -102,6 +102,25 @@ parse_certificate(const char *fn, int use_pem, Certificate *t) return ret; } +int +_hx509_file_to_cert(const char *certfn, hx509_cert *cert) +{ + Certificate t; + int ret; + + ret = parse_certificate(certfn, 1, &t); + if (ret) { + ret = parse_certificate(certfn, 0, &t); + if (ret) + return ret; + } + + ret = hx509_cert_init(&t, cert); + free_Certificate(&t); + + return ret; +} + static int file_init(hx509_certs certs, void **data, int flags, @@ -109,6 +128,7 @@ file_init(hx509_certs certs, void **data, int flags, { char *certfn, *keyfn, *friendlyname = NULL; hx509_cert cert; + int ret; *data = NULL; @@ -123,24 +143,10 @@ file_init(hx509_certs certs, void **data, int flags, *friendlyname++ = '\0'; } - { - Certificate t; - int ret; - - ret = parse_certificate(certfn, 1, &t); - if (ret) - ret = parse_certificate(certfn, 0, &t); - if (ret) { - free(certfn); - return ret; - } - - ret = hx509_cert_init(&t, &cert); - free_Certificate(&t); - if (ret) { - free(certfn); - return ret; - } + ret = _hx509_file_to_cert(certfn, &cert); + if (ret) { + free(certfn); + return ret; } if (keyfn) {