]> www.infradead.org Git - users/dwmw2/openconnect.git/commitdiff
Factor out OpenSSL install_extra_certs() from load_pkcs12_certificate()
authorDavid Woodhouse <David.Woodhouse@intel.com>
Thu, 31 Jul 2014 12:17:25 +0000 (13:17 +0100)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Thu, 31 Jul 2014 12:36:51 +0000 (13:36 +0100)
We'll want to use this again in a moment...

Also fix up the translations, since nobody had translated 'PKCS#12' anyway.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
15 files changed:
openssl.c
po/cs.po
po/de.po
po/el.po
po/en_GB.po
po/en_US.po
po/es.po
po/eu.po
po/id.po
po/lt.po
po/nl.po
po/pt.po
po/pt_BR.po
po/sl.po
po/ug.po

index 4ace33118a895c5e001431922513aaeeeb1c4c0a..1856725a55d3a6de4e61ec090d702d20deac51d2 100644 (file)
--- a/openssl.c
+++ b/openssl.c
@@ -400,6 +400,38 @@ static int pem_pw_cb(char *buf, int len, int w, void *v)
        return plen;
 }
 
+static int install_extra_certs(struct openconnect_info *vpninfo, const char *source,
+                              STACK_OF(X509) *ca)
+{
+       X509 *cert = vpninfo->cert_x509;
+       int i;
+
+ next:
+       for (i = 0; i < sk_X509_num(ca); i++) {
+               X509 *cert2 = sk_X509_value(ca, i);
+               if (X509_check_issued(cert2, cert) == X509_V_OK) {
+                       char buf[200];
+
+                       if (cert2 == cert)
+                               break;
+                       if (X509_check_issued(cert2, cert2) == X509_V_OK)
+                               break;
+
+                       X509_NAME_oneline(X509_get_subject_name(cert2),
+                                         buf, sizeof(buf));
+                       vpn_progress(vpninfo, PRG_DEBUG,
+                                    _("Extra cert from %s: '%s'\n"), source, buf);
+                       CRYPTO_add(&cert2->references, 1, CRYPTO_LOCK_X509);
+                       SSL_CTX_add_extra_chain_cert(vpninfo->https_ctx, cert2);
+                       cert = cert2;
+                       goto next;
+               }
+       }
+       sk_X509_pop_free(ca, X509_free);
+
+       return 0;
+}
+
 static int load_pkcs12_certificate(struct openconnect_info *vpninfo, PKCS12 *p12)
 {
        EVP_PKEY *pkey = NULL;
@@ -466,32 +498,8 @@ static int load_pkcs12_certificate(struct openconnect_info *vpninfo, PKCS12 *p12
                ret = -EINVAL;
        }
 
-       /* Only include supporting certificates which are actually necessary */
-       if (ca) {
-               int i;
-       next:
-               for (i = 0; i < sk_X509_num(ca); i++) {
-                       X509 *cert2 = sk_X509_value(ca, i);
-                       if (X509_check_issued(cert2, cert) == X509_V_OK) {
-                               char buf[200];
-
-                               if (cert2 == cert)
-                                       break;
-                               if (X509_check_issued(cert2, cert2) == X509_V_OK)
-                                       break;
-
-                               X509_NAME_oneline(X509_get_subject_name(cert2),
-                                                 buf, sizeof(buf));
-                               vpn_progress(vpninfo, PRG_DEBUG,
-                                            _("Extra cert from PKCS#12: '%s'\n"), buf);
-                               CRYPTO_add(&cert2->references, 1, CRYPTO_LOCK_X509);
-                               SSL_CTX_add_extra_chain_cert(vpninfo->https_ctx, cert2);
-                               cert = cert2;
-                               goto next;
-                       }
-               }
-               sk_X509_pop_free(ca, X509_free);
-       }
+       if (ca)
+               install_extra_certs(vpninfo, _("PKCS#12"), ca);
 
        PKCS12_free(p12);
        return ret;
index 80ca23ec09e9db01690fd56ee92221bf5bdaf4a1..5f7a088560b54dba78bb192b7af0ef3b5f610276 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
@@ -2255,8 +2255,8 @@ msgstr "PKCS#12 neobsahoval žádný soukromý klíč!"
 
 #: openssl.c:486
 #, c-format
-msgid "Extra cert from PKCS#12: '%s'\n"
-msgstr "Zvláštní osvědčení od PKCS#12: '%s'\n"
+msgid "Extra cert from %s: '%s'\n"
+msgstr "Zvláštní osvědčení od %s: '%s'\n"
 
 #: openssl.c:512
 msgid "Can't load TPM engine.\n"
index 0f9bc2601486c0eb396089b5fb47ff37f33970e0..9191e2ef26c61db9e903c76a6b2097899cf86e08 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -2254,8 +2254,8 @@ msgstr "PKCS#12 enthält keinen privaten Schlüssel!"
 
 #: openssl.c:486
 #, c-format
-msgid "Extra cert from PKCS#12: '%s'\n"
-msgstr "Zusätzliches Zertifikat von PKCS#12: »%s«\n"
+msgid "Extra cert from %s: '%s'\n"
+msgstr "Zusätzliches Zertifikat von %s: »%s«\n"
 
 #: openssl.c:512
 msgid "Can't load TPM engine.\n"
index 78e8afeda9a76f968afefbd79e039afa63e5f3ef..c219974e130d4c8aeb71a1ab19ee4c233c2eff52 100644 (file)
--- a/po/el.po
+++ b/po/el.po
@@ -2240,8 +2240,8 @@ msgstr "Το PKCS#12 δεν περιείχε κανένα ιδιωτικό κλ
 
 #: openssl.c:486
 #, c-format
-msgid "Extra cert from PKCS#12: '%s'\n"
-msgstr "Πρόσθετο πιστοποιητικό από το PKCS#12: '%s'\n"
+msgid "Extra cert from %s: '%s'\n"
+msgstr "Πρόσθετο πιστοποιητικό από το %s: '%s'\n"
 
 #: openssl.c:512
 msgid "Can't load TPM engine.\n"
index 499e5ba8a7cf97ef35638c82f63157f36f83a87a..c4de6d78267aef483cbaa0524396dba2cc67da6b 100644 (file)
@@ -2204,8 +2204,8 @@ msgstr "PKCS#12 contained no private key!"
 
 #: openssl.c:486
 #, c-format
-msgid "Extra cert from PKCS#12: '%s'\n"
-msgstr "Extra cert from PKCS#12: '%s'\n"
+msgid "Extra cert from %s: '%s'\n"
+msgstr "Extra cert from %s: '%s'\n"
 
 #: openssl.c:512
 msgid "Can't load TPM engine.\n"
index cb9c28541a7c215cbcd624e722c09e70c33ad7d1..1160ebc49961cef0749dddb2cf03783290190abb 100644 (file)
@@ -2205,8 +2205,8 @@ msgstr "PKCS#12 contained no private key!"
 
 #: openssl.c:486
 #, c-format
-msgid "Extra cert from PKCS#12: '%s'\n"
-msgstr "Extra cert from PKCS#12: '%s'\n"
+msgid "Extra cert from %s: '%s'\n"
+msgstr "Extra cert from %s: '%s'\n"
 
 #: openssl.c:512
 msgid "Can't load TPM engine.\n"
index 8b2169ca80a5881153b57b0610ca431c920beac3..47fdb9b7612e1bc0bb0e930d126a25c3a891e45f 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -2282,8 +2282,8 @@ msgstr "PKCS#12 no contiene clave privada"
 
 #: openssl.c:486
 #, c-format
-msgid "Extra cert from PKCS#12: '%s'\n"
-msgstr "Certificado extra desde PKCS#12: «%s»\n"
+msgid "Extra cert from %s: '%s'\n"
+msgstr "Certificado extra desde %s: «%s»\n"
 
 #: openssl.c:512
 msgid "Can't load TPM engine.\n"
index 20c23cceef1305e6e46b65b258937194ee5cb821..919efcb9e31f4b1a411ed7246e2c8f8a1ba02a43 100644 (file)
--- a/po/eu.po
+++ b/po/eu.po
@@ -2232,8 +2232,8 @@ msgstr "PKCS#12 ez dauka gako pribaturik."
 
 #: openssl.c:486
 #, c-format
-msgid "Extra cert from PKCS#12: '%s'\n"
-msgstr "PKCS#12-ren ziurtagiri gehigarria: '%s'\n"
+msgid "Extra cert from %s: '%s'\n"
+msgstr "%s-ren ziurtagiri gehigarria: '%s'\n"
 
 #: openssl.c:512
 msgid "Can't load TPM engine.\n"
index cb51ded69e14ad281982fd71faa922a7b31593c2..99af827eb8b88f106930f64fc0f7ae216bbae97a 100644 (file)
--- a/po/id.po
+++ b/po/id.po
@@ -2248,8 +2248,8 @@ msgstr "PKCS#12 tak memuat kunci privat!"
 
 #: openssl.c:486
 #, c-format
-msgid "Extra cert from PKCS#12: '%s'\n"
-msgstr "Sertifikat ekstra dari PKCS#12: '%s'\n"
+msgid "Extra cert from %s: '%s'\n"
+msgstr "Sertifikat ekstra dari %s: '%s'\n"
 
 #: openssl.c:512
 msgid "Can't load TPM engine.\n"
index 8e8ce09c305d74b825e786a79571eaeda4b8bce3..e7b14d72147dd646e225233de223c0b0d376b828 100644 (file)
--- a/po/lt.po
+++ b/po/lt.po
@@ -2246,8 +2246,8 @@ msgstr "PKCS#12 neturėjo privataus rakto!"
 
 #: openssl.c:486
 #, c-format
-msgid "Extra cert from PKCS#12: '%s'\n"
-msgstr "Papildomas liudijimas iš PKCS#12: „%s“\n"
+msgid "Extra cert from %s: '%s'\n"
+msgstr "Papildomas liudijimas iš %s: „%s“\n"
 
 #: openssl.c:512
 msgid "Can't load TPM engine.\n"
index b43f06e53cb45593a1c7d8a1801b46f76d11d58a..6dcb84cea24e698b587eb44f9351d2d2452d8a7e 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -2220,8 +2220,8 @@ msgstr "PKCS # 12 bevatte geen privé-sleutel!"
 
 #: openssl.c:486
 #, c-format
-msgid "Extra cert from PKCS#12: '%s'\n"
-msgstr "Extra cert van PKCS#12: '%s'\n"
+msgid "Extra cert from %s: '%s'\n"
+msgstr "Extra cert van %s: '%s'\n"
 
 #: openssl.c:512
 msgid "Can't load TPM engine.\n"
index e70094e50de9978369a41c8db43e4073043e7cd2..76d7c125fc3bbd3ec87f787ddad6458b01bc527b 100644 (file)
--- a/po/pt.po
+++ b/po/pt.po
@@ -2208,8 +2208,8 @@ msgstr "PKCS#12 não continha uma chave privada!"
 
 #: openssl.c:486
 #, c-format
-msgid "Extra cert from PKCS#12: '%s'\n"
-msgstr "Certificado extra de PKCS#12: '%s'\n"
+msgid "Extra cert from %s: '%s'\n"
+msgstr "Certificado extra de %s: '%s'\n"
 
 #: openssl.c:512
 msgid "Can't load TPM engine.\n"
index b43c65a94f2ec5d43c079a0fc0be57aac1a7855e..a630f4a4b8e5e478af19ecd38aa17fbc8e45264b 100644 (file)
@@ -2236,8 +2236,8 @@ msgstr "PKCS#12 continha nenhuma chave privada!"
 
 #: openssl.c:486
 #, c-format
-msgid "Extra cert from PKCS#12: '%s'\n"
-msgstr "Certificado extra de PKCS#12: '%s'\n"
+msgid "Extra cert from %s: '%s'\n"
+msgstr "Certificado extra de %s: '%s'\n"
 
 #: openssl.c:512
 msgid "Can't load TPM engine.\n"
index c1a88ad1ac693506b2c76cc2f7f113ca531b50ca..8d179aa3682a43f4e1d6189e93e1ffd33863b9fb 100644 (file)
--- a/po/sl.po
+++ b/po/sl.po
@@ -2244,8 +2244,8 @@ msgstr "PKCS#12 ne vsebuje osebnega ključa!"
 
 #: openssl.c:486
 #, c-format
-msgid "Extra cert from PKCS#12: '%s'\n"
-msgstr "Dodatno potrdilo PKCS#12: '%s'\n"
+msgid "Extra cert from %s: '%s'\n"
+msgstr "Dodatno potrdilo %s: '%s'\n"
 
 #: openssl.c:512
 msgid "Can't load TPM engine.\n"
index de8b849d3a07765dae1e595fa07ece06f9e4b8ce..745fd63ee2c1f5ca2876a44d0432a279569ea85f 100644 (file)
--- a/po/ug.po
+++ b/po/ug.po
@@ -2254,8 +2254,8 @@ msgstr "PKCS#12 دا شەخسىي ئاچقۇچ يوق!"
 
 #: openssl.c:486
 #, c-format
-msgid "Extra cert from PKCS#12: '%s'\n"
-msgstr "PKCS#12 نىڭ زىيادە گۇۋاھنامىسى: '%s'\n"
+msgid "Extra cert from %s: '%s'\n"
+msgstr "%s نىڭ زىيادە گۇۋاھنامىسى: '%s'\n"
 
 #: openssl.c:512
 msgid "Can't load TPM engine.\n"