From d3d8979ff3ef693383407018e21d53e60fe4a410 Mon Sep 17 00:00:00 2001 From: andrew Date: Mon, 3 Feb 2020 06:25:04 +0000 Subject: [PATCH 01/66] 8193255: Root Certificates should be stored in text format and assembled at build time 8235142: JDK-8193255 backport broke bootstrap with JDK 10 Reviewed-by: sgehwolf --- make/CopyFiles.gmk | 8 ++- make/GenerateData.gmk | 16 ++++- make/Tools.gmk | 5 +- make/data/cacerts/README | 10 +++ make/data/cacerts/actalisauthenticationrootca | 40 +++++++++++ make/data/cacerts/addtrustclass1ca | 31 +++++++++ make/data/cacerts/addtrustexternalca | 32 +++++++++ make/data/cacerts/addtrustqualifiedca | 32 +++++++++ make/data/cacerts/affirmtrustcommercialca | 27 ++++++++ make/data/cacerts/affirmtrustnetworkingca | 27 ++++++++ make/data/cacerts/affirmtrustpremiumca | 38 +++++++++++ make/data/cacerts/affirmtrustpremiumeccca | 20 ++++++ make/data/cacerts/baltimorecybertrustca | 28 ++++++++ make/data/cacerts/buypassclass2ca | 38 +++++++++++ make/data/cacerts/buypassclass3ca | 38 +++++++++++ make/data/cacerts/camerfirmachambersca | 49 ++++++++++++++ .../data/cacerts/camerfirmachamberscommerceca | 35 ++++++++++ make/data/cacerts/camerfirmachambersignca | 48 ++++++++++++++ make/data/cacerts/certumca | 26 ++++++++ make/data/cacerts/certumtrustednetworkca | 29 ++++++++ make/data/cacerts/chunghwaepkirootca | 40 +++++++++++ make/data/cacerts/comodoaaaca | 32 +++++++++ make/data/cacerts/comodoeccca | 23 +++++++ make/data/cacerts/comodorsaca | 41 ++++++++++++ make/data/cacerts/digicertassuredidg2 | 29 ++++++++ make/data/cacerts/digicertassuredidg3 | 22 +++++++ make/data/cacerts/digicertassuredidrootca | 29 ++++++++ make/data/cacerts/digicertglobalrootca | 29 ++++++++ make/data/cacerts/digicertglobalrootg2 | 29 ++++++++ make/data/cacerts/digicertglobalrootg3 | 22 +++++++ .../cacerts/digicerthighassuranceevrootca | 30 +++++++++ make/data/cacerts/digicerttrustedrootg4 | 39 +++++++++++ make/data/cacerts/dtrustclass3ca2 | 32 +++++++++ make/data/cacerts/dtrustclass3ca2ev | 32 +++++++++ make/data/cacerts/entrust2048ca | 32 +++++++++ make/data/cacerts/entrustevca | 34 ++++++++++ make/data/cacerts/entrustrootcaec1 | 25 +++++++ make/data/cacerts/entrustrootcag2 | 32 +++++++++ make/data/cacerts/geotrustglobalca | 27 ++++++++ make/data/cacerts/geotrustprimaryca | 28 ++++++++ make/data/cacerts/geotrustprimarycag2 | 24 +++++++ make/data/cacerts/geotrustprimarycag3 | 31 +++++++++ make/data/cacerts/geotrustuniversalca | 38 +++++++++++ make/data/cacerts/globalsignca | 28 ++++++++ make/data/cacerts/globalsigneccrootcar4 | 20 ++++++ make/data/cacerts/globalsigneccrootcar5 | 21 ++++++ make/data/cacerts/globalsignr2ca | 29 ++++++++ make/data/cacerts/globalsignr3ca | 28 ++++++++ make/data/cacerts/globalsignrootcar6 | 39 +++++++++++ make/data/cacerts/godaddyclass2ca | 31 +++++++++ make/data/cacerts/godaddyrootg2ca | 30 +++++++++ make/data/cacerts/identrustcommercial | 38 +++++++++++ make/data/cacerts/identrustdstx3 | 27 ++++++++ make/data/cacerts/identrustpublicca | 38 +++++++++++ make/data/cacerts/keynectisrootca | 30 +++++++++ make/data/cacerts/letsencryptisrgx1 | 38 +++++++++++ make/data/cacerts/luxtrustglobalrootca | 28 ++++++++ make/data/cacerts/quovadisrootca | 41 ++++++++++++ make/data/cacerts/quovadisrootca1g3 | 38 +++++++++++ make/data/cacerts/quovadisrootca2 | 40 +++++++++++ make/data/cacerts/quovadisrootca2g3 | 38 +++++++++++ make/data/cacerts/quovadisrootca3 | 45 +++++++++++++ make/data/cacerts/quovadisrootca3g3 | 38 +++++++++++ make/data/cacerts/secomscrootca1 | 27 ++++++++ make/data/cacerts/secomscrootca2 | 28 ++++++++ make/data/cacerts/securetrustca | 29 ++++++++ make/data/cacerts/soneraclass2ca | 26 ++++++++ make/data/cacerts/starfieldclass2ca | 31 +++++++++ make/data/cacerts/starfieldrootg2ca | 30 +++++++++ make/data/cacerts/starfieldservicesrootg2ca | 31 +++++++++ make/data/cacerts/swisssigngoldg2ca | 40 +++++++++++ make/data/cacerts/swisssignplatinumg2ca | 40 +++++++++++ make/data/cacerts/swisssignsilverg2ca | 40 +++++++++++ make/data/cacerts/teliasonerarootcav1 | 37 +++++++++++ make/data/cacerts/thawtepremiumserverca | 27 ++++++++ make/data/cacerts/thawteprimaryrootca | 32 +++++++++ make/data/cacerts/thawteprimaryrootcag2 | 23 +++++++ make/data/cacerts/thawteprimaryrootcag3 | 32 +++++++++ make/data/cacerts/ttelesecglobalrootclass2ca | 30 +++++++++ make/data/cacerts/ttelesecglobalrootclass3ca | 30 +++++++++ make/data/cacerts/usertrusteccca | 23 +++++++ make/data/cacerts/usertrustrsaca | 41 ++++++++++++ make/data/cacerts/utnuserfirstobjectca | 33 ++++++++++ make/data/cacerts/verisignclass2g2ca | 26 ++++++++ make/data/cacerts/verisignclass3ca | 21 ++++++ make/data/cacerts/verisignclass3g2ca | 26 ++++++++ make/data/cacerts/verisignclass3g3ca | 31 +++++++++ make/data/cacerts/verisignclass3g4ca | 28 ++++++++ make/data/cacerts/verisignclass3g5ca | 35 ++++++++++ make/data/cacerts/verisigntsaca | 24 +++++++ make/data/cacerts/verisignuniversalrootca | 35 ++++++++++ make/data/cacerts/xrampglobalca | 32 +++++++++ .../generatecacerts/GenerateCacerts.java | 62 ++++++++++++++++++ src/share/lib/security/cacerts | Bin 103147 -> 0 bytes 94 files changed, 2888 insertions(+), 4 deletions(-) create mode 100644 make/data/cacerts/README create mode 100644 make/data/cacerts/actalisauthenticationrootca create mode 100644 make/data/cacerts/addtrustclass1ca create mode 100644 make/data/cacerts/addtrustexternalca create mode 100644 make/data/cacerts/addtrustqualifiedca create mode 100644 make/data/cacerts/affirmtrustcommercialca create mode 100644 make/data/cacerts/affirmtrustnetworkingca create mode 100644 make/data/cacerts/affirmtrustpremiumca create mode 100644 make/data/cacerts/affirmtrustpremiumeccca create mode 100644 make/data/cacerts/baltimorecybertrustca create mode 100644 make/data/cacerts/buypassclass2ca create mode 100644 make/data/cacerts/buypassclass3ca create mode 100644 make/data/cacerts/camerfirmachambersca create mode 100644 make/data/cacerts/camerfirmachamberscommerceca create mode 100644 make/data/cacerts/camerfirmachambersignca create mode 100644 make/data/cacerts/certumca create mode 100644 make/data/cacerts/certumtrustednetworkca create mode 100644 make/data/cacerts/chunghwaepkirootca create mode 100644 make/data/cacerts/comodoaaaca create mode 100644 make/data/cacerts/comodoeccca create mode 100644 make/data/cacerts/comodorsaca create mode 100644 make/data/cacerts/digicertassuredidg2 create mode 100644 make/data/cacerts/digicertassuredidg3 create mode 100644 make/data/cacerts/digicertassuredidrootca create mode 100644 make/data/cacerts/digicertglobalrootca create mode 100644 make/data/cacerts/digicertglobalrootg2 create mode 100644 make/data/cacerts/digicertglobalrootg3 create mode 100644 make/data/cacerts/digicerthighassuranceevrootca create mode 100644 make/data/cacerts/digicerttrustedrootg4 create mode 100644 make/data/cacerts/dtrustclass3ca2 create mode 100644 make/data/cacerts/dtrustclass3ca2ev create mode 100644 make/data/cacerts/entrust2048ca create mode 100644 make/data/cacerts/entrustevca create mode 100644 make/data/cacerts/entrustrootcaec1 create mode 100644 make/data/cacerts/entrustrootcag2 create mode 100644 make/data/cacerts/geotrustglobalca create mode 100644 make/data/cacerts/geotrustprimaryca create mode 100644 make/data/cacerts/geotrustprimarycag2 create mode 100644 make/data/cacerts/geotrustprimarycag3 create mode 100644 make/data/cacerts/geotrustuniversalca create mode 100644 make/data/cacerts/globalsignca create mode 100644 make/data/cacerts/globalsigneccrootcar4 create mode 100644 make/data/cacerts/globalsigneccrootcar5 create mode 100644 make/data/cacerts/globalsignr2ca create mode 100644 make/data/cacerts/globalsignr3ca create mode 100644 make/data/cacerts/globalsignrootcar6 create mode 100644 make/data/cacerts/godaddyclass2ca create mode 100644 make/data/cacerts/godaddyrootg2ca create mode 100644 make/data/cacerts/identrustcommercial create mode 100644 make/data/cacerts/identrustdstx3 create mode 100644 make/data/cacerts/identrustpublicca create mode 100644 make/data/cacerts/keynectisrootca create mode 100644 make/data/cacerts/letsencryptisrgx1 create mode 100644 make/data/cacerts/luxtrustglobalrootca create mode 100644 make/data/cacerts/quovadisrootca create mode 100644 make/data/cacerts/quovadisrootca1g3 create mode 100644 make/data/cacerts/quovadisrootca2 create mode 100644 make/data/cacerts/quovadisrootca2g3 create mode 100644 make/data/cacerts/quovadisrootca3 create mode 100644 make/data/cacerts/quovadisrootca3g3 create mode 100644 make/data/cacerts/secomscrootca1 create mode 100644 make/data/cacerts/secomscrootca2 create mode 100644 make/data/cacerts/securetrustca create mode 100644 make/data/cacerts/soneraclass2ca create mode 100644 make/data/cacerts/starfieldclass2ca create mode 100644 make/data/cacerts/starfieldrootg2ca create mode 100644 make/data/cacerts/starfieldservicesrootg2ca create mode 100644 make/data/cacerts/swisssigngoldg2ca create mode 100644 make/data/cacerts/swisssignplatinumg2ca create mode 100644 make/data/cacerts/swisssignsilverg2ca create mode 100644 make/data/cacerts/teliasonerarootcav1 create mode 100644 make/data/cacerts/thawtepremiumserverca create mode 100644 make/data/cacerts/thawteprimaryrootca create mode 100644 make/data/cacerts/thawteprimaryrootcag2 create mode 100644 make/data/cacerts/thawteprimaryrootcag3 create mode 100644 make/data/cacerts/ttelesecglobalrootclass2ca create mode 100644 make/data/cacerts/ttelesecglobalrootclass3ca create mode 100644 make/data/cacerts/usertrusteccca create mode 100644 make/data/cacerts/usertrustrsaca create mode 100644 make/data/cacerts/utnuserfirstobjectca create mode 100644 make/data/cacerts/verisignclass2g2ca create mode 100644 make/data/cacerts/verisignclass3ca create mode 100644 make/data/cacerts/verisignclass3g2ca create mode 100644 make/data/cacerts/verisignclass3g3ca create mode 100644 make/data/cacerts/verisignclass3g4ca create mode 100644 make/data/cacerts/verisignclass3g5ca create mode 100644 make/data/cacerts/verisigntsaca create mode 100644 make/data/cacerts/verisignuniversalrootca create mode 100644 make/data/cacerts/xrampglobalca create mode 100644 make/src/classes/build/tools/generatecacerts/GenerateCacerts.java delete mode 100644 src/share/lib/security/cacerts diff --git a/make/CopyFiles.gmk b/make/CopyFiles.gmk index 10c7103efe..24af1bd60a 100644 --- a/make/CopyFiles.gmk +++ b/make/CopyFiles.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -407,13 +407,17 @@ COPY_FILES += $(POLICY_DST) ########################################################################################## +# CACERTS_FILE is optionally set in configure to override the default cacerts +# which is otherwise generated in GenerateData.gmk CACERTS_SRC := $(CACERTS_FILE) CACERTS_DST := $(JDK_OUTPUTDIR)/lib/security/cacerts $(CACERTS_DST): $(CACERTS_SRC) $(call install-file) -COPY_FILES += $(CACERTS_DST) +ifneq ($(CACERTS_FILE), ) + COPY_FILES += $(CACERTS_DST) +endif ########################################################################################## diff --git a/make/GenerateData.gmk b/make/GenerateData.gmk index 1dc18b3ee2..034acfd49e 100644 --- a/make/GenerateData.gmk +++ b/make/GenerateData.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -52,6 +52,20 @@ GENDATA += $(GENDATA_HTML32DTD) ########################################################################################## +GENDATA_CACERTS_SRC := $(JDK_TOPDIR)/make/data/cacerts/ +GENDATA_CACERTS := $(JDK_OUTPUTDIR)/lib/security/cacerts + +$(GENDATA_CACERTS): $(BUILD_TOOLS) $(wildcard $(GENDATA_CACERTS_SRC)/*) + $(ECHO) $(LOG_INFO) "Generating cacerts" + $(MKDIR) -p $(@D) + $(TOOL_GENERATECACERTS) $(GENDATA_CACERTS_SRC) $@ + +ifeq ($(CACERTS_FILE), ) + GENDATA += $(GENDATA_CACERTS) +endif + +################################################################################ + GENDATA_UNINAME := $(JDK_OUTPUTDIR)/classes/java/lang/uniName.dat $(GENDATA_UNINAME): $(JDK_TOPDIR)/make/data/unicodedata/UnicodeData.txt $(BUILD_TOOLS) diff --git a/make/Tools.gmk b/make/Tools.gmk index b03419a03f..8a9f127bba 100644 --- a/make/Tools.gmk +++ b/make/Tools.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -96,6 +96,9 @@ TOOL_HASHER = $(JAVA_SMALL) -cp $(JDK_OUTPUTDIR)/btclasses \ TOOL_TZDB = $(JAVA_SMALL) -cp $(JDK_OUTPUTDIR)/btclasses \ build.tools.tzdb.TzdbZoneRulesCompiler +TOOL_GENERATECACERTS = $(JAVA_SMALL) -cp $(JDK_OUTPUTDIR)/btclasses \ + build.tools.generatecacerts.GenerateCacerts + # TODO: There are references to the jdwpgen.jar in jdk/make/netbeans/jdwpgen/build.xml # and nbproject/project.properties in the same dir. Needs to be looked at. diff --git a/make/data/cacerts/README b/make/data/cacerts/README new file mode 100644 index 0000000000..25d2d77900 --- /dev/null +++ b/make/data/cacerts/README @@ -0,0 +1,10 @@ +Each file in this directory (except for this README) contains a CA certificate in PEM format. It can be generated with + +keytool -J-Duser.timezone=GMT -printcert -file ca.cert | sed -n '1,4p;8,10p' +keytool -printcert -file ca.cert -rfc + +Please note the textual part before the "-----BEGIN CERTIFICATE-----" line is just a suggestion and not arbitrary. + +After any change in this directory, please remember to update the content of `test/jdk/sun/security/lib/cacerts/VerifyCACerts.java` as well. + +All changes to this directory need to be approved by the Security group. diff --git a/make/data/cacerts/actalisauthenticationrootca b/make/data/cacerts/actalisauthenticationrootca new file mode 100644 index 0000000000..9c1d9a939e --- /dev/null +++ b/make/data/cacerts/actalisauthenticationrootca @@ -0,0 +1,40 @@ +Owner: CN=Actalis Authentication Root CA, O=Actalis S.p.A./03358520967, L=Milan, C=IT +Issuer: CN=Actalis Authentication Root CA, O=Actalis S.p.A./03358520967, L=Milan, C=IT +Serial number: 570a119742c4e3cc +Valid from: Thu Sep 22 11:22:02 GMT 2011 until: Sun Sep 22 11:22:02 GMT 2030 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE +BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w +MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC +SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 +ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv +UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX +4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 +KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ +gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb +rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ +51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F +be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe +KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F +v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn +fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 +jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz +ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL +e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 +jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz +WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V +SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j +pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX +X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok +fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R +K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU +ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU +LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT +LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/addtrustclass1ca b/make/data/cacerts/addtrustclass1ca new file mode 100644 index 0000000000..f96e625cc2 --- /dev/null +++ b/make/data/cacerts/addtrustclass1ca @@ -0,0 +1,31 @@ +Owner: CN=AddTrust Class 1 CA Root, OU=AddTrust TTP Network, O=AddTrust AB, C=SE +Issuer: CN=AddTrust Class 1 CA Root, OU=AddTrust TTP Network, O=AddTrust AB, C=SE +Serial number: 1 +Valid from: Tue May 30 10:38:31 GMT 2000 until: Sat May 30 10:38:31 GMT 2020 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw +MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD +VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul +CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n +tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl +dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch +PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC ++Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O +BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl +MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk +ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X +7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz +43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl +pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA +WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/addtrustexternalca b/make/data/cacerts/addtrustexternalca new file mode 100644 index 0000000000..ad84cad962 --- /dev/null +++ b/make/data/cacerts/addtrustexternalca @@ -0,0 +1,32 @@ +Owner: CN=AddTrust External CA Root, OU=AddTrust External TTP Network, O=AddTrust AB, C=SE +Issuer: CN=AddTrust External CA Root, OU=AddTrust External TTP Network, O=AddTrust AB, C=SE +Serial number: 1 +Valid from: Tue May 30 10:48:38 GMT 2000 until: Sat May 30 10:48:38 GMT 2020 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs +IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 +MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h +bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v +dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt +H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 +uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX +mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX +a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN +E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 +WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD +VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 +Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU +cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx +IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN +AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH +YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC +Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX +c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a +mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/addtrustqualifiedca b/make/data/cacerts/addtrustqualifiedca new file mode 100644 index 0000000000..0c62d44c76 --- /dev/null +++ b/make/data/cacerts/addtrustqualifiedca @@ -0,0 +1,32 @@ +Owner: CN=AddTrust Qualified CA Root, OU=AddTrust TTP Network, O=AddTrust AB, C=SE +Issuer: CN=AddTrust Qualified CA Root, OU=AddTrust TTP Network, O=AddTrust AB, C=SE +Serial number: 1 +Valid from: Tue May 30 10:44:50 GMT 2000 until: Sat May 30 10:44:50 GMT 2020 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 +MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK +EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh +BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq +xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G +87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i +2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U +WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 +0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G +A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr +pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL +ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm +aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv +hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm +hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 +P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y +iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no +xqE= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/affirmtrustcommercialca b/make/data/cacerts/affirmtrustcommercialca new file mode 100644 index 0000000000..5caddfd3a0 --- /dev/null +++ b/make/data/cacerts/affirmtrustcommercialca @@ -0,0 +1,27 @@ +Owner: CN=AffirmTrust Commercial, O=AffirmTrust, C=US +Issuer: CN=AffirmTrust Commercial, O=AffirmTrust, C=US +Serial number: 7777062726a9b17c +Valid from: Fri Jan 29 14:06:06 GMT 2010 until: Tue Dec 31 14:06:06 GMT 2030 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP +Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr +ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL +MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 +yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr +VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ +nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG +XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj +vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt +Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g +N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC +nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/affirmtrustnetworkingca b/make/data/cacerts/affirmtrustnetworkingca new file mode 100644 index 0000000000..c773326d4b --- /dev/null +++ b/make/data/cacerts/affirmtrustnetworkingca @@ -0,0 +1,27 @@ +Owner: CN=AffirmTrust Networking, O=AffirmTrust, C=US +Issuer: CN=AffirmTrust Networking, O=AffirmTrust, C=US +Serial number: 7c4f04391cd4992d +Valid from: Fri Jan 29 14:08:24 GMT 2010 until: Tue Dec 31 14:08:24 GMT 2030 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y +YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua +kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL +QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp +6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG +yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i +QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO +tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu +QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ +Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u +olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 +x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/affirmtrustpremiumca b/make/data/cacerts/affirmtrustpremiumca new file mode 100644 index 0000000000..275b495a25 --- /dev/null +++ b/make/data/cacerts/affirmtrustpremiumca @@ -0,0 +1,38 @@ +Owner: CN=AffirmTrust Premium, O=AffirmTrust, C=US +Issuer: CN=AffirmTrust Premium, O=AffirmTrust, C=US +Serial number: 6d8c1446b1a60aee +Valid from: Fri Jan 29 14:10:36 GMT 2010 until: Mon Dec 31 14:10:36 GMT 2040 +Signature algorithm name: SHA384withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz +dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG +A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U +cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf +qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ +JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ ++jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS +s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 +HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 +70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG +V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S +qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S +5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia +C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX +OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE +FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 +KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B +8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ +MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc +0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ +u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF +u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH +YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 +GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO +RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e +KeC2uAloGRwYQw== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/affirmtrustpremiumeccca b/make/data/cacerts/affirmtrustpremiumeccca new file mode 100644 index 0000000000..d0fcc1e779 --- /dev/null +++ b/make/data/cacerts/affirmtrustpremiumeccca @@ -0,0 +1,20 @@ +Owner: CN=AffirmTrust Premium ECC, O=AffirmTrust, C=US +Issuer: CN=AffirmTrust Premium ECC, O=AffirmTrust, C=US +Serial number: 7497258ac73f7a54 +Valid from: Fri Jan 29 14:20:24 GMT 2010 until: Mon Dec 31 14:20:24 GMT 2040 +Signature algorithm name: SHA384withECDSA +Subject Public Key Algorithm: 384-bit EC (secp384r1) key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC +VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ +cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ +BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt +VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D +0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 +ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G +A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs +aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I +flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/baltimorecybertrustca b/make/data/cacerts/baltimorecybertrustca new file mode 100644 index 0000000000..b3cf6547c1 --- /dev/null +++ b/make/data/cacerts/baltimorecybertrustca @@ -0,0 +1,28 @@ +Owner: CN=Baltimore CyberTrust Root, OU=CyberTrust, O=Baltimore, C=IE +Issuer: CN=Baltimore CyberTrust Root, OU=CyberTrust, O=Baltimore, C=IE +Serial number: 20000b9 +Valid from: Fri May 12 18:46:00 GMT 2000 until: Mon May 12 23:59:00 GMT 2025 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX +DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y +ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy +VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr +mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr +IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK +mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu +XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy +dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye +jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 +BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 +DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 +9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx +jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 +Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz +ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS +R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- diff --git a/make/data/cacerts/buypassclass2ca b/make/data/cacerts/buypassclass2ca new file mode 100644 index 0000000000..a2e9b2fd01 --- /dev/null +++ b/make/data/cacerts/buypassclass2ca @@ -0,0 +1,38 @@ +Owner: CN=Buypass Class 2 Root CA, O=Buypass AS-983163327, C=NO +Issuer: CN=Buypass Class 2 Root CA, O=Buypass AS-983163327, C=NO +Serial number: 2 +Valid from: Tue Oct 26 08:38:03 GMT 2010 until: Fri Oct 26 08:38:03 GMT 2040 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr +6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV +L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 +1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx +MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ +QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB +arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr +Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi +FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS +P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN +9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz +uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h +9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t +OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo ++fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 +KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 +DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us +H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ +I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 +5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h +3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz +Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/buypassclass3ca b/make/data/cacerts/buypassclass3ca new file mode 100644 index 0000000000..f74c6c2498 --- /dev/null +++ b/make/data/cacerts/buypassclass3ca @@ -0,0 +1,38 @@ +Owner: CN=Buypass Class 3 Root CA, O=Buypass AS-983163327, C=NO +Issuer: CN=Buypass Class 3 Root CA, O=Buypass AS-983163327, C=NO +Serial number: 2 +Valid from: Tue Oct 26 08:28:58 GMT 2010 until: Fri Oct 26 08:28:58 GMT 2040 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y +ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E +N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 +tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX +0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c +/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X +KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY +zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS +O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D +34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP +K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv +Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj +QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS +IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 +HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa +O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv +033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u +dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE +kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 +3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD +u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq +4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/camerfirmachambersca b/make/data/cacerts/camerfirmachambersca new file mode 100644 index 0000000000..70d793e25a --- /dev/null +++ b/make/data/cacerts/camerfirmachambersca @@ -0,0 +1,49 @@ +Owner: CN=Chambers of Commerce Root - 2008, O=AC Camerfirma S.A., SERIALNUMBER=A82743287, L=Madrid (see current address at www.camerfirma.com/address), C=EU +Issuer: CN=Chambers of Commerce Root - 2008, O=AC Camerfirma S.A., SERIALNUMBER=A82743287, L=Madrid (see current address at www.camerfirma.com/address), C=EU +Serial number: a3da427ea4b1aeda +Valid from: Fri Aug 01 12:29:50 GMT 2008 until: Sat Jul 31 12:29:50 GMT 2038 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD +VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 +IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 +MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz +IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz +MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj +dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw +EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp +MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9 +28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq +VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q +DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR +5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL +ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a +Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl +UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s ++12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5 +Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx +hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV +HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1 ++HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN +YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t +L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy +ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt +IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV +HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w +DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW +PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF +5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1 +glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH +FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2 +pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD +xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG +tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq +jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De +fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ +d0jQ +-----END CERTIFICATE----- diff --git a/make/data/cacerts/camerfirmachamberscommerceca b/make/data/cacerts/camerfirmachamberscommerceca new file mode 100644 index 0000000000..b92255f770 --- /dev/null +++ b/make/data/cacerts/camerfirmachamberscommerceca @@ -0,0 +1,35 @@ +Owner: CN=Chambers of Commerce Root, OU=http://www.chambersign.org, O=AC Camerfirma SA CIF A82743287, C=EU +Issuer: CN=Chambers of Commerce Root, OU=http://www.chambersign.org, O=AC Camerfirma SA CIF A82743287, C=EU +Serial number: 0 +Valid from: Tue Sep 30 16:13:43 GMT 2003 until: Wed Sep 30 16:13:44 GMT 2037 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEn +MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL +ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMg +b2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAxNjEzNDNaFw0zNzA5MzAxNjEzNDRa +MH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBB +ODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIw +IAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0B +AQEFAAOCAQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtb +unXF/KGIJPov7coISjlUxFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0d +BmpAPrMMhe5cG3nCYsS4No41XQEMIwRHNaqbYE6gZj3LJgqcQKH0XZi/caulAGgq +7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jWDA+wWFjbw2Y3npuRVDM3 +0pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFVd9oKDMyX +roDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIG +A1UdEwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5j +aGFtYmVyc2lnbi5vcmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p +26EpW1eLTXYGduHRooowDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIA +BzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hhbWJlcnNpZ24ub3JnMCcGA1Ud +EgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYDVR0gBFEwTzBN +BgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz +aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEB +AAxBl8IahsAifJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZd +p0AJPaxJRUXcLo0waLIJuvvDL8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi +1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wNUPf6s+xCX6ndbcj0dc97wXImsQEc +XCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/nADydb47kMgkdTXg0 +eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1erfu +tGWaIZDgqtCYvDi1czyL+Nw= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/camerfirmachambersignca b/make/data/cacerts/camerfirmachambersignca new file mode 100644 index 0000000000..935eea9c21 --- /dev/null +++ b/make/data/cacerts/camerfirmachambersignca @@ -0,0 +1,48 @@ +Owner: CN=Global Chambersign Root - 2008, O=AC Camerfirma S.A., SERIALNUMBER=A82743287, L=Madrid (see current address at www.camerfirma.com/address), C=EU +Issuer: CN=Global Chambersign Root - 2008, O=AC Camerfirma S.A., SERIALNUMBER=A82743287, L=Madrid (see current address at www.camerfirma.com/address), C=EU +Serial number: c9cdd3e9d57d23ce +Valid from: Fri Aug 01 12:31:40 GMT 2008 until: Sat Jul 31 12:31:40 GMT 2038 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD +VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 +IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 +MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx +MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy +cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG +A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl +BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI +hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed +KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7 +G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2 +zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4 +ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG +HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2 +Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V +yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e +beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r +6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog +zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW +BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr +ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp +ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk +cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt +YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC +CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow +KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI +hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ +UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz +X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x +fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz +a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd +Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd +SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O +AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso +M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge +v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- diff --git a/make/data/cacerts/certumca b/make/data/cacerts/certumca new file mode 100644 index 0000000000..4149653397 --- /dev/null +++ b/make/data/cacerts/certumca @@ -0,0 +1,26 @@ +Owner: CN=Certum CA, O=Unizeto Sp. z o.o., C=PL +Issuer: CN=Certum CA, O=Unizeto Sp. z o.o., C=PL +Serial number: 10020 +Valid from: Tue Jun 11 10:46:39 GMT 2002 until: Fri Jun 11 10:46:39 GMT 2027 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM +MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD +QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM +MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD +QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E +jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo +ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI +ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu +Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg +AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7 +HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA +uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa +TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg +xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q +CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x +O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs +6GAqm4VKQPNriiTsBhYscw== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/certumtrustednetworkca b/make/data/cacerts/certumtrustednetworkca new file mode 100644 index 0000000000..db35af834b --- /dev/null +++ b/make/data/cacerts/certumtrustednetworkca @@ -0,0 +1,29 @@ +Owner: CN=Certum Trusted Network CA, OU=Certum Certification Authority, O=Unizeto Technologies S.A., C=PL +Issuer: CN=Certum Trusted Network CA, OU=Certum Certification Authority, O=Unizeto Technologies S.A., C=PL +Serial number: 444c0 +Valid from: Wed Oct 22 12:07:37 GMT 2008 until: Mon Dec 31 12:07:37 GMT 2029 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM +MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D +ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU +cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 +WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg +Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw +IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH +UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM +TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU +BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM +kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x +AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV +HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y +sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL +I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 +J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY +VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/chunghwaepkirootca b/make/data/cacerts/chunghwaepkirootca new file mode 100644 index 0000000000..a755a44f30 --- /dev/null +++ b/make/data/cacerts/chunghwaepkirootca @@ -0,0 +1,40 @@ +Owner: OU=ePKI Root Certification Authority, O="Chunghwa Telecom Co., Ltd.", C=TW +Issuer: OU=ePKI Root Certification Authority, O="Chunghwa Telecom Co., Ltd.", C=TW +Serial number: 15c8bd65475cafb897005ee406d2bc9d +Valid from: Mon Dec 20 02:31:27 GMT 2004 until: Wed Dec 20 02:31:27 GMT 2034 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe +MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 +ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw +IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL +SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH +SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh +ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X +DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1 +TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ +fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA +sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU +WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS +nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH +dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip +NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC +AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF +MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB +uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl +PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP +JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/ +gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2 +j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6 +5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB +o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS +/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z +Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE +W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D +hNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/comodoaaaca b/make/data/cacerts/comodoaaaca new file mode 100644 index 0000000000..76fc7fcf5f --- /dev/null +++ b/make/data/cacerts/comodoaaaca @@ -0,0 +1,32 @@ +Owner: CN=AAA Certificate Services, O=Comodo CA Limited, L=Salford, ST=Greater Manchester, C=GB +Issuer: CN=AAA Certificate Services, O=Comodo CA Limited, L=Salford, ST=Greater Manchester, C=GB +Serial number: 1 +Valid from: Thu Jan 01 00:00:00 GMT 2004 until: Sun Dec 31 23:59:59 GMT 2028 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj +YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM +GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua +BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe +3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 +YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR +rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm +ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU +oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v +QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t +b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF +AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q +GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 +G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi +l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 +smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/comodoeccca b/make/data/cacerts/comodoeccca new file mode 100644 index 0000000000..19f9f0b7ec --- /dev/null +++ b/make/data/cacerts/comodoeccca @@ -0,0 +1,23 @@ +Owner: CN=COMODO ECC Certification Authority, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB +Issuer: CN=COMODO ECC Certification Authority, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB +Serial number: 1f47afaa62007050544c019e9b63992a +Valid from: Thu Mar 06 00:00:00 GMT 2008 until: Mon Jan 18 23:59:59 GMT 2038 +Signature algorithm name: SHA384withECDSA +Subject Public Key Algorithm: 384-bit EC (secp384r1) key +Version: 3 +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT +IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw +MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy +ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N +T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR +FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J +cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW +BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm +fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv +GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/comodorsaca b/make/data/cacerts/comodorsaca new file mode 100644 index 0000000000..f396f6d27d --- /dev/null +++ b/make/data/cacerts/comodorsaca @@ -0,0 +1,41 @@ +Owner: CN=COMODO RSA Certification Authority, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB +Issuer: CN=COMODO RSA Certification Authority, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB +Serial number: 4caaf9cadb636fe01ff74ed85b03869d +Valid from: Tue Jan 19 00:00:00 GMT 2010 until: Mon Jan 18 23:59:59 GMT 2038 +Signature algorithm name: SHA384withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB +hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV +BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT +EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR +6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X +pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC +9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV +/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf +Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z ++pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w +qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah +SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC +u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf +Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq +crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E +FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB +/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl +wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM +4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV +2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna +FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ +CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK +boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke +jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL +S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb +QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl +0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB +NVOFBkpdn627G190 +-----END CERTIFICATE----- diff --git a/make/data/cacerts/digicertassuredidg2 b/make/data/cacerts/digicertassuredidg2 new file mode 100644 index 0000000000..8b53c2c49f --- /dev/null +++ b/make/data/cacerts/digicertassuredidg2 @@ -0,0 +1,29 @@ +Owner: CN=DigiCert Assured ID Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US +Issuer: CN=DigiCert Assured ID Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US +Serial number: b931c3ad63967ea6723bfc3af9af44b +Valid from: Thu Aug 01 12:00:00 GMT 2013 until: Fri Jan 15 12:00:00 GMT 2038 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA +n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc +biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp +EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA +bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu +YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW +BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI +QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I +0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni +lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 +B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv +ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/digicertassuredidg3 b/make/data/cacerts/digicertassuredidg3 new file mode 100644 index 0000000000..120e0a5fff --- /dev/null +++ b/make/data/cacerts/digicertassuredidg3 @@ -0,0 +1,22 @@ +Owner: CN=DigiCert Assured ID Root G3, OU=www.digicert.com, O=DigiCert Inc, C=US +Issuer: CN=DigiCert Assured ID Root G3, OU=www.digicert.com, O=DigiCert Inc, C=US +Serial number: ba15afa1ddfa0b54944afcd24a06cec +Valid from: Thu Aug 01 12:00:00 GMT 2013 until: Fri Jan 15 12:00:00 GMT 2038 +Signature algorithm name: SHA384withECDSA +Subject Public Key Algorithm: 384-bit EC (secp384r1) key +Version: 3 +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg +RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf +Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q +RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD +AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY +JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv +6pZjamVFkpUBtA== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/digicertassuredidrootca b/make/data/cacerts/digicertassuredidrootca new file mode 100644 index 0000000000..41edfc5580 --- /dev/null +++ b/make/data/cacerts/digicertassuredidrootca @@ -0,0 +1,29 @@ +Owner: CN=DigiCert Assured ID Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US +Issuer: CN=DigiCert Assured ID Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US +Serial number: ce7e0e517d846fe8fe560fc1bf03039 +Valid from: Fri Nov 10 00:00:00 GMT 2006 until: Mon Nov 10 00:00:00 GMT 2031 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c +JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP +mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ +wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 +VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ +AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB +AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun +pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC +dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf +fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm +NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx +H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/digicertglobalrootca b/make/data/cacerts/digicertglobalrootca new file mode 100644 index 0000000000..2838b8ead5 --- /dev/null +++ b/make/data/cacerts/digicertglobalrootca @@ -0,0 +1,29 @@ +Owner: CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US +Issuer: CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US +Serial number: 83be056904246b1a1756ac95991c74a +Valid from: Fri Nov 10 00:00:00 GMT 2006 until: Mon Nov 10 00:00:00 GMT 2031 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB +CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 +nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt +43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P +T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 +gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR +TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw +DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr +hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg +06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF +PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls +YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/digicertglobalrootg2 b/make/data/cacerts/digicertglobalrootg2 new file mode 100644 index 0000000000..99bc121c03 --- /dev/null +++ b/make/data/cacerts/digicertglobalrootg2 @@ -0,0 +1,29 @@ +Owner: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US +Issuer: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US +Serial number: 33af1e6a711a9a0bb2864b11d09fae5 +Valid from: Thu Aug 01 12:00:00 GMT 2013 until: Fri Jan 15 12:00:00 GMT 2038 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI +2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx +1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ +q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz +tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ +vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV +5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY +1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 +NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG +Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 +8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe +pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/digicertglobalrootg3 b/make/data/cacerts/digicertglobalrootg3 new file mode 100644 index 0000000000..fbcfd3fc6e --- /dev/null +++ b/make/data/cacerts/digicertglobalrootg3 @@ -0,0 +1,22 @@ +Owner: CN=DigiCert Global Root G3, OU=www.digicert.com, O=DigiCert Inc, C=US +Issuer: CN=DigiCert Global Root G3, OU=www.digicert.com, O=DigiCert Inc, C=US +Serial number: 55556bcf25ea43535c3a40fd5ab4572 +Valid from: Thu Aug 01 12:00:00 GMT 2013 until: Fri Jan 15 12:00:00 GMT 2038 +Signature algorithm name: SHA384withECDSA +Subject Public Key Algorithm: 384-bit EC (secp384r1) key +Version: 3 +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe +Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw +EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x +IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG +fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO +Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd +BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx +AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ +oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 +sycX +-----END CERTIFICATE----- diff --git a/make/data/cacerts/digicerthighassuranceevrootca b/make/data/cacerts/digicerthighassuranceevrootca new file mode 100644 index 0000000000..13e6d85a54 --- /dev/null +++ b/make/data/cacerts/digicerthighassuranceevrootca @@ -0,0 +1,30 @@ +Owner: CN=DigiCert High Assurance EV Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US +Issuer: CN=DigiCert High Assurance EV Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US +Serial number: 2ac5c266a0b409b8f0b79f2ae462577 +Valid from: Fri Nov 10 00:00:00 GMT 2006 until: Mon Nov 10 00:00:00 GMT 2031 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm ++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW +PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM +xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB +Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 +hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg +EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA +FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec +nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z +eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF +hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 +Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep ++OkuE6N36B9K +-----END CERTIFICATE----- diff --git a/make/data/cacerts/digicerttrustedrootg4 b/make/data/cacerts/digicerttrustedrootg4 new file mode 100644 index 0000000000..3079e552a1 --- /dev/null +++ b/make/data/cacerts/digicerttrustedrootg4 @@ -0,0 +1,39 @@ +Owner: CN=DigiCert Trusted Root G4, OU=www.digicert.com, O=DigiCert Inc, C=US +Issuer: CN=DigiCert Trusted Root G4, OU=www.digicert.com, O=DigiCert Inc, C=US +Serial number: 59b1b579e8e2132e23907bda777755c +Valid from: Thu Aug 01 12:00:00 GMT 2013 until: Fri Jan 15 12:00:00 GMT 2038 +Signature algorithm name: SHA384withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg +RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y +ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If +xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV +ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO +DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ +jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ +CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi +EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM +fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY +uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK +chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t +9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 +SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd ++SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc +fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa +sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N +cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N +0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie +4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI +r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 +/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm +gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ +-----END CERTIFICATE----- diff --git a/make/data/cacerts/dtrustclass3ca2 b/make/data/cacerts/dtrustclass3ca2 new file mode 100644 index 0000000000..321c8fd002 --- /dev/null +++ b/make/data/cacerts/dtrustclass3ca2 @@ -0,0 +1,32 @@ +Owner: CN=D-TRUST Root Class 3 CA 2 2009, O=D-Trust GmbH, C=DE +Issuer: CN=D-TRUST Root Class 3 CA 2 2009, O=D-Trust GmbH, C=DE +Serial number: 983f3 +Valid from: Thu Nov 05 08:35:58 GMT 2009 until: Mon Nov 05 08:35:58 GMT 2029 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha +ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM +HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 +UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 +tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R +ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM +lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp +/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G +A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy +MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl +cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js +L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL +BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni +acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K +zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 +PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y +Johw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/dtrustclass3ca2ev b/make/data/cacerts/dtrustclass3ca2ev new file mode 100644 index 0000000000..191a1882a3 --- /dev/null +++ b/make/data/cacerts/dtrustclass3ca2ev @@ -0,0 +1,32 @@ +Owner: CN=D-TRUST Root Class 3 CA 2 EV 2009, O=D-Trust GmbH, C=DE +Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009, O=D-Trust GmbH, C=DE +Serial number: 983f4 +Valid from: Thu Nov 05 08:50:46 GMT 2009 until: Mon Nov 05 08:50:46 GMT 2029 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw +NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV +BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn +ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 +3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z +qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR +p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 +HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw +ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea +HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw +Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh +c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E +RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt +dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku +Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp +3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF +CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na +xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX +KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- diff --git a/make/data/cacerts/entrust2048ca b/make/data/cacerts/entrust2048ca new file mode 100644 index 0000000000..0dd198d340 --- /dev/null +++ b/make/data/cacerts/entrust2048ca @@ -0,0 +1,32 @@ +Owner: CN=Entrust.net Certification Authority (2048), OU=(c) 1999 Entrust.net Limited, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), O=Entrust.net +Issuer: CN=Entrust.net Certification Authority (2048), OU=(c) 1999 Entrust.net Limited, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), O=Entrust.net +Serial number: 3863def8 +Valid from: Fri Dec 24 17:50:51 GMT 1999 until: Tue Jul 24 14:15:12 GMT 2029 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML +RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp +bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 +IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3 +MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 +LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp +YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG +A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq +K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe +sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX +MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT +XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ +HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH +4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub +j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo +U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b +u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+ +bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er +fF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/entrustevca b/make/data/cacerts/entrustevca new file mode 100644 index 0000000000..6c2c50968b --- /dev/null +++ b/make/data/cacerts/entrustevca @@ -0,0 +1,34 @@ +Owner: CN=Entrust Root Certification Authority, OU="(c) 2006 Entrust, Inc.", OU=www.entrust.net/CPS is incorporated by reference, O="Entrust, Inc.", C=US +Issuer: CN=Entrust Root Certification Authority, OU="(c) 2006 Entrust, Inc.", OU=www.entrust.net/CPS is incorporated by reference, O="Entrust, Inc.", C=US +Serial number: 456b5054 +Valid from: Mon Nov 27 20:23:42 GMT 2006 until: Fri Nov 27 20:53:42 GMT 2026 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw +NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw +NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy +ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV +BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo +Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 +4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 +KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI +rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi +94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB +sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi +gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo +kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE +vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t +O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua +AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP +9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ +eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m +0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- diff --git a/make/data/cacerts/entrustrootcaec1 b/make/data/cacerts/entrustrootcaec1 new file mode 100644 index 0000000000..58d29d53ed --- /dev/null +++ b/make/data/cacerts/entrustrootcaec1 @@ -0,0 +1,25 @@ +Owner: CN=Entrust Root Certification Authority - EC1, OU="(c) 2012 Entrust, Inc. - for authorized use only", OU=See www.entrust.net/legal-terms, O="Entrust, Inc.", C=US +Issuer: CN=Entrust Root Certification Authority - EC1, OU="(c) 2012 Entrust, Inc. - for authorized use only", OU=See www.entrust.net/legal-terms, O="Entrust, Inc.", C=US +Serial number: a68b79290000000050d091f9 +Valid from: Tue Dec 18 15:25:36 GMT 2012 until: Fri Dec 18 15:55:36 GMT 2037 +Signature algorithm name: SHA384withECDSA +Subject Public Key Algorithm: 384-bit EC (secp384r1) key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG +A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3 +d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu +dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq +RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy +MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD +VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 +L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g +Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi +A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt +ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH +Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC +R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX +hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- diff --git a/make/data/cacerts/entrustrootcag2 b/make/data/cacerts/entrustrootcag2 new file mode 100644 index 0000000000..48ac89267b --- /dev/null +++ b/make/data/cacerts/entrustrootcag2 @@ -0,0 +1,32 @@ +Owner: CN=Entrust Root Certification Authority - G2, OU="(c) 2009 Entrust, Inc. - for authorized use only", OU=See www.entrust.net/legal-terms, O="Entrust, Inc.", C=US +Issuer: CN=Entrust Root Certification Authority - G2, OU="(c) 2009 Entrust, Inc. - for authorized use only", OU=See www.entrust.net/legal-terms, O="Entrust, Inc.", C=US +Serial number: 4a538c28 +Valid from: Tue Jul 07 17:25:54 GMT 2009 until: Sat Dec 07 17:55:54 GMT 2030 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 +cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs +IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz +dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy +NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu +dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt +dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 +aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T +RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN +cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW +wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 +U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 +jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN +BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ +jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v +1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R +nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH +VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/geotrustglobalca b/make/data/cacerts/geotrustglobalca new file mode 100644 index 0000000000..7f8bf9a663 --- /dev/null +++ b/make/data/cacerts/geotrustglobalca @@ -0,0 +1,27 @@ +Owner: CN=GeoTrust Global CA, O=GeoTrust Inc., C=US +Issuer: CN=GeoTrust Global CA, O=GeoTrust Inc., C=US +Serial number: 23456 +Valid from: Tue May 21 04:00:00 GMT 2002 until: Sat May 21 04:00:00 GMT 2022 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg +R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 +9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq +fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv +iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU +1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ +bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW +MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA +ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l +uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn +Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS +tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF +PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un +hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV +5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/geotrustprimaryca b/make/data/cacerts/geotrustprimaryca new file mode 100644 index 0000000000..0f680ca16a --- /dev/null +++ b/make/data/cacerts/geotrustprimaryca @@ -0,0 +1,28 @@ +Owner: CN=GeoTrust Primary Certification Authority, O=GeoTrust Inc., C=US +Issuer: CN=GeoTrust Primary Certification Authority, O=GeoTrust Inc., C=US +Serial number: 18acb56afd69b6153a636cafdafac4a1 +Valid from: Mon Nov 27 00:00:00 GMT 2006 until: Wed Jul 16 23:59:59 GMT 2036 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY +MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo +R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx +MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 +AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA +ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 +7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W +kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI +mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ +KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 +6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl +4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K +oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj +UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU +AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/geotrustprimarycag2 b/make/data/cacerts/geotrustprimarycag2 new file mode 100644 index 0000000000..0d1020aac8 --- /dev/null +++ b/make/data/cacerts/geotrustprimarycag2 @@ -0,0 +1,24 @@ +Owner: CN=GeoTrust Primary Certification Authority - G2, OU=(c) 2007 GeoTrust Inc. - For authorized use only, O=GeoTrust Inc., C=US +Issuer: CN=GeoTrust Primary Certification Authority - G2, OU=(c) 2007 GeoTrust Inc. - For authorized use only, O=GeoTrust Inc., C=US +Serial number: 3cb2f4480a00e2feeb243b5e603ec36b +Valid from: Mon Nov 05 00:00:00 GMT 2007 until: Mon Jan 18 23:59:59 GMT 2038 +Signature algorithm name: SHA384withECDSA +Subject Public Key Algorithm: 384-bit EC (secp384r1) key +Version: 3 +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL +MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj +KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2 +MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw +NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV +BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH +MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL +So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal +tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG +CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT +qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz +rD6ogRLQy7rQkgu2npaqBA+K +-----END CERTIFICATE----- diff --git a/make/data/cacerts/geotrustprimarycag3 b/make/data/cacerts/geotrustprimarycag3 new file mode 100644 index 0000000000..1ccb56fb17 --- /dev/null +++ b/make/data/cacerts/geotrustprimarycag3 @@ -0,0 +1,31 @@ +Owner: CN=GeoTrust Primary Certification Authority - G3, OU=(c) 2008 GeoTrust Inc. - For authorized use only, O=GeoTrust Inc., C=US +Issuer: CN=GeoTrust Primary Certification Authority - G3, OU=(c) 2008 GeoTrust Inc. - For authorized use only, O=GeoTrust Inc., C=US +Serial number: 15ac6e9419b2794b41f627a9c3180f1f +Valid from: Wed Apr 02 00:00:00 GMT 2008 until: Tue Dec 01 23:59:59 GMT 2037 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT +MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ +BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 +BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz ++uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm +hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn +5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W +JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL +DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC +huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB +AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB +zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN +kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH +SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G +spki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- diff --git a/make/data/cacerts/geotrustuniversalca b/make/data/cacerts/geotrustuniversalca new file mode 100644 index 0000000000..6e049bf707 --- /dev/null +++ b/make/data/cacerts/geotrustuniversalca @@ -0,0 +1,38 @@ +Owner: CN=GeoTrust Universal CA, O=GeoTrust Inc., C=US +Issuer: CN=GeoTrust Universal CA, O=GeoTrust Inc., C=US +Serial number: 1 +Valid from: Thu Mar 04 05:00:00 GMT 2004 until: Sun Mar 04 05:00:00 GMT 2029 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy +c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0 +IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV +VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8 +cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT +QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh +F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v +c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w +mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd +VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX +teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ +f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe +Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+ +nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB +/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY +MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG +9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX +IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn +ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z +uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN +Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja +QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW +koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9 +ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt +DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm +bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/globalsignca b/make/data/cacerts/globalsignca new file mode 100644 index 0000000000..48a7dec957 --- /dev/null +++ b/make/data/cacerts/globalsignca @@ -0,0 +1,28 @@ +Owner: CN=GlobalSign Root CA, OU=Root CA, O=GlobalSign nv-sa, C=BE +Issuer: CN=GlobalSign Root CA, OU=Root CA, O=GlobalSign nv-sa, C=BE +Serial number: 40000000001154b5ac394 +Valid from: Tue Sep 01 12:00:00 GMT 1998 until: Fri Jan 28 12:00:00 GMT 2028 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw +MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT +aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ +jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp +xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp +1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG +snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ +U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 +9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B +AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz +yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE +38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP +AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad +DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME +HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/globalsigneccrootcar4 b/make/data/cacerts/globalsigneccrootcar4 new file mode 100644 index 0000000000..135c0c046a --- /dev/null +++ b/make/data/cacerts/globalsigneccrootcar4 @@ -0,0 +1,20 @@ +Owner: CN=GlobalSign, O=GlobalSign, OU=GlobalSign ECC Root CA - R4 +Issuer: CN=GlobalSign, O=GlobalSign, OU=GlobalSign ECC Root CA - R4 +Serial number: 2a38a41c960a04de42b228a50be8349802 +Valid from: Tue Nov 13 00:00:00 GMT 2012 until: Tue Jan 19 03:14:07 GMT 2038 +Signature algorithm name: SHA256withECDSA +Subject Public Key Algorithm: 256-bit EC (secp256r1) key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprlOQcJ +FspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61F +uOJAf/sKbvu+M8k8o4TVMAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGX +kPoUVy0D7O48027KqGx2vKLeuwIgJ6iFJzWbVsaj8kfSt24bAgAXqmemFZHe+pTs +ewv4n4Q= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/globalsigneccrootcar5 b/make/data/cacerts/globalsigneccrootcar5 new file mode 100644 index 0000000000..7156e83b9f --- /dev/null +++ b/make/data/cacerts/globalsigneccrootcar5 @@ -0,0 +1,21 @@ +Owner: CN=GlobalSign, O=GlobalSign, OU=GlobalSign ECC Root CA - R5 +Issuer: CN=GlobalSign, O=GlobalSign, OU=GlobalSign ECC Root CA - R5 +Serial number: 605949e0262ebb55f90a778a71f94ad86c +Valid from: Tue Nov 13 00:00:00 GMT 2012 until: Tue Jan 19 03:14:07 GMT 2038 +Signature algorithm name: SHA384withECDSA +Subject Public Key Algorithm: 384-bit EC (secp384r1) key +Version: 3 +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc +8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke +hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI +KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg +515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO +xwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- diff --git a/make/data/cacerts/globalsignr2ca b/make/data/cacerts/globalsignr2ca new file mode 100644 index 0000000000..746d1fab98 --- /dev/null +++ b/make/data/cacerts/globalsignr2ca @@ -0,0 +1,29 @@ +Owner: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R2 +Issuer: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R2 +Serial number: 400000000010f8626e60d +Valid from: Fri Dec 15 08:00:00 GMT 2006 until: Wed Dec 15 08:00:00 GMT 2021 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 +MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL +v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 +eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq +tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd +C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa +zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB +mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH +V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n +bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG +3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs +J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO +291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS +ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd +AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/globalsignr3ca b/make/data/cacerts/globalsignr3ca new file mode 100644 index 0000000000..44dce028ab --- /dev/null +++ b/make/data/cacerts/globalsignr3ca @@ -0,0 +1,28 @@ +Owner: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R3 +Issuer: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R3 +Serial number: 4000000000121585308a2 +Valid from: Wed Mar 18 10:00:00 GMT 2009 until: Sun Mar 18 10:00:00 GMT 2029 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 +MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 +RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT +gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm +KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd +QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ +XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o +LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU +RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp +jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK +6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX +mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs +Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH +WD9f +-----END CERTIFICATE----- diff --git a/make/data/cacerts/globalsignrootcar6 b/make/data/cacerts/globalsignrootcar6 new file mode 100644 index 0000000000..50f748df22 --- /dev/null +++ b/make/data/cacerts/globalsignrootcar6 @@ -0,0 +1,39 @@ +Owner: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R6 +Issuer: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R6 +Serial number: 45e6bb038333c3856548e6ff4551 +Valid from: Wed Dec 10 00:00:00 GMT 2014 until: Sun Dec 10 00:00:00 GMT 2034 +Signature algorithm name: SHA384withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEg +MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2Jh +bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQx +MjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjET +MBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQssgrRI +xutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1k +ZguSgMpE3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxD +aNc9PIrFsmbVkJq3MQbFvuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJw +LnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqMPKq0pPbzlUoSB239jLKJz9CgYXfIWHSw +1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+azayOeSsJDa38O+2HBNX +k7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05OWgtH8wY2 +SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/h +bguyCLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4n +WUx2OVvq+aWh2IMP0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpY +rZxCRXluDocZXFSxZba/jJvcE+kNb7gu3GduyYsRtYQUigAZcIN5kZeR1Bonvzce +MgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNVHSMEGDAWgBSu +bAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN +nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGt +Ixg93eFyRJa0lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr61 +55wsTLxDKZmOMNOsIeDjHfrYBzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLj +vUYAGm0CuiVdjaExUd1URhxN25mW7xocBFymFe944Hn+Xds+qkxV/ZoVqW/hpvvf +cDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr3TsTjxKM4kEaSHpz +oHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB10jZp +nOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfs +pA9MRf/TuTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+v +JJUEeKgDu+6B5dpffItKoZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R +8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+tJDfLRVpOoERIyNiwmcUVhAn21klJwGW4 +5hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/godaddyclass2ca b/make/data/cacerts/godaddyclass2ca new file mode 100644 index 0000000000..a5f5746563 --- /dev/null +++ b/make/data/cacerts/godaddyclass2ca @@ -0,0 +1,31 @@ +Owner: OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US +Issuer: OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US +Serial number: 0 +Valid from: Tue Jun 29 17:06:20 GMT 2004 until: Thu Jun 29 17:06:20 GMT 2034 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh +MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE +YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 +MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo +ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg +MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN +ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA +PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w +wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi +EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY +avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ +YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE +sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h +/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 +IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy +OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P +TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER +dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf +ReYNnyicsbkqWletNw+vHX/bvZ8= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/godaddyrootg2ca b/make/data/cacerts/godaddyrootg2ca new file mode 100644 index 0000000000..5d60b36193 --- /dev/null +++ b/make/data/cacerts/godaddyrootg2ca @@ -0,0 +1,30 @@ +Owner: CN=Go Daddy Root Certificate Authority - G2, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US +Issuer: CN=Go Daddy Root Certificate Authority - G2, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US +Serial number: 0 +Valid from: Tue Sep 01 00:00:00 GMT 2009 until: Thu Dec 31 23:59:59 GMT 2037 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz +NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE +AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD +E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH +/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy +DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh +GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR +tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA +AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX +WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu +9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr +gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo +2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI +4uJEvlz36hz1 +-----END CERTIFICATE----- diff --git a/make/data/cacerts/identrustcommercial b/make/data/cacerts/identrustcommercial new file mode 100644 index 0000000000..8623d4b9b5 --- /dev/null +++ b/make/data/cacerts/identrustcommercial @@ -0,0 +1,38 @@ +Owner: CN=IdenTrust Commercial Root CA 1, O=IdenTrust, C=US +Issuer: CN=IdenTrust Commercial Root CA 1, O=IdenTrust, C=US +Serial number: a0142800000014523c844b500000002 +Valid from: Thu Jan 16 18:12:23 GMT 2014 until: Mon Jan 16 18:12:23 GMT 2034 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu +VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw +MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw +JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT +3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU ++ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp +S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 +bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi +T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL +vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK +Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK +dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT +c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv +l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N +iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD +ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt +LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 +nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 ++wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK +W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT +AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq +l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG +4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ +mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A +7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- diff --git a/make/data/cacerts/identrustdstx3 b/make/data/cacerts/identrustdstx3 new file mode 100644 index 0000000000..87a0d0c4f6 --- /dev/null +++ b/make/data/cacerts/identrustdstx3 @@ -0,0 +1,27 @@ +Owner: CN=DST Root CA X3, O=Digital Signature Trust Co. +Issuer: CN=DST Root CA X3, O=Digital Signature Trust Co. +Serial number: 44afb080d6a327ba893039862ef8406b +Valid from: Sat Sep 30 21:12:19 GMT 2000 until: Thu Sep 30 14:01:15 GMT 2021 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ +MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT +DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow +PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD +Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O +rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq +OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b +xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw +7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD +aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG +SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 +ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr +AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz +R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 +JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo +Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- diff --git a/make/data/cacerts/identrustpublicca b/make/data/cacerts/identrustpublicca new file mode 100644 index 0000000000..f4034ea6d8 --- /dev/null +++ b/make/data/cacerts/identrustpublicca @@ -0,0 +1,38 @@ +Owner: CN=IdenTrust Public Sector Root CA 1, O=IdenTrust, C=US +Issuer: CN=IdenTrust Public Sector Root CA 1, O=IdenTrust, C=US +Serial number: a0142800000014523cf467c00000002 +Valid from: Thu Jan 16 17:53:32 GMT 2014 until: Mon Jan 16 17:53:32 GMT 2034 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu +VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN +MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 +MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 +ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy +RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS +bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF +/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R +3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw +EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy +9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V +GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ +2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV +WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD +W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN +AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV +DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 +TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G +lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW +mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df +WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 ++bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ +tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA +GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv +8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- diff --git a/make/data/cacerts/keynectisrootca b/make/data/cacerts/keynectisrootca new file mode 100644 index 0000000000..44483b2a42 --- /dev/null +++ b/make/data/cacerts/keynectisrootca @@ -0,0 +1,30 @@ +Owner: CN=KEYNECTIS ROOT CA, OU=ROOT, O=KEYNECTIS, C=FR +Issuer: CN=KEYNECTIS ROOT CA, OU=ROOT, O=KEYNECTIS, C=FR +Serial number: 1121bc276c5547af584eefd4ced629b2a285 +Valid from: Tue May 26 00:00:00 GMT 2009 until: Tue May 26 00:00:00 GMT 2020 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIID5TCCAs2gAwIBAgISESG8J2xVR69YTu/UztYpsqKFMA0GCSqGSIb3DQEBCwUA +MEwxCzAJBgNVBAYTAkZSMRIwEAYDVQQKEwlLRVlORUNUSVMxDTALBgNVBAsTBFJP +T1QxGjAYBgNVBAMTEUtFWU5FQ1RJUyBST09UIENBMB4XDTA5MDUyNjAwMDAwMFoX +DTIwMDUyNjAwMDAwMFowTDELMAkGA1UEBhMCRlIxEjAQBgNVBAoTCUtFWU5FQ1RJ +UzENMAsGA1UECxMEUk9PVDEaMBgGA1UEAxMRS0VZTkVDVElTIFJPT1QgQ0EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDG/bMXhaGtJhuVaTUhPaSI+t7b +YDZAF2nCFGP7uNnCdBU3LpzQIM1pjYQyooVMFLSb8iWzVCqDPy2+D/M7ZNH/oFDv +d087TuE/C2SFmrpYftLDYtNkJaLUspc8d11jKjOS/M2CDZtUlYf1teuMzVvRyjAv +yYhGtc0NEbQYj+7RoT5dFegoz9/DkJtszNEMRXezOuuKkB3pr2RqiXupPUN0+uRn +IqH73E3E9WLJyiW0yYBgM6nde6ACv5YlCl7JXyl7tBeBi22BGdDZg1wFj0FpGmlD +gJ+or+DpjJGLJyuiJmDND/KkowKDjhiBwheKQxX5bfMdEKRanERhIyF62PvRAgMB +AAGjgcAwgb0wEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8EBAMCAQYwVwYD +VR0fBFAwTjBMoEqgSIZGaHR0cDovL3RydXN0Y2VudGVyLWNybC5jZXJ0aWZpY2F0 +Mi5jb20vS2V5bmVjdGlzL0tFWU5FQ1RJU19ST09UX0NBLmNybDAdBgNVHQ4EFgQU +77cjl9CokX+mz6YhwDSfzHdB4dAwHwYDVR0jBBgwFoAU77cjl9CokX+mz6YhwDSf +zHdB4dAwDQYJKoZIhvcNAQELBQADggEBABoxaZlCwuVAhaKfksNj1I8hOagZIf56 +/MNNQPMr6EusW0xZk8bcfguvfF+VhWu9x2+6wb74xjpnS5PGBWk+JC3wG5HGPj/s +QhiTbAMkim75IGcrfG2rNMkqIjMN132P7tI2ZELINZpuGWHLjWfwaKfQJAXmwxe6 +Ra58Q7WAeANNIHMF/EMQnTVpQnWUJYIrpjuQGN7Bqa/zLZW/lafPGJfhWeKirxoW +YQ33E3FTkzf9PK8AHWyLFK9Gloy2UnzMLU7N4elLCu6a/nqY5ym6G9ocutxrzQQO +JkCp63M8/lCoESdVvduOS+9PGO0V/72GmGbumiVxNGxQ8bJRy2adTSk= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/letsencryptisrgx1 b/make/data/cacerts/letsencryptisrgx1 new file mode 100644 index 0000000000..9364e1df5d --- /dev/null +++ b/make/data/cacerts/letsencryptisrgx1 @@ -0,0 +1,38 @@ +Owner: CN=ISRG Root X1, O=Internet Security Research Group, C=US +Issuer: CN=ISRG Root X1, O=Internet Security Research Group, C=US +Serial number: 8210cfb0d240e3594463e0bb63828b00 +Valid from: Thu Jun 04 11:04:38 GMT 2015 until: Mon Jun 04 11:04:38 GMT 2035 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 +WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu +ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc +h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ +0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U +A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW +T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH +B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC +B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv +KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn +OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn +jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw +qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI +rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq +hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ +3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK +NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 +ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur +TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC +jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc +oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq +4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA +mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d +emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/luxtrustglobalrootca b/make/data/cacerts/luxtrustglobalrootca new file mode 100644 index 0000000000..7fb3d818f8 --- /dev/null +++ b/make/data/cacerts/luxtrustglobalrootca @@ -0,0 +1,28 @@ +Owner: CN=LuxTrust Global Root, O=LuxTrust s.a., C=LU +Issuer: CN=LuxTrust Global Root, O=LuxTrust s.a., C=LU +Serial number: bb8 +Valid from: Thu Mar 17 09:51:37 GMT 2011 until: Wed Mar 17 09:51:37 GMT 2021 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDZDCCAkygAwIBAgICC7gwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCTFUx +FjAUBgNVBAoTDUx1eFRydXN0IHMuYS4xHTAbBgNVBAMTFEx1eFRydXN0IEdsb2Jh +bCBSb290MB4XDTExMDMxNzA5NTEzN1oXDTIxMDMxNzA5NTEzN1owRDELMAkGA1UE +BhMCTFUxFjAUBgNVBAoTDUx1eFRydXN0IHMuYS4xHTAbBgNVBAMTFEx1eFRydXN0 +IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsn+n +QPAiygz267Hxyw6VV0B1r6A/Ps7sqjJX5hmxZ0OYWmt8s7j6eJyqpoSyYBuAQc5j +zR8XCJmk9e8+EsdMsFeaXHhAePxFjdqRZ9w6Ubltc+a3OY52OrQfBfVpVfmTz3iI +Sr6qm9d7R1tGBEyCFqY19vx039a0r9jitScRdFmiwmYsaArhmIiIPIoFdRTjuK7z +CISbasE/MRivJ6VLm6T9eTHemD0OYcqHmMH4ijCc+j4z1aXEAwfh95Z0GAAnOCfR +K6qq4UFFi2/xJcLcopeVx0IUM115hCNq52XAV6DYXaljAeew5Ivo+MVjuOVsdJA9 +x3f8K7p56aTGEnin/wIDAQABo2AwXjAMBgNVHRMEBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjAfBgNVHSMEGDAWgBQXFYWJCS8kh28/HRvk8pZ5g0gTzjAdBgNVHQ4EFgQU +FxWFiQkvJIdvPx0b5PKWeYNIE84wDQYJKoZIhvcNAQELBQADggEBAFrwHNDUUM9B +fua4nX3DcNBeNv9ujnov3kgR1TQuPLdFwlQlp+HBHjeDtpSutkVIA+qVvuucarQ3 +XB8u02uCgUNbCj8RVWOs+nwIAjegPDkEM/6XMshS5dklTbDG7mgfcKpzzlcD3H0K +DTPy0lrfCmw7zBFRlxqkIaKFNQLXgCLShLL4wKpov9XrqsMLq6F8K/f1O4fhVFfs +BSTveUJO84ton+Ruy4KZycwq3FPCH3CDqyEPVrRI/98HIrOM+R2mBN8tAza53W/+ +MYhm/2xtRDSvCHc+JtJy9LtHVpM8mGPhM7uZI5K1g3noHZ9nrWLWidb2/CfeMifL +hNp3hSGhEiE= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/quovadisrootca b/make/data/cacerts/quovadisrootca new file mode 100644 index 0000000000..0c195ff51f --- /dev/null +++ b/make/data/cacerts/quovadisrootca @@ -0,0 +1,41 @@ +Owner: CN=QuoVadis Root Certification Authority, OU=Root Certification Authority, O=QuoVadis Limited, C=BM +Issuer: CN=QuoVadis Root Certification Authority, OU=Root Certification Authority, O=QuoVadis Limited, C=BM +Serial number: 3ab6508b +Valid from: Mon Mar 19 18:33:33 GMT 2001 until: Wed Mar 17 18:33:33 GMT 2021 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC +TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz +MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw +IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR +dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp +li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D +rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ +WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug +F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU +xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC +Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv +dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw +ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl +IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh +c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy +ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI +KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T +KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq +y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p +dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD +VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL +MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk +fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8 +7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R +cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y +mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW +xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK +SnQ2+Q== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/quovadisrootca1g3 b/make/data/cacerts/quovadisrootca1g3 new file mode 100644 index 0000000000..26e23ab8dc --- /dev/null +++ b/make/data/cacerts/quovadisrootca1g3 @@ -0,0 +1,38 @@ +Owner: CN=QuoVadis Root CA 1 G3, O=QuoVadis Limited, C=BM +Issuer: CN=QuoVadis Root CA 1 G3, O=QuoVadis Limited, C=BM +Serial number: 78585f2ead2c194be3370735341328b596d46593 +Valid from: Thu Jan 12 17:27:44 GMT 2012 until: Sun Jan 12 17:27:44 GMT 2042 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 +MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV +wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe +rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 +68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh +4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp +UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o +abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc +3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G +KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt +hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO +Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt +zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD +ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 +cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN +qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 +YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv +b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 +8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k +NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj +ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp +q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt +nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD +-----END CERTIFICATE----- diff --git a/make/data/cacerts/quovadisrootca2 b/make/data/cacerts/quovadisrootca2 new file mode 100644 index 0000000000..c5b1f0709f --- /dev/null +++ b/make/data/cacerts/quovadisrootca2 @@ -0,0 +1,40 @@ +Owner: CN=QuoVadis Root CA 2, O=QuoVadis Limited, C=BM +Issuer: CN=QuoVadis Root CA 2, O=QuoVadis Limited, C=BM +Serial number: 509 +Valid from: Fri Nov 24 18:27:00 GMT 2006 until: Mon Nov 24 18:23:33 GMT 2031 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x +GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv +b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV +BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W +YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa +GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg +Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J +WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB +rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp ++ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 +ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i +Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz +PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og +/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH +oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI +yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud +EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 +A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL +MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f +BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn +g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl +fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K +WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha +B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc +hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR +TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD +mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z +ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y +4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza +8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- diff --git a/make/data/cacerts/quovadisrootca2g3 b/make/data/cacerts/quovadisrootca2g3 new file mode 100644 index 0000000000..6d370f546b --- /dev/null +++ b/make/data/cacerts/quovadisrootca2g3 @@ -0,0 +1,38 @@ +Owner: CN=QuoVadis Root CA 2 G3, O=QuoVadis Limited, C=BM +Issuer: CN=QuoVadis Root CA 2 G3, O=QuoVadis Limited, C=BM +Serial number: 445734245b81899b35f2ceb82b3b5ba726f07528 +Valid from: Thu Jan 12 18:59:32 GMT 2012 until: Sun Jan 12 18:59:32 GMT 2042 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 +MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf +qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW +n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym +c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ +O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 +o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j +IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq +IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz +8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh +vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l +7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG +cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD +ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC +roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga +W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n +lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE ++V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV +csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd +dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg +KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM +HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 +WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M +-----END CERTIFICATE----- diff --git a/make/data/cacerts/quovadisrootca3 b/make/data/cacerts/quovadisrootca3 new file mode 100644 index 0000000000..0452ad9218 --- /dev/null +++ b/make/data/cacerts/quovadisrootca3 @@ -0,0 +1,45 @@ +Owner: CN=QuoVadis Root CA 3, O=QuoVadis Limited, C=BM +Issuer: CN=QuoVadis Root CA 3, O=QuoVadis Limited, C=BM +Serial number: 5c6 +Valid from: Fri Nov 24 19:11:23 GMT 2006 until: Mon Nov 24 19:06:44 GMT 2031 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x +GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv +b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV +BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W +YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM +V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB +4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr +H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd +8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv +vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT +mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe +btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc +T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt +WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ +c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A +4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD +VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG +CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 +aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu +dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw +czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G +A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC +TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg +Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 +7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem +d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd ++LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B +4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN +t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x +DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 +k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s +zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j +Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT +mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK +4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/quovadisrootca3g3 b/make/data/cacerts/quovadisrootca3g3 new file mode 100644 index 0000000000..b4eccae9c1 --- /dev/null +++ b/make/data/cacerts/quovadisrootca3g3 @@ -0,0 +1,38 @@ +Owner: CN=QuoVadis Root CA 3 G3, O=QuoVadis Limited, C=BM +Issuer: CN=QuoVadis Root CA 3 G3, O=QuoVadis Limited, C=BM +Serial number: 2ef59b0228a7db7affd5a3a9eebd03a0cf126a1d +Valid from: Thu Jan 12 20:26:32 GMT 2012 until: Sun Jan 12 20:26:32 GMT 2042 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 +MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR +/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu +FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR +U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c +ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR +FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k +A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw +eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl +sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp +VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q +A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ +ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD +ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI +FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv +oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg +u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP +0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf +3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl +8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ +DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN +PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ +ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- diff --git a/make/data/cacerts/secomscrootca1 b/make/data/cacerts/secomscrootca1 new file mode 100644 index 0000000000..d300e31195 --- /dev/null +++ b/make/data/cacerts/secomscrootca1 @@ -0,0 +1,27 @@ +Owner: OU=Security Communication RootCA1, O=SECOM Trust.net, C=JP +Issuer: OU=Security Communication RootCA1, O=SECOM Trust.net, C=JP +Serial number: 0 +Valid from: Tue Sep 30 04:20:49 GMT 2003 until: Sat Sep 30 04:20:49 GMT 2023 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY +MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t +dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 +WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD +VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 +9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ +DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 +Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N +QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ +xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G +A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG +kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr +Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 +Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU +JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot +RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/secomscrootca2 b/make/data/cacerts/secomscrootca2 new file mode 100644 index 0000000000..d80846d9f2 --- /dev/null +++ b/make/data/cacerts/secomscrootca2 @@ -0,0 +1,28 @@ +Owner: OU=Security Communication RootCA2, O="SECOM Trust Systems CO.,LTD.", C=JP +Issuer: OU=Security Communication RootCA2, O="SECOM Trust Systems CO.,LTD.", C=JP +Serial number: 0 +Valid from: Fri May 29 05:00:39 GMT 2009 until: Tue May 29 05:00:39 GMT 2029 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl +MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe +U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX +DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy +dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj +YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV +OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr +zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM +VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ +hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO +ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw +awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs +OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 +DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF +coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc +okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 +t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy +1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ +SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- diff --git a/make/data/cacerts/securetrustca b/make/data/cacerts/securetrustca new file mode 100644 index 0000000000..a08e2467f4 --- /dev/null +++ b/make/data/cacerts/securetrustca @@ -0,0 +1,29 @@ +Owner: CN=SecureTrust CA, O=SecureTrust Corporation, C=US +Issuer: CN=SecureTrust CA, O=SecureTrust Corporation, C=US +Serial number: cf08e5c0816a5ad427ff0eb271859d0 +Valid from: Tue Nov 07 19:31:18 GMT 2006 until: Mon Dec 31 19:40:55 GMT 2029 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI +MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x +FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz +MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv +cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz +Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO +0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao +wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj +7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS +8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT +BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg +JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 +6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ +3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm +D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS +CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/soneraclass2ca b/make/data/cacerts/soneraclass2ca new file mode 100644 index 0000000000..43faa5e211 --- /dev/null +++ b/make/data/cacerts/soneraclass2ca @@ -0,0 +1,26 @@ +Owner: CN=Sonera Class2 CA, O=Sonera, C=FI +Issuer: CN=Sonera Class2 CA, O=Sonera, C=FI +Serial number: 1d +Valid from: Fri Apr 06 07:29:40 GMT 2001 until: Tue Apr 06 07:29:40 GMT 2021 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP +MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx +MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV +BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o +Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt +5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s +3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej +vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu +8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw +DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG +MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil +zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/ +3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD +FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6 +Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2 +ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M +-----END CERTIFICATE----- diff --git a/make/data/cacerts/starfieldclass2ca b/make/data/cacerts/starfieldclass2ca new file mode 100644 index 0000000000..d87e609ee3 --- /dev/null +++ b/make/data/cacerts/starfieldclass2ca @@ -0,0 +1,31 @@ +Owner: OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US +Issuer: OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US +Serial number: 0 +Valid from: Tue Jun 29 17:39:16 GMT 2004 until: Thu Jun 29 17:39:16 GMT 2034 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl +MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp +U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw +NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE +ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp +ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 +DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf +8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN ++lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 +X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa +K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA +1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G +A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR +zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 +YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD +bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w +DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 +L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D +eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp +VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY +WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/starfieldrootg2ca b/make/data/cacerts/starfieldrootg2ca new file mode 100644 index 0000000000..bea888c4a9 --- /dev/null +++ b/make/data/cacerts/starfieldrootg2ca @@ -0,0 +1,30 @@ +Owner: CN=Starfield Root Certificate Authority - G2, O="Starfield Technologies, Inc.", L=Scottsdale, ST=Arizona, C=US +Issuer: CN=Starfield Root Certificate Authority - G2, O="Starfield Technologies, Inc.", L=Scottsdale, ST=Arizona, C=US +Serial number: 0 +Valid from: Tue Sep 01 00:00:00 GMT 2009 until: Thu Dec 31 23:59:59 GMT 2037 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw +MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp +Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg +nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 +HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N +Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN +dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 +HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G +CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU +sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 +4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg +8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 +mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- diff --git a/make/data/cacerts/starfieldservicesrootg2ca b/make/data/cacerts/starfieldservicesrootg2ca new file mode 100644 index 0000000000..7303f09f6c --- /dev/null +++ b/make/data/cacerts/starfieldservicesrootg2ca @@ -0,0 +1,31 @@ +Owner: CN=Starfield Services Root Certificate Authority - G2, O="Starfield Technologies, Inc.", L=Scottsdale, ST=Arizona, C=US +Issuer: CN=Starfield Services Root Certificate Authority - G2, O="Starfield Technologies, Inc.", L=Scottsdale, ST=Arizona, C=US +Serial number: 0 +Valid from: Tue Sep 01 00:00:00 GMT 2009 until: Thu Dec 31 23:59:59 GMT 2037 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs +ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy +ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy +dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p +OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 +8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K +Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe +hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk +6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q +AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI +bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB +ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z +qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn +0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN +sSi6 +-----END CERTIFICATE----- diff --git a/make/data/cacerts/swisssigngoldg2ca b/make/data/cacerts/swisssigngoldg2ca new file mode 100644 index 0000000000..3558909b89 --- /dev/null +++ b/make/data/cacerts/swisssigngoldg2ca @@ -0,0 +1,40 @@ +Owner: CN=SwissSign Gold CA - G2, O=SwissSign AG, C=CH +Issuer: CN=SwissSign Gold CA - G2, O=SwissSign AG, C=CH +Serial number: bb401c43f55e4fb0 +Valid from: Wed Oct 25 08:30:35 GMT 2006 until: Sat Oct 25 08:30:35 GMT 2036 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- diff --git a/make/data/cacerts/swisssignplatinumg2ca b/make/data/cacerts/swisssignplatinumg2ca new file mode 100644 index 0000000000..774bef80db --- /dev/null +++ b/make/data/cacerts/swisssignplatinumg2ca @@ -0,0 +1,40 @@ +Owner: CN=SwissSign Platinum CA - G2, O=SwissSign AG, C=CH +Issuer: CN=SwissSign Platinum CA - G2, O=SwissSign AG, C=CH +Serial number: 4eb200670c035d4f +Valid from: Wed Oct 25 08:36:00 GMT 2006 until: Sat Oct 25 08:36:00 GMT 2036 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE +BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWdu +IFBsYXRpbnVtIENBIC0gRzIwHhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAw +WjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMSMwIQYDVQQD +ExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu669y +IIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2Htn +IuJpX+UFeNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+ +6ixuEFGSzH7VozPY1kneWCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5ob +jM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIoj5+saCB9bzuohTEJfwvH6GXp43gOCWcw +izSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/68++QHkwFix7qepF6w9fl ++zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34TaNhxKFrY +zt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaP +pZjydomyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtF +KwH3HBqi7Ri6Cr2D+m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuW +ae5ogObnmLo2t/5u7Su9IPhlGdpVCX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMB +AAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCvzAeHFUdvOMW0 +ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW +IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUA +A4ICAQAIhab1Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0 +uMoI3LQwnkAHFmtllXcBrqS3NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+ +FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4U99REJNi54Av4tHgvI42Rncz7Lj7 +jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8KV2LwUvJ4ooTHbG/ +u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl9x8D +YSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1 +puEa+S1BaYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXa +icYwu+uPyyIIoK6q8QNsOktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbG +DI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSYMdp08YSTcU1f+2BY0fvEwW2JorsgH51x +kcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAciIfNAChs0B0QTwoRqjt8Z +Wr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/swisssignsilverg2ca b/make/data/cacerts/swisssignsilverg2ca new file mode 100644 index 0000000000..7a1eed1c0f --- /dev/null +++ b/make/data/cacerts/swisssignsilverg2ca @@ -0,0 +1,40 @@ +Owner: CN=SwissSign Silver CA - G2, O=SwissSign AG, C=CH +Issuer: CN=SwissSign Silver CA - G2, O=SwissSign AG, C=CH +Serial number: 4f1bd42f54bb2f4b +Valid from: Wed Oct 25 08:32:46 GMT 2006 until: Sat Oct 25 08:32:46 GMT 2036 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- diff --git a/make/data/cacerts/teliasonerarootcav1 b/make/data/cacerts/teliasonerarootcav1 new file mode 100644 index 0000000000..26512c9b11 --- /dev/null +++ b/make/data/cacerts/teliasonerarootcav1 @@ -0,0 +1,37 @@ +Owner: CN=TeliaSonera Root CA v1, O=TeliaSonera +Issuer: CN=TeliaSonera Root CA v1, O=TeliaSonera +Serial number: 95be16a0f72e46f17b398272fa8bcd96 +Valid from: Thu Oct 18 12:00:50 GMT 2007 until: Mon Oct 18 12:00:50 GMT 2032 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw +NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv +b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD +VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2 +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F +VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1 +7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X +Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+ +/jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs +81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm +dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe +Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu +sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4 +pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs +slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ +arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD +VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG +9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl +dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj +TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed +Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7 +Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI +OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7 +vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW +t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn +HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx +SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/thawtepremiumserverca b/make/data/cacerts/thawtepremiumserverca new file mode 100644 index 0000000000..2df456ab07 --- /dev/null +++ b/make/data/cacerts/thawtepremiumserverca @@ -0,0 +1,27 @@ +Owner: EMAILADDRESS=premium-server@thawte.com, CN=Thawte Premium Server CA, OU=Certification Services Division, O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA +Issuer: EMAILADDRESS=premium-server@thawte.com, CN=Thawte Premium Server CA, OU=Certification Services Division, O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA +Serial number: 36122296c5e338a520a1d25f4cd70954 +Valid from: Thu Aug 01 00:00:00 GMT 1996 until: Fri Jan 01 23:59:59 GMT 2021 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 1024-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDNjCCAp+gAwIBAgIQNhIilsXjOKUgodJfTNcJVDANBgkqhkiG9w0BAQUFADCB +zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ +Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE +CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh +d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl +cnZlckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIxMDEwMTIzNTk1OVow +gc4xCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcT +CUNhcGUgVG93bjEdMBsGA1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNV +BAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRo +YXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1z +ZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2 +aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560 +ZXUCTe/LCaIhUdib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j ++ao6hnO2RlNYyIkFvYMRuHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/ +BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBlkKyID1bZ5jA01CbH0FDxkt5r1DmI +CSLGpmODA/eZd9iy5Ri4XWPz1HP7bJyZePFLeH0ZJMMrAoT4vCLZiiLXoPxx7JGH +IPG47LHlVYCsPVLIOQ7C8MAFT9aCdYy9X9LcdpoFEsmvcsPcJX6kTY4XpeCHf+Ga +WuFg3GQjPEIuTQ== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/thawteprimaryrootca b/make/data/cacerts/thawteprimaryrootca new file mode 100644 index 0000000000..9dc4dd8552 --- /dev/null +++ b/make/data/cacerts/thawteprimaryrootca @@ -0,0 +1,32 @@ +Owner: CN=thawte Primary Root CA, OU="(c) 2006 thawte, Inc. - For authorized use only", OU=Certification Services Division, O="thawte, Inc.", C=US +Issuer: CN=thawte Primary Root CA, OU="(c) 2006 thawte, Inc. - For authorized use only", OU=Certification Services Division, O="thawte, Inc.", C=US +Serial number: 344ed55720d5edec49f42fce37db2b6d +Valid from: Fri Nov 17 00:00:00 GMT 2006 until: Wed Jul 16 23:59:59 GMT 2036 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw +NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j +LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG +A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs +W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta +3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk +6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 +Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J +NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP +r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU +DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz +YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 +/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ +LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 +jVaMaA== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/thawteprimaryrootcag2 b/make/data/cacerts/thawteprimaryrootcag2 new file mode 100644 index 0000000000..d604e2f345 --- /dev/null +++ b/make/data/cacerts/thawteprimaryrootcag2 @@ -0,0 +1,23 @@ +Owner: CN=thawte Primary Root CA - G2, OU="(c) 2007 thawte, Inc. - For authorized use only", O="thawte, Inc.", C=US +Issuer: CN=thawte Primary Root CA - G2, OU="(c) 2007 thawte, Inc. - For authorized use only", O="thawte, Inc.", C=US +Serial number: 35fc265cd9844fc93d263d579baed756 +Valid from: Mon Nov 05 00:00:00 GMT 2007 until: Mon Jan 18 23:59:59 GMT 2038 +Signature algorithm name: SHA384withECDSA +Subject Public Key Algorithm: 384-bit EC (secp384r1) key +Version: 3 +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp +IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi +BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw +MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig +YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v +dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/ +BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6 +papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K +DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3 +KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox +XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/thawteprimaryrootcag3 b/make/data/cacerts/thawteprimaryrootcag3 new file mode 100644 index 0000000000..396fc17a0d --- /dev/null +++ b/make/data/cacerts/thawteprimaryrootcag3 @@ -0,0 +1,32 @@ +Owner: CN=thawte Primary Root CA - G3, OU="(c) 2008 thawte, Inc. - For authorized use only", OU=Certification Services Division, O="thawte, Inc.", C=US +Issuer: CN=thawte Primary Root CA - G3, OU="(c) 2008 thawte, Inc. - For authorized use only", OU=Certification Services Division, O="thawte, Inc.", C=US +Serial number: 600197b746a7eab4b49ad64b2ff790fb +Valid from: Wed Apr 02 00:00:00 GMT 2008 until: Tue Dec 01 23:59:59 GMT 2037 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB +rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV +BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa +Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl +LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u +MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm +gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8 +YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf +b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9 +9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S +zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk +OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV +HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA +2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW +oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c +KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM +m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu +MdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/ttelesecglobalrootclass2ca b/make/data/cacerts/ttelesecglobalrootclass2ca new file mode 100644 index 0000000000..1e057df874 --- /dev/null +++ b/make/data/cacerts/ttelesecglobalrootclass2ca @@ -0,0 +1,30 @@ +Owner: CN=T-TeleSec GlobalRoot Class 2, OU=T-Systems Trust Center, O=T-Systems Enterprise Services GmbH, C=DE +Issuer: CN=T-TeleSec GlobalRoot Class 2, OU=T-Systems Trust Center, O=T-Systems Enterprise Services GmbH, C=DE +Serial number: 1 +Valid from: Wed Oct 01 10:40:14 GMT 2008 until: Sat Oct 01 23:59:59 GMT 2033 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd +AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC +FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi +1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq +jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ +wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ +WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy +NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC +uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw +IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 +g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP +BSeOE6Fuwg== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/ttelesecglobalrootclass3ca b/make/data/cacerts/ttelesecglobalrootclass3ca new file mode 100644 index 0000000000..8985014b09 --- /dev/null +++ b/make/data/cacerts/ttelesecglobalrootclass3ca @@ -0,0 +1,30 @@ +Owner: CN=T-TeleSec GlobalRoot Class 3, OU=T-Systems Trust Center, O=T-Systems Enterprise Services GmbH, C=DE +Issuer: CN=T-TeleSec GlobalRoot Class 3, OU=T-Systems Trust Center, O=T-Systems Enterprise Services GmbH, C=DE +Serial number: 1 +Valid from: Wed Oct 01 10:29:56 GMT 2008 until: Sat Oct 01 23:59:59 GMT 2033 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN +8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ +RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 +hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 +ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM +EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 +A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy +WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ +1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 +6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT +91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p +TpPDpFQUWw== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/usertrusteccca b/make/data/cacerts/usertrusteccca new file mode 100644 index 0000000000..9af9c946cf --- /dev/null +++ b/make/data/cacerts/usertrusteccca @@ -0,0 +1,23 @@ +Owner: CN=USERTrust ECC Certification Authority, O=The USERTRUST Network, L=Jersey City, ST=New Jersey, C=US +Issuer: CN=USERTrust ECC Certification Authority, O=The USERTRUST Network, L=Jersey City, ST=New Jersey, C=US +Serial number: 5c8b99c55a94c5d27156decd8980cc26 +Valid from: Mon Feb 01 00:00:00 GMT 2010 until: Mon Jan 18 23:59:59 GMT 2038 +Signature algorithm name: SHA384withECDSA +Subject Public Key Algorithm: 384-bit EC (secp384r1) key +Version: 3 +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl +eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT +JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT +Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg +VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo +I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng +o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G +A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB +zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW +RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/usertrustrsaca b/make/data/cacerts/usertrustrsaca new file mode 100644 index 0000000000..fe9ae79029 --- /dev/null +++ b/make/data/cacerts/usertrustrsaca @@ -0,0 +1,41 @@ +Owner: CN=USERTrust RSA Certification Authority, O=The USERTRUST Network, L=Jersey City, ST=New Jersey, C=US +Issuer: CN=USERTrust RSA Certification Authority, O=The USERTRUST Network, L=Jersey City, ST=New Jersey, C=US +Serial number: 1fd6d30fca3ca51a81bbc640e35032d +Valid from: Mon Feb 01 00:00:00 GMT 2010 until: Mon Jan 18 23:59:59 GMT 2038 +Signature algorithm name: SHA384withRSA +Subject Public Key Algorithm: 4096-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB +iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl +cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV +BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw +MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV +BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B +3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY +tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ +Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 +VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT +79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 +c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT +Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l +c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee +UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE +Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd +BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF +Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO +VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 +ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs +8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR +iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze +Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ +XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ +qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB +VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB +L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG +jjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- diff --git a/make/data/cacerts/utnuserfirstobjectca b/make/data/cacerts/utnuserfirstobjectca new file mode 100644 index 0000000000..80a0b5c23c --- /dev/null +++ b/make/data/cacerts/utnuserfirstobjectca @@ -0,0 +1,33 @@ +Owner: CN=UTN-USERFirst-Object, OU=http://www.usertrust.com, O=The USERTRUST Network, L=Salt Lake City, ST=UT, C=US +Issuer: CN=UTN-USERFirst-Object, OU=http://www.usertrust.com, O=The USERTRUST Network, L=Salt Lake City, ST=UT, C=US +Serial number: 44be0c8b500024b411d3362de0b35f1b +Valid from: Fri Jul 09 18:31:20 GMT 1999 until: Tue Jul 09 18:40:36 GMT 2019 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCB +lTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAbBgNVBAMTFFVUTi1VU0VSRmlyc3Qt +T2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAzNlowgZUxCzAJBgNV +BAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAc +BgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3 +dy51c2VydHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicP +HxzfOpuCaDDASmEd8S8O+r5596Uj71VRloTN2+O5bj4x2AogZ8f02b+U60cEPgLO +KqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQw5ujm9M89RKZd7G3CeBo +5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vulBe3/IW+ +pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehb +kkj7RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUC +AwEAAaOBrzCBrDALBgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQU2u1kdBScFDyr3ZmpvVsoTYs8ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDov +L2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmlyc3QtT2JqZWN0LmNybDApBgNV +HSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQwDQYJKoZIhvcN +AQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw +NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXB +mMiKVl0+7kNOPmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU +4U3GDZlDAQ0Slox4nb9QorFEqmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK5 +81OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCGhU3IfdeLA/5u1fedFqySLKAj5ZyR +Uh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/verisignclass2g2ca b/make/data/cacerts/verisignclass2g2ca new file mode 100644 index 0000000000..a0922a7fc3 --- /dev/null +++ b/make/data/cacerts/verisignclass2g2ca @@ -0,0 +1,26 @@ +Owner: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 2 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US +Issuer: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 2 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US +Serial number: b92f60cc889fa17a4609b85b706c8aaf +Valid from: Mon May 18 00:00:00 GMT 1998 until: Tue Aug 01 23:59:59 GMT 2028 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 1024-bit RSA key +Version: 1 +-----BEGIN CERTIFICATE----- +MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns +YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH +MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y +aXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe +Fw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX +MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj +IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx +KGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM +HiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw +DqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC +AwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji +nb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX +rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn +jBJ7xUS0rg== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/verisignclass3ca b/make/data/cacerts/verisignclass3ca new file mode 100644 index 0000000000..247b233555 --- /dev/null +++ b/make/data/cacerts/verisignclass3ca @@ -0,0 +1,21 @@ +Owner: OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US +Issuer: OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US +Serial number: 3c9131cb1ff6d01b0e9ab8d044bf12be +Valid from: Mon Jan 29 00:00:00 GMT 1996 until: Wed Aug 02 23:59:59 GMT 2028 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 1024-bit RSA key +Version: 1 +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE +BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is +I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G +CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i +2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ +2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ +-----END CERTIFICATE----- diff --git a/make/data/cacerts/verisignclass3g2ca b/make/data/cacerts/verisignclass3g2ca new file mode 100644 index 0000000000..1b932e5945 --- /dev/null +++ b/make/data/cacerts/verisignclass3g2ca @@ -0,0 +1,26 @@ +Owner: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 3 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US +Issuer: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 3 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US +Serial number: 7dd9fe07cfa81eb7107967fba78934c6 +Valid from: Mon May 18 00:00:00 GMT 1998 until: Tue Aug 01 23:59:59 GMT 2028 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 1024-bit RSA key +Version: 1 +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh +c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy +MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp +emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X +DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw +FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg +UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo +YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 +MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB +AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 +pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 +13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID +AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk +U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i +F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY +oJ2daZH9 +-----END CERTIFICATE----- diff --git a/make/data/cacerts/verisignclass3g3ca b/make/data/cacerts/verisignclass3g3ca new file mode 100644 index 0000000000..b9c36ed50f --- /dev/null +++ b/make/data/cacerts/verisignclass3g3ca @@ -0,0 +1,31 @@ +Owner: CN=VeriSign Class 3 Public Primary Certification Authority - G3, OU="(c) 1999 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US +Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3, OU="(c) 1999 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US +Serial number: 9b7e0649a33e62b9d5ee90487129ef57 +Valid from: Fri Oct 01 00:00:00 GMT 1999 until: Wed Jul 16 23:59:59 GMT 2036 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 1 +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b +N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t +KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu +kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm +CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ +Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu +imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te +2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe +DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p +F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt +TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/verisignclass3g4ca b/make/data/cacerts/verisignclass3g4ca new file mode 100644 index 0000000000..b52ee80d50 --- /dev/null +++ b/make/data/cacerts/verisignclass3g4ca @@ -0,0 +1,28 @@ +Owner: CN=VeriSign Class 3 Public Primary Certification Authority - G4, OU="(c) 2007 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US +Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G4, OU="(c) 2007 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US +Serial number: 2f80fe238c0e220f486712289187acb3 +Valid from: Mon Nov 05 00:00:00 GMT 2007 until: Mon Jan 18 23:59:59 GMT 2038 +Signature algorithm name: SHA384withECDSA +Subject Public Key Algorithm: 384-bit EC (secp384r1) key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp +U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg +SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln +biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm +GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve +fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ +aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj +aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW +kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC +4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga +FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/verisignclass3g5ca b/make/data/cacerts/verisignclass3g5ca new file mode 100644 index 0000000000..417c891517 --- /dev/null +++ b/make/data/cacerts/verisignclass3g5ca @@ -0,0 +1,35 @@ +Owner: CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US +Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US +Serial number: 18dad19e267de8bb4a2158cdcc6b3b4a +Valid from: Wed Nov 08 00:00:00 GMT 2006 until: Wed Jul 16 23:59:59 GMT 2036 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 +nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex +t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz +SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG +BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ +rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ +NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E +BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH +BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv +MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE +p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y +5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK +WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ +4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N +hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- diff --git a/make/data/cacerts/verisigntsaca b/make/data/cacerts/verisigntsaca new file mode 100644 index 0000000000..9813ddaea2 --- /dev/null +++ b/make/data/cacerts/verisigntsaca @@ -0,0 +1,24 @@ +Owner: CN=Thawte Timestamping CA, OU=Thawte Certification, O=Thawte, L=Durbanville, ST=Western Cape, C=ZA +Issuer: CN=Thawte Timestamping CA, OU=Thawte Certification, O=Thawte, L=Durbanville, ST=Western Cape, C=ZA +Serial number: 67c8e1e8e3be1cbdfc913b8ea6238749 +Valid from: Wed Jan 01 00:00:00 GMT 1997 until: Fri Jan 01 23:59:59 GMT 2021 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 1024-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIICsDCCAhmgAwIBAgIQZ8jh6OO+HL38kTuOpiOHSTANBgkqhkiG9w0BAQUFADCB +izELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxML +RHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENl +cnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwHhcN +OTcwMTAxMDAwMDAwWhcNMjEwMTAxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTAT +BgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNV +BAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNV +BAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0A +MIGJAoGBANYrWHhhRYZT6jR7UZztsOYuGA7+4F+oJ9O0yeB8WU4WDnNUYMF/9p8u +6TqFJBU820cEY8OexJQaWt9MevPZQx08EHp5JduQ/vBR5zDWQQD9nyjfeb6Uu522 +FOMjhdepQeBMpHmwKxqL8vg7ij5FrHGSALSQQZj7X+36ty6K+Ig3AgMBAAGjEzAR +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAS+mqF4EF+3kKMZ/F +QfRWVKvpwuWXjhj+kckMPiZkyaFMJ2SnvQGTVXFuF0853BvcSTUQOSP/ypvIz2Y/ +3Ewa1IEGQlIf4SaxFhe65nByMUToTo1b5NP50OOPJWQx5yr4GIg2GlLFDUE1G2m3 +JvUXzMEZXkt8XOKDgJH6L/uatxY= +-----END CERTIFICATE----- diff --git a/make/data/cacerts/verisignuniversalrootca b/make/data/cacerts/verisignuniversalrootca new file mode 100644 index 0000000000..f364256a0e --- /dev/null +++ b/make/data/cacerts/verisignuniversalrootca @@ -0,0 +1,35 @@ +Owner: CN=VeriSign Universal Root Certification Authority, OU="(c) 2008 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US +Issuer: CN=VeriSign Universal Root Certification Authority, OU="(c) 2008 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US +Serial number: 401ac46421b31321030ebbe4121ac51d +Valid from: Wed Apr 02 00:00:00 GMT 2008 until: Tue Dec 01 23:59:59 GMT 2037 +Signature algorithm name: SHA256withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB +vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W +ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX +MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 +IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y +IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh +bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF +9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH +H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H +LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN +/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT +rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw +WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs +exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 +sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ +seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz +4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ +BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR +lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 +7M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- diff --git a/make/data/cacerts/xrampglobalca b/make/data/cacerts/xrampglobalca new file mode 100644 index 0000000000..347f1437c2 --- /dev/null +++ b/make/data/cacerts/xrampglobalca @@ -0,0 +1,32 @@ +Owner: CN=XRamp Global Certification Authority, O=XRamp Security Services Inc, OU=www.xrampsecurity.com, C=US +Issuer: CN=XRamp Global Certification Authority, O=XRamp Security Services Inc, OU=www.xrampsecurity.com, C=US +Serial number: 50946cec18ead59c4dd597ef758fa0ad +Valid from: Mon Nov 01 17:14:04 GMT 2004 until: Mon Jan 01 05:37:19 GMT 2035 +Signature algorithm name: SHA1withRSA +Subject Public Key Algorithm: 2048-bit RSA key +Version: 3 +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB +gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk +MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY +UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx +NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 +dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy +dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 +38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP +KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q +DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 +qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa +JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi +PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P +BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs +jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 +eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR +vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa +IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy +i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ +O+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- diff --git a/make/src/classes/build/tools/generatecacerts/GenerateCacerts.java b/make/src/classes/build/tools/generatecacerts/GenerateCacerts.java new file mode 100644 index 0000000000..328179442f --- /dev/null +++ b/make/src/classes/build/tools/generatecacerts/GenerateCacerts.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package build.tools.generatecacerts; + +import java.io.FileOutputStream; +import java.io.InputStream; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.security.KeyStore; +import java.security.cert.CertificateFactory; + +/** + * Generate cacerts + * args[0]: Full path string to the directory that contains CA certs + * args[1]: Full path string to the generated cacerts + */ +public class GenerateCacerts { + public static void main(String[] args) throws Exception { + KeyStore ks = KeyStore.getInstance("JKS"); + ks.load(null, null); + CertificateFactory cf = CertificateFactory.getInstance("X509"); + try (DirectoryStream ds = Files.newDirectoryStream(Paths.get(args[0]))) { + for (Path p : ds) { + String fName = p.getFileName().toString(); + if (!fName.equals("README")) { + String alias = fName + " [jdk]"; + try (InputStream fis = Files.newInputStream(p)) { + ks.setCertificateEntry(alias, cf.generateCertificate(fis)); + } + } + } + } + try (FileOutputStream fos = new FileOutputStream(args[1])) { + ks.store(fos, "changeit".toCharArray()); + } + } +} diff --git a/src/share/lib/security/cacerts b/src/share/lib/security/cacerts deleted file mode 100644 index 2adbd1168cbce6caf2d09aad8bc80833fd3454d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103147 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 _a?0S9EgK^gjyNpz?eOa&jIOLslU?Hc?q|*;c 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 From 87eca154096cb47b98f8097f701b9e81fe7f9aa9 Mon Sep 17 00:00:00 2001 From: andrew Date: Fri, 14 Feb 2020 15:10:31 +0000 Subject: [PATCH 02/66] 8225392: Comparison builds are failing due to cacerts file Reviewed-by: shade (minor merge in VerifyCACerts.java) --- .../generatecacerts/GenerateCacerts.java | 113 ++++++++++++++++-- .../sun/security/tools/keytool/Main.java | 6 +- .../security/lib/cacerts/VerifyCACerts.java | 21 +++- .../sun/security/tools/keytool/ListOrder.java | 64 ++++++++++ 4 files changed, 187 insertions(+), 17 deletions(-) create mode 100644 test/sun/security/tools/keytool/ListOrder.java diff --git a/make/src/classes/build/tools/generatecacerts/GenerateCacerts.java b/make/src/classes/build/tools/generatecacerts/GenerateCacerts.java index 328179442f..f3a9fcd271 100644 --- a/make/src/classes/build/tools/generatecacerts/GenerateCacerts.java +++ b/make/src/classes/build/tools/generatecacerts/GenerateCacerts.java @@ -25,14 +25,25 @@ package build.tools.generatecacerts; +import java.io.DataOutputStream; import java.io.FileOutputStream; +import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.security.KeyStore; +import java.security.DigestOutputStream; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.util.Arrays; +import java.util.SortedSet; +import java.util.TreeSet; /** * Generate cacerts @@ -41,22 +52,102 @@ */ public class GenerateCacerts { public static void main(String[] args) throws Exception { - KeyStore ks = KeyStore.getInstance("JKS"); - ks.load(null, null); + try (FileOutputStream fos = new FileOutputStream(args[1])) { + store(args[0], fos, "changeit".toCharArray()); + } + } + + // The following code is copied from JavaKeyStore.java. + + private static final int MAGIC = 0xfeedfeed; + private static final int VERSION_2 = 0x02; + + // This method is a simplified version of JavaKeyStore::engineStore. + // A new "dir" argument is added. All cert names in "dir" is collected into + // a sorted array. Each cert is stored with a creation date set to its + // notBefore value. Thus the output is determined as long as the certs + // are the same. + public static void store(String dir, OutputStream stream, char[] password) + throws IOException, NoSuchAlgorithmException, CertificateException + { + byte[] encoded; // the certificate encoding CertificateFactory cf = CertificateFactory.getInstance("X509"); - try (DirectoryStream ds = Files.newDirectoryStream(Paths.get(args[0]))) { + + MessageDigest md = getPreKeyedHash(password); + DataOutputStream dos + = new DataOutputStream(new DigestOutputStream(stream, md)); + + dos.writeInt(MAGIC); + // always write the latest version + dos.writeInt(VERSION_2); + + // All file names in dir sorted. + // README is excluded. Name starting with "." excluded. + SortedSet entries = new TreeSet(); + try (DirectoryStream ds = Files.newDirectoryStream(Paths.get(dir))) { for (Path p : ds) { String fName = p.getFileName().toString(); - if (!fName.equals("README")) { - String alias = fName + " [jdk]"; - try (InputStream fis = Files.newInputStream(p)) { - ks.setCertificateEntry(alias, cf.generateCertificate(fis)); - } + if (!fName.equals("README") && !fName.startsWith(".")) { + entries.add(fName); } } } - try (FileOutputStream fos = new FileOutputStream(args[1])) { - ks.store(fos, "changeit".toCharArray()); + + dos.writeInt(entries.size()); + + for (String entry : entries) { + + String alias = entry + " [jdk]"; + X509Certificate cert; + try (InputStream fis = Files.newInputStream(Paths.get(dir, entry))) { + cert = (X509Certificate) cf.generateCertificate(fis); + } + + dos.writeInt(2); + + // Write the alias + dos.writeUTF(alias); + + // Write the (entry creation) date, which is notBefore of the cert + dos.writeLong(cert.getNotBefore().getTime()); + + // Write the trusted certificate + encoded = cert.getEncoded(); + dos.writeUTF(cert.getType()); + dos.writeInt(encoded.length); + dos.write(encoded); + } + + /* + * Write the keyed hash which is used to detect tampering with + * the keystore (such as deleting or modifying key or + * certificate entries). + */ + byte[] digest = md.digest(); + + dos.write(digest); + dos.flush(); + } + + private static MessageDigest getPreKeyedHash(char[] password) + throws NoSuchAlgorithmException, UnsupportedEncodingException + { + + MessageDigest md = MessageDigest.getInstance("SHA"); + byte[] passwdBytes = convertToBytes(password); + md.update(passwdBytes); + Arrays.fill(passwdBytes, (byte) 0x00); + md.update("Mighty Aphrodite".getBytes("UTF8")); + return md; + } + + private static byte[] convertToBytes(char[] password) { + int i, j; + byte[] passwdBytes = new byte[password.length * 2]; + for (i=0, j=0; i> 8); + passwdBytes[j++] = (byte)password[i]; } + return passwdBytes; } } diff --git a/src/share/classes/sun/security/tools/keytool/Main.java b/src/share/classes/sun/security/tools/keytool/Main.java index 005a54070d..951b23b468 100644 --- a/src/share/classes/sun/security/tools/keytool/Main.java +++ b/src/share/classes/sun/security/tools/keytool/Main.java @@ -2236,9 +2236,9 @@ private void doPrintEntries(PrintStream out) out.println(form.format(source)); out.println(); - for (Enumeration e = keyStore.aliases(); - e.hasMoreElements(); ) { - String alias = e.nextElement(); + List aliases = Collections.list(keyStore.aliases()); + aliases.sort(String::compareTo); + for (String alias : aliases) { doPrintEntry("<" + alias + ">", alias, out); if (verbose || rfc) { out.println(rb.getString("NEWLINE")); diff --git a/test/sun/security/lib/cacerts/VerifyCACerts.java b/test/sun/security/lib/cacerts/VerifyCACerts.java index bed497b004..e20be43dcd 100644 --- a/test/sun/security/lib/cacerts/VerifyCACerts.java +++ b/test/sun/security/lib/cacerts/VerifyCACerts.java @@ -26,11 +26,13 @@ * @test * @bug 8189131 8198240 8191844 8189949 8191031 8196141 8204923 8195774 8199779 * 8209452 8209506 8210432 8195793 8216577 8222089 8222133 8222137 8222136 - * 8223499 8232019 8233223 + * 8223499 8225392 * @summary Check root CA entries in cacerts file */ +import java.io.ByteArrayInputStream; import java.io.File; -import java.io.FileInputStream; +import java.nio.file.Files; +import java.nio.file.Paths; import java.security.KeyStore; import java.security.MessageDigest; import java.security.cert.Certificate; @@ -52,6 +54,11 @@ public class VerifyCACerts { // The numbers of certs now. private static final int COUNT = 93; + // SHA-256 of cacerts, can be generated with + // shasum -a 256 cacerts | sed -e 's/../&:/g' | tr '[:lower:]' '[:upper:]' | cut -c1-95 + private static final String CHECKSUM + = "4E:21:94:7C:1D:49:28:BB:34:B0:40:DF:AE:19:B4:41:C6:B5:8A:EE:EB:D5:DE:B4:EF:07:AF:63:18:73:A6:FE"; + // map of cert alias to SHA-256 fingerprint @SuppressWarnings("serial") private static final Map FINGERPRINT_MAP @@ -266,8 +273,16 @@ public class VerifyCACerts { public static void main(String[] args) throws Exception { System.out.println("cacerts file: " + CACERTS); md = MessageDigest.getInstance("SHA-256"); + + byte[] data = Files.readAllBytes(Paths.get(CACERTS)); + String checksum = toHexString(md.digest(data)); + if (!checksum.equals(CHECKSUM)) { + atLeastOneFailed = true; + System.err.println("ERROR: wrong checksum\n" + checksum); + } + KeyStore ks = KeyStore.getInstance("JKS"); - ks.load(new FileInputStream(CACERTS), "changeit".toCharArray()); + ks.load(new ByteArrayInputStream(data), "changeit".toCharArray()); // check the count of certs inside if (ks.size() != COUNT) { diff --git a/test/sun/security/tools/keytool/ListOrder.java b/test/sun/security/tools/keytool/ListOrder.java new file mode 100644 index 0000000000..cf24bc5bd8 --- /dev/null +++ b/test/sun/security/tools/keytool/ListOrder.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8225392 + * @summary Comparison builds are failing due to cacerts file + * @library /lib/testlibrary + */ + +import jdk.testlibrary.SecurityTools; + +import java.util.Random; + +public class ListOrder { + + public static void main(String[] args) throws Throwable { + + Random rand = new Random(); + for (int i = 0; i < 10; i++) { + gen(String.format("a%02d", rand.nextInt(100))); + } + + String last = ""; + for (String line : SecurityTools.keytool( + "-keystore ks -storepass changeit -list").asLines()) { + if (line.contains("PrivateKeyEntry")) { + // This is the line starting with the alias + System.out.println(line); + if (line.compareTo(last) <= 0) { + throw new RuntimeException("Not ordered"); + } else { + last = line; + } + } + } + } + + static void gen(String a) throws Exception { + // Do not check result, there might be duplicated alias(es). + SecurityTools.keytool("-keystore ks -storepass changeit " + + "-keyalg ec -genkeypair -alias " + a + " -dname CN=" + a); + } +} From a0dce721e671efb6763656522d3e414060bca72e Mon Sep 17 00:00:00 2001 From: wetmore Date: Thu, 13 Feb 2020 15:47:52 -0800 Subject: [PATCH 03/66] 8230978: Add support for RSASSA-PSS Signature algorithm (Java SE 8) 8175029: StackOverflowError in X509CRL and X509Certificate.verify(PublicKey, Provider) 8146293: Add support for RSASSA-PSS Signature algorithm 8205445: Add RSASSA-PSS Signature support to SunMSCAPI 8205720: KeyFactory#getKeySpec and translateKey throws NullPointerException with Invalid key 8206171: Signature#getParameters for RSASSA-PSS throws ProviderException when not initialized 8213009: Refactoring existing SunMSCAPI classes 8213010: Supporting keys created with certmgr.exe 8214096: sun.security.util.SignatureUtil passes null parameter, so JCE validation fails 8215694: keytool cannot generate RSASSA-PSS certificates 8221407: Windows 32bit build error in libsunmscapi/security.cpp 8216039: TLS with BC and RSASSA-PSS breaks ECDHServerKeyExchange 8223003: SunMSCAPI keys are not cleaned up 8223063: Support CNG RSA keys 8225745: NoSuchAlgorithmException exception for SHA256withECDSA with RSASSA-PSS support 8225180: SignedObject with invalid Key not throwing the InvalidKeyException in Windows 8236470: Deal with ECDSA using ecdsa-with-SHA2 plus hash algorithm as AlgorithmId 8238502: sunmscapi.dll causing EXCEPTION_ACCESS_VIOLATION Summary: Contains elements of JDK-8051408 (see comments on JDK-8230978) Reviewed-by: valeriep, weijun, coffeys, pkoppula, andrew (minor merge conflict resolved) --- make/lib/SecurityLibraries.gmk | 4 +- .../sun/crypto/provider/OAEPParameters.java | 6 +- .../com/sun/crypto/provider/RSACipher.java | 14 +- .../com/sun/crypto/provider/SunJCE.java | 6 +- .../classes/java/security/Signature.java | 266 +++- .../classes/java/security/SignatureSpi.java | 104 +- .../classes/java/security/cert/X509CRL.java | 35 +- .../java/security/cert/X509Certificate.java | 27 +- .../java/security/interfaces/RSAKey.java | 23 +- .../RSAMultiPrimePrivateCrtKey.java | 6 +- .../security/interfaces/RSAPrivateCrtKey.java | 5 +- .../security/interfaces/package-info.java | 4 +- .../java/security/spec/MGF1ParameterSpec.java | 54 +- .../java/security/spec/PSSParameterSpec.java | 144 ++- .../security/spec/RSAKeyGenParameterSpec.java | 33 +- .../spec/RSAMultiPrimePrivateCrtKeySpec.java | 152 ++- .../java/security/spec/RSAOtherPrimeInfo.java | 13 +- .../security/spec/RSAPrivateCrtKeySpec.java | 46 +- .../java/security/spec/RSAPrivateKeySpec.java | 32 +- .../java/security/spec/RSAPublicKeySpec.java | 34 +- .../java/security/spec/package-info.java | 4 +- src/share/classes/javax/crypto/Cipher.java | 8 +- .../javax/crypto/spec/OAEPParameterSpec.java | 37 +- .../classes/javax/crypto/spec/PSource.java | 14 +- .../classes/javax/crypto/spec/package.html | 3 +- .../sun/misc/JavaSecuritySignatureAccess.java | 43 + src/share/classes/sun/misc/SharedSecrets.java | 15 +- .../classes/sun/security/ec/CurveDB.java | 21 +- .../sun/security/ec/ECDSASignature.java | 125 +- .../classes/sun/security/pkcs/SignerInfo.java | 33 +- .../classes/sun/security/pkcs10/PKCS10.java | 30 +- .../classes/sun/security/pkcs11/P11Key.java | 15 +- .../sun/security/pkcs11/P11RSAKeyFactory.java | 7 +- .../sun/security/pkcs11/P11Signature.java | 29 +- .../classes/sun/security/provider/DSA.java | 18 +- .../classes/sun/security/provider/SHA5.java | 38 +- .../sun/security/provider/SunEntries.java | 11 +- src/share/classes/sun/security/rsa/MGF1.java | 94 ++ .../sun/security/rsa/PSSParameters.java | 274 ++++ .../sun/security/rsa/RSAKeyFactory.java | 200 ++- .../sun/security/rsa/RSAKeyPairGenerator.java | 56 +- .../sun/security/rsa/RSAPSSSignature.java | 619 +++++++++ .../classes/sun/security/rsa/RSAPadding.java | 73 +- .../security/rsa/RSAPrivateCrtKeyImpl.java | 97 +- .../sun/security/rsa/RSAPrivateKeyImpl.java | 45 +- .../sun/security/rsa/RSAPublicKeyImpl.java | 90 +- .../sun/security/rsa/RSASignature.java | 58 +- .../classes/sun/security/rsa/RSAUtil.java | 162 +++ .../sun/security/rsa/SunRsaSignEntries.java | 40 +- .../sun/security/ssl/RSASignature.java | 15 +- .../classes/sun/security/ssl/SunJSSE.java | 6 +- .../security/tools/keytool/CertAndKeyGen.java | 17 +- .../sun/security/tools/keytool/Main.java | 33 +- .../classes/sun/security/util/ECUtil.java | 77 +- .../util/SecurityProviderConstants.java | 7 +- .../sun/security/util/SignatureUtil.java | 171 +++ .../sun/security/x509/AlgorithmId.java | 169 ++- .../sun/security/x509/X509CRLImpl.java | 56 +- .../sun/security/x509/X509CertImpl.java | 115 +- .../classes/sun/security/mscapi/CKey.java | 155 +++ .../mscapi/{RSAKeyPair.java => CKeyPair.java} | 23 +- .../security/mscapi/CKeyPairGenerator.java | 133 ++ .../mscapi/{KeyStore.java => CKeyStore.java} | 203 ++- .../{RSAPrivateKey.java => CPrivateKey.java} | 67 +- .../sun/security/mscapi/CPublicKey.java | 227 ++++ .../{RSACipher.java => CRSACipher.java} | 30 +- .../sun/security/mscapi/CSignature.java | 954 ++++++++++++++ .../classes/sun/security/mscapi/Key.java | 165 --- .../security/mscapi/RSAKeyPairGenerator.java | 124 -- .../sun/security/mscapi/RSAPublicKey.java | 199 --- .../sun/security/mscapi/RSASignature.java | 524 -------- .../sun/security/mscapi/SunMSCAPI.java | 83 +- .../native/sun/security/mscapi/security.cpp | 1144 +++++++++++------ .../crypto/provider/Cipher/RSA/TestOAEP.java | 50 +- .../provider/Cipher/RSA/TestOAEPPadding.java | 16 +- .../Cipher/RSA/TestOAEPParameterSpec.java | 6 +- .../Cipher/RSA/TestOAEPWithParams.java | 8 +- .../KeyPairGenerator/FinalizeHalf.java | 4 +- test/java/security/Signature/Offsets.java | 25 +- .../Signature/SignatureGetInstance.java | 238 ++++ test/java/security/SignedObject/Chain.java | 73 +- .../security/cert/X509CRL/VerifyDefault.java | 133 ++ .../cert/X509Certificate/VerifyDefault.java | 139 ++ test/java/security/testlibrary/CertUtils.java | 103 +- test/lib/jdk/test/lib/SigTestUtil.java | 150 +++ .../jdk/testlibrary/security/DerUtils.java | 117 ++ test/sun/security/ec/SignedObjectChain.java | 5 +- .../mscapi/InteropWithSunRsaSign.java | 171 +++ test/sun/security/mscapi/KeyAlgorithms.java | 79 ++ test/sun/security/mscapi/NullKey.java | 55 + .../security/mscapi/SignedObjectChain.java | 5 +- test/sun/security/mscapi/VeryLongAlias.java | 134 ++ .../provider/MessageDigest/SHA512.java | 70 + test/sun/security/rsa/SigGen15_186-3.txt | 341 +++++ .../rsa/SigGen15_186-3_TruncatedSHAs.txt | 233 ++++ test/sun/security/rsa/SigRecord.java | 198 +++ test/sun/security/rsa/SignatureOffsets.java | 8 +- test/sun/security/rsa/SignatureTest.java | 95 +- test/sun/security/rsa/SignedObjectChain.java | 10 +- .../security/rsa/TestKeyPairGenerator.java | 45 +- test/sun/security/rsa/TestSigGen15.java | 125 ++ test/sun/security/rsa/TestSignatures.java | 56 +- test/sun/security/rsa/pss/InitAgain.java | 69 + .../security/rsa/pss/PSSParametersTest.java | 123 ++ test/sun/security/rsa/pss/SigGenPSS_186-3.txt | 420 ++++++ .../rsa/pss/SigGenPSS_186-3_TruncatedSHAs.txt | 257 ++++ test/sun/security/rsa/pss/SigRecord.java | 210 +++ test/sun/security/rsa/pss/SignatureTest2.java | 200 +++ .../security/rsa/pss/SignatureTestPSS.java | 193 +++ .../security/rsa/pss/TestPSSKeySupport.java | 152 +++ test/sun/security/rsa/pss/TestSigGenPSS.java | 155 +++ .../security/ssl/rsa/SignedObjectChain.java | 7 +- test/sun/security/tools/keytool/PSS.java | 104 ++ .../security/util/misc/SetNullSigParams.java | 77 ++ .../ECSigParamsVerifyWithCert.java | 91 ++ 115 files changed, 10195 insertions(+), 2519 deletions(-) create mode 100644 src/share/classes/sun/misc/JavaSecuritySignatureAccess.java create mode 100644 src/share/classes/sun/security/rsa/MGF1.java create mode 100644 src/share/classes/sun/security/rsa/PSSParameters.java create mode 100644 src/share/classes/sun/security/rsa/RSAPSSSignature.java create mode 100644 src/share/classes/sun/security/rsa/RSAUtil.java create mode 100644 src/share/classes/sun/security/util/SignatureUtil.java create mode 100644 src/windows/classes/sun/security/mscapi/CKey.java rename src/windows/classes/sun/security/mscapi/{RSAKeyPair.java => CKeyPair.java} (70%) create mode 100644 src/windows/classes/sun/security/mscapi/CKeyPairGenerator.java rename src/windows/classes/sun/security/mscapi/{KeyStore.java => CKeyStore.java} (86%) rename src/windows/classes/sun/security/mscapi/{RSAPrivateKey.java => CPrivateKey.java} (54%) create mode 100644 src/windows/classes/sun/security/mscapi/CPublicKey.java rename src/windows/classes/sun/security/mscapi/{RSACipher.java => CRSACipher.java} (95%) create mode 100644 src/windows/classes/sun/security/mscapi/CSignature.java delete mode 100644 src/windows/classes/sun/security/mscapi/Key.java delete mode 100644 src/windows/classes/sun/security/mscapi/RSAKeyPairGenerator.java delete mode 100644 src/windows/classes/sun/security/mscapi/RSAPublicKey.java delete mode 100644 src/windows/classes/sun/security/mscapi/RSASignature.java create mode 100644 test/java/security/Signature/SignatureGetInstance.java create mode 100644 test/java/security/cert/X509CRL/VerifyDefault.java create mode 100644 test/java/security/cert/X509Certificate/VerifyDefault.java create mode 100644 test/lib/jdk/test/lib/SigTestUtil.java create mode 100644 test/lib/testlibrary/jdk/testlibrary/security/DerUtils.java create mode 100644 test/sun/security/mscapi/InteropWithSunRsaSign.java create mode 100644 test/sun/security/mscapi/KeyAlgorithms.java create mode 100644 test/sun/security/mscapi/NullKey.java create mode 100644 test/sun/security/mscapi/VeryLongAlias.java create mode 100644 test/sun/security/provider/MessageDigest/SHA512.java create mode 100644 test/sun/security/rsa/SigGen15_186-3.txt create mode 100644 test/sun/security/rsa/SigGen15_186-3_TruncatedSHAs.txt create mode 100644 test/sun/security/rsa/SigRecord.java create mode 100644 test/sun/security/rsa/TestSigGen15.java create mode 100644 test/sun/security/rsa/pss/InitAgain.java create mode 100644 test/sun/security/rsa/pss/PSSParametersTest.java create mode 100644 test/sun/security/rsa/pss/SigGenPSS_186-3.txt create mode 100644 test/sun/security/rsa/pss/SigGenPSS_186-3_TruncatedSHAs.txt create mode 100644 test/sun/security/rsa/pss/SigRecord.java create mode 100644 test/sun/security/rsa/pss/SignatureTest2.java create mode 100644 test/sun/security/rsa/pss/SignatureTestPSS.java create mode 100644 test/sun/security/rsa/pss/TestPSSKeySupport.java create mode 100644 test/sun/security/rsa/pss/TestSigGenPSS.java create mode 100644 test/sun/security/tools/keytool/PSS.java create mode 100644 test/sun/security/util/misc/SetNullSigParams.java create mode 100644 test/sun/security/x509/X509CertImpl/ECSigParamsVerifyWithCert.java diff --git a/make/lib/SecurityLibraries.gmk b/make/lib/SecurityLibraries.gmk index 2a1721bc1c..a8eeceb3cd 100644 --- a/make/lib/SecurityLibraries.gmk +++ b/make/lib/SecurityLibraries.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -171,7 +171,7 @@ ifeq ($(OPENJDK_TARGET_OS), windows) -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/mscapi, \ LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ - LDFLAGS_SUFFIX := Crypt32.Lib advapi32.lib, \ + LDFLAGS_SUFFIX := Crypt32.Lib advapi32.lib ncrypt.lib, \ VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ RC_FLAGS := $(RC_FLAGS) \ -D "JDK_FNAME=sunmscapi.dll" \ diff --git a/src/share/classes/com/sun/crypto/provider/OAEPParameters.java b/src/share/classes/com/sun/crypto/provider/OAEPParameters.java index 74b3cc408d..d3cbae6f59 100644 --- a/src/share/classes/com/sun/crypto/provider/OAEPParameters.java +++ b/src/share/classes/com/sun/crypto/provider/OAEPParameters.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -137,6 +137,10 @@ protected void engineInit(byte[] encoded) mgfSpec = MGF1ParameterSpec.SHA384; } else if (mgfDigestName.equals("SHA-512")) { mgfSpec = MGF1ParameterSpec.SHA512; + } else if (mgfDigestName.equals("SHA-512/224")) { + mgfSpec = MGF1ParameterSpec.SHA512_224; + } else if (mgfDigestName.equals("SHA-512/256")) { + mgfSpec = MGF1ParameterSpec.SHA512_256; } else { throw new IOException( "Unrecognized message digest algorithm"); diff --git a/src/share/classes/com/sun/crypto/provider/RSACipher.java b/src/share/classes/com/sun/crypto/provider/RSACipher.java index 5faefb6bda..1d7baca3f5 100644 --- a/src/share/classes/com/sun/crypto/provider/RSACipher.java +++ b/src/share/classes/com/sun/crypto/provider/RSACipher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,13 +44,15 @@ /** * RSA cipher implementation. Supports RSA en/decryption and signing/verifying - * using PKCS#1 v1.5 padding and without padding (raw RSA). Note that raw RSA - * is supported mostly for completeness and should only be used in rare cases. + * using both PKCS#1 v1.5 and OAEP (v2.2) paddings and without padding (raw RSA). + * Note that raw RSA is supported mostly for completeness and should only be + * used in rare cases. * * Objects should be instantiated by calling Cipher.getInstance() using the * following algorithm names: - * . "RSA/ECB/PKCS1Padding" (or "RSA") for PKCS#1 padding. The mode (blocktype) - * is selected based on the en/decryption mode and public/private key used + * . "RSA/ECB/PKCS1Padding" (or "RSA") for PKCS#1 v1.5 padding. + * . "RSA/ECB/OAEPwithandMGF1Padding" (or "RSA/ECB/OAEPPadding") for + * PKCS#1 v2.2 padding. * . "RSA/ECB/NoPadding" for rsa RSA. * * We only do one RSA operation per doFinal() call. If the application passes @@ -81,7 +83,7 @@ public final class RSACipher extends CipherSpi { private final static String PAD_NONE = "NoPadding"; // constant for PKCS#1 v1.5 RSA private final static String PAD_PKCS1 = "PKCS1Padding"; - // constant for PKCS#2 v2.0 OAEP with MGF1 + // constant for PKCS#2 v2.2 OAEP with MGF1 private final static String PAD_OAEP_MGF1 = "OAEP"; // current mode, one of MODE_* above. Set when init() is called diff --git a/src/share/classes/com/sun/crypto/provider/SunJCE.java b/src/share/classes/com/sun/crypto/provider/SunJCE.java index 55c55e2de5..efe8031fec 100644 --- a/src/share/classes/com/sun/crypto/provider/SunJCE.java +++ b/src/share/classes/com/sun/crypto/provider/SunJCE.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -131,7 +131,9 @@ public Object run() { + "|OAEPWITHSHA-224ANDMGF1PADDING" + "|OAEPWITHSHA-256ANDMGF1PADDING" + "|OAEPWITHSHA-384ANDMGF1PADDING" - + "|OAEPWITHSHA-512ANDMGF1PADDING"); + + "|OAEPWITHSHA-512ANDMGF1PADDING" + + "|OAEPWITHSHA-512/224ANDMGF1PADDING" + + "|OAEPWITHSHA-512/256ANDMGF1PADDING"); put("Cipher.RSA SupportedKeyClasses", "java.security.interfaces.RSAPublicKey" + "|java.security.interfaces.RSAPrivateKey"); diff --git a/src/share/classes/java/security/Signature.java b/src/share/classes/java/security/Signature.java index 5232b9c469..8d8408c492 100644 --- a/src/share/classes/java/security/Signature.java +++ b/src/share/classes/java/security/Signature.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,6 +41,8 @@ import javax.crypto.IllegalBlockSizeException; import javax.crypto.BadPaddingException; import javax.crypto.NoSuchPaddingException; +import sun.misc.JavaSecuritySignatureAccess; +import sun.misc.SharedSecrets; import sun.security.util.Debug; import sun.security.jca.*; @@ -117,6 +119,34 @@ public abstract class Signature extends SignatureSpi { + static { + SharedSecrets.setJavaSecuritySignatureAccess( + new JavaSecuritySignatureAccess() { + @Override + public void initVerify(Signature s, PublicKey publicKey, + AlgorithmParameterSpec params) + throws InvalidKeyException, + InvalidAlgorithmParameterException { + s.initVerify(publicKey, params); + } + @Override + public void initVerify(Signature s, + java.security.cert.Certificate certificate, + AlgorithmParameterSpec params) + throws InvalidKeyException, + InvalidAlgorithmParameterException { + s.initVerify(certificate, params); + } + @Override + public void initSign(Signature s, PrivateKey privateKey, + AlgorithmParameterSpec params, SecureRandom random) + throws InvalidKeyException, + InvalidAlgorithmParameterException { + s.initSign(privateKey, params, random); + } + }); + } + private static final Debug debug = Debug.getInstance("jca", "Signature"); @@ -275,6 +305,7 @@ private static Signature getInstance(Instance instance, String algorithm) { signatureInfo.put("sun.security.rsa.RSASignature$SHA256withRSA", TRUE); signatureInfo.put("sun.security.rsa.RSASignature$SHA384withRSA", TRUE); signatureInfo.put("sun.security.rsa.RSASignature$SHA512withRSA", TRUE); + signatureInfo.put("sun.security.rsa.RSAPSSSignature", TRUE); signatureInfo.put("com.sun.net.ssl.internal.ssl.RSASignature", TRUE); signatureInfo.put("sun.security.pkcs11.P11Signature", TRUE); } @@ -466,6 +497,53 @@ public final void initVerify(PublicKey publicKey) } } + /** + * Initialize this object for verification. If this method is called + * again with different arguments, it negates the effect + * of this call. + * + * @param publicKey the public key of the identity whose signature is + * going to be verified. + * @param params the parameters used for verifying this signature. + * + * @exception InvalidKeyException if the key is invalid. + * @exception InvalidAlgorithmParameterException if the params is invalid. + */ + final void initVerify(PublicKey publicKey, AlgorithmParameterSpec params) + throws InvalidKeyException, InvalidAlgorithmParameterException { + engineInitVerify(publicKey, params); + state = VERIFY; + + if (!skipDebug && pdebug != null) { + pdebug.println("Signature." + algorithm + + " verification algorithm from: " + getProviderName()); + } + } + + private static PublicKey getPublicKeyFromCert(Certificate cert) + throws InvalidKeyException { + // If the certificate is of type X509Certificate, + // we should check whether it has a Key Usage + // extension marked as critical. + //if (cert instanceof java.security.cert.X509Certificate) { + if (cert instanceof X509Certificate) { + // Check whether the cert has a key usage extension + // marked as a critical extension. + // The OID for KeyUsage extension is 2.5.29.15. + X509Certificate c = (X509Certificate)cert; + Set critSet = c.getCriticalExtensionOIDs(); + + if (critSet != null && !critSet.isEmpty() + && critSet.contains("2.5.29.15")) { + boolean[] keyUsageInfo = c.getKeyUsage(); + // keyUsageInfo[0] is for digitalSignature. + if ((keyUsageInfo != null) && (keyUsageInfo[0] == false)) + throw new InvalidKeyException("Wrong key usage"); + } + } + return cert.getPublicKey(); + } + /** * Initializes this object for verification, using the public key from * the given certificate. @@ -486,27 +564,40 @@ public final void initVerify(PublicKey publicKey) */ public final void initVerify(Certificate certificate) throws InvalidKeyException { - // If the certificate is of type X509Certificate, - // we should check whether it has a Key Usage - // extension marked as critical. - if (certificate instanceof java.security.cert.X509Certificate) { - // Check whether the cert has a key usage extension - // marked as a critical extension. - // The OID for KeyUsage extension is 2.5.29.15. - X509Certificate cert = (X509Certificate)certificate; - Set critSet = cert.getCriticalExtensionOIDs(); + engineInitVerify(getPublicKeyFromCert(certificate)); + state = VERIFY; - if (critSet != null && !critSet.isEmpty() - && critSet.contains("2.5.29.15")) { - boolean[] keyUsageInfo = cert.getKeyUsage(); - // keyUsageInfo[0] is for digitalSignature. - if ((keyUsageInfo != null) && (keyUsageInfo[0] == false)) - throw new InvalidKeyException("Wrong key usage"); - } + if (!skipDebug && pdebug != null) { + pdebug.println("Signature." + algorithm + + " verification algorithm from: " + getProviderName()); } + } - PublicKey publicKey = certificate.getPublicKey(); - engineInitVerify(publicKey); + /** + * Initializes this object for verification, using the public key from + * the given certificate. + *

If the certificate is of type X.509 and has a key usage + * extension field marked as critical, and the value of the key usage + * extension field implies that the public key in + * the certificate and its corresponding private key are not + * supposed to be used for digital signatures, an + * {@code InvalidKeyException} is thrown. + * + * @param certificate the certificate of the identity whose signature is + * going to be verified. + * @param params the parameters used for verifying this signature. + * + * @exception InvalidKeyException if the public key in the certificate + * is not encoded properly or does not include required parameter + * information or cannot be used for digital signature purposes. + * @exception InvalidAlgorithmParameterException if the params is invalid. + * + * @since 8 + */ + final void initVerify(Certificate certificate, + AlgorithmParameterSpec params) + throws InvalidKeyException, InvalidAlgorithmParameterException { + engineInitVerify(getPublicKeyFromCert(certificate), params); state = VERIFY; if (!skipDebug && pdebug != null) { @@ -559,6 +650,31 @@ public final void initSign(PrivateKey privateKey, SecureRandom random) } } + /** + * Initialize this object for signing. If this method is called + * again with different arguments, it negates the effect + * of this call. + * + * @param privateKey the private key of the identity whose signature + * is going to be generated. + * @param params the parameters used for generating signature. + * @param random the source of randomness for this signature. + * + * @exception InvalidKeyException if the key is invalid. + * @exception InvalidAlgorithmParameterException if the params is invalid + */ + final void initSign(PrivateKey privateKey, + AlgorithmParameterSpec params, SecureRandom random) + throws InvalidKeyException, InvalidAlgorithmParameterException { + engineInitSign(privateKey, params, random); + state = SIGN; + + if (!skipDebug && pdebug != null) { + pdebug.println("Signature." + algorithm + + " signing algorithm from: " + getProviderName()); + } + } + /** * Returns the signature bytes of all the data updated. * The format of the signature depends on the underlying @@ -680,7 +796,7 @@ public final boolean verify(byte[] signature) throws SignatureException { * encoded or of the wrong type, if this signature algorithm is unable to * process the input data provided, etc. * @exception IllegalArgumentException if the {@code signature} - * byte array is null, or the {@code offset} or {@code length} + * byte array is {@code null}, or the {@code offset} or {@code length} * is less than 0, or the sum of the {@code offset} and * {@code length} is greater than the length of the * {@code signature} byte array. @@ -873,14 +989,15 @@ public final void setParameter(AlgorithmParameterSpec params) /** * Returns the parameters used with this signature object. * - *

The returned parameters may be the same that were used to initialize - * this signature, or may contain a combination of default and randomly - * generated parameter values used by the underlying signature - * implementation if this signature requires algorithm parameters but - * was not initialized with any. + *

If this signature has been previously initialized with parameters + * (by calling the {@code setParameter} method), this method returns + * the same parameters. If this signature has not been initialized with + * parameters, this method may return a combination of default and + * randomly generated parameter values if the underlying + * signature implementation supports it and can successfully generate + * them. Otherwise, {@code null} is returned. * - * @return the parameters used with this signature, or null if this - * signature does not use any parameters. + * @return the parameters used with this signature, or {@code null} * * @see #setParameter(AlgorithmParameterSpec) * @since 1.4 @@ -901,7 +1018,7 @@ public final AlgorithmParameters getParameters() { * * @param param the string name of the parameter. * - * @return the object that represents the parameter value, or null if + * @return the object that represents the parameter value, or {@code null} if * there is none. * * @exception InvalidParameterException if {@code param} is an invalid @@ -1086,11 +1203,13 @@ void chooseFirstProvider() { } } - private void chooseProvider(int type, Key key, SecureRandom random) - throws InvalidKeyException { + // Used by engineSetParameter/engineInitSign/engineInitVerify() to + // find the right provider with the supplied key, parameters, random source + private void chooseProvider(int type, Key key, + AlgorithmParameterSpec params, SecureRandom random) + throws InvalidKeyException, InvalidAlgorithmParameterException { synchronized (lock) { if (sigSpi != null) { - init(sigSpi, type, key, random); return; } Exception lastException = null; @@ -1103,7 +1222,7 @@ private void chooseProvider(int type, Key key, SecureRandom random) s = serviceIterator.next(); } // if provider says it does not support this key, ignore it - if (s.supportsParameter(key) == false) { + if (key != null && s.supportsParameter(key) == false) { continue; } // if instance is not a SignatureSpi, ignore it @@ -1112,7 +1231,7 @@ private void chooseProvider(int type, Key key, SecureRandom random) } try { SignatureSpi spi = newInstance(s); - init(spi, type, key, random); + tryOperation(spi, type, key, params, random); provider = s.getProvider(); sigSpi = spi; firstService = null; @@ -1134,6 +1253,10 @@ private void chooseProvider(int type, Key key, SecureRandom random) if (lastException instanceof RuntimeException) { throw (RuntimeException)lastException; } + if (lastException instanceof InvalidAlgorithmParameterException) { + throw (InvalidAlgorithmParameterException)lastException; + } + String k = (key != null) ? key.getClass().getName() : "(null)"; throw new InvalidKeyException ("No installed provider supports this key: " @@ -1141,22 +1264,36 @@ private void chooseProvider(int type, Key key, SecureRandom random) } } - private final static int I_PUB = 1; - private final static int I_PRIV = 2; - private final static int I_PRIV_SR = 3; + private static final int I_PUB = 1; + private static final int I_PRIV = 2; + private static final int I_PRIV_SR = 3; + private static final int I_PUB_PARAM = 4; + private static final int I_PRIV_PARAM_SR = 5; + private static final int S_PARAM = 6; + + private void tryOperation(SignatureSpi spi, int type, Key key, + AlgorithmParameterSpec params, SecureRandom random) + throws InvalidKeyException, InvalidAlgorithmParameterException { - private void init(SignatureSpi spi, int type, Key key, - SecureRandom random) throws InvalidKeyException { switch (type) { case I_PUB: spi.engineInitVerify((PublicKey)key); break; + case I_PUB_PARAM: + spi.engineInitVerify((PublicKey)key, params); + break; case I_PRIV: spi.engineInitSign((PrivateKey)key); break; case I_PRIV_SR: spi.engineInitSign((PrivateKey)key, random); break; + case I_PRIV_PARAM_SR: + spi.engineInitSign((PrivateKey)key, params, random); + break; + case S_PARAM: + spi.engineSetParameter(params); + break; default: throw new AssertionError("Internal error: " + type); } @@ -1167,7 +1304,22 @@ protected void engineInitVerify(PublicKey publicKey) if (sigSpi != null) { sigSpi.engineInitVerify(publicKey); } else { - chooseProvider(I_PUB, publicKey, null); + try { + chooseProvider(I_PUB, publicKey, null, null); + } catch (InvalidAlgorithmParameterException iape) { + // should not happen, re-throw as IKE just in case + throw new InvalidKeyException(iape); + } + } + } + + void engineInitVerify(PublicKey publicKey, + AlgorithmParameterSpec params) + throws InvalidKeyException, InvalidAlgorithmParameterException { + if (sigSpi != null) { + sigSpi.engineInitVerify(publicKey, params); + } else { + chooseProvider(I_PUB_PARAM, publicKey, params, null); } } @@ -1176,7 +1328,12 @@ protected void engineInitSign(PrivateKey privateKey) if (sigSpi != null) { sigSpi.engineInitSign(privateKey); } else { - chooseProvider(I_PRIV, privateKey, null); + try { + chooseProvider(I_PRIV, privateKey, null, null); + } catch (InvalidAlgorithmParameterException iape) { + // should not happen, re-throw as IKE just in case + throw new InvalidKeyException(iape); + } } } @@ -1185,7 +1342,22 @@ protected void engineInitSign(PrivateKey privateKey, SecureRandom sr) if (sigSpi != null) { sigSpi.engineInitSign(privateKey, sr); } else { - chooseProvider(I_PRIV_SR, privateKey, sr); + try { + chooseProvider(I_PRIV_SR, privateKey, null, sr); + } catch (InvalidAlgorithmParameterException iape) { + // should not happen, re-throw as IKE just in case + throw new InvalidKeyException(iape); + } + } + } + + void engineInitSign(PrivateKey privateKey, + AlgorithmParameterSpec params, SecureRandom sr) + throws InvalidKeyException, InvalidAlgorithmParameterException { + if (sigSpi != null) { + sigSpi.engineInitSign(privateKey, params, sr); + } else { + chooseProvider(I_PRIV_PARAM_SR, privateKey, params, sr); } } @@ -1236,8 +1408,16 @@ protected void engineSetParameter(String param, Object value) protected void engineSetParameter(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException { - chooseFirstProvider(); - sigSpi.engineSetParameter(params); + if (sigSpi != null) { + sigSpi.engineSetParameter(params); + } else { + try { + chooseProvider(S_PARAM, null, params, null); + } catch (InvalidKeyException ike) { + // should never happen, rethrow just in case + throw new InvalidAlgorithmParameterException(ike); + } + } } protected Object engineGetParameter(String param) diff --git a/src/share/classes/java/security/SignatureSpi.java b/src/share/classes/java/security/SignatureSpi.java index d6d2bc39b5..87df4bbaf2 100644 --- a/src/share/classes/java/security/SignatureSpi.java +++ b/src/share/classes/java/security/SignatureSpi.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -69,6 +69,33 @@ public abstract class SignatureSpi { protected abstract void engineInitVerify(PublicKey publicKey) throws InvalidKeyException; + /** + * Initializes this signature object with the specified + * public key for verification operations. + * + * @param publicKey the public key of the identity whose signature is + * going to be verified. + * @param params the parameters for generating this signature + * + * @exception InvalidKeyException if the key is improperly + * encoded, does not work with the given parameters, and so on. + * @exception InvalidAlgorithmParameterException if the given parameters + * is invalid. + */ + void engineInitVerify(PublicKey publicKey, + AlgorithmParameterSpec params) + throws InvalidKeyException, InvalidAlgorithmParameterException { + if (params != null) { + try { + engineSetParameter(params); + } catch (UnsupportedOperationException usoe) { + // error out if not overrridden + throw new InvalidAlgorithmParameterException(usoe); + } + } + engineInitVerify(publicKey); + } + /** * Initializes this signature object with the specified * private key for signing operations. @@ -97,10 +124,41 @@ protected abstract void engineInitSign(PrivateKey privateKey) * encoded, parameters are missing, and so on. */ protected void engineInitSign(PrivateKey privateKey, - SecureRandom random) - throws InvalidKeyException { - this.appRandom = random; - engineInitSign(privateKey); + SecureRandom random) + throws InvalidKeyException { + this.appRandom = random; + engineInitSign(privateKey); + } + + /** + * Initializes this signature object with the specified + * private key and source of randomness for signing operations. + * + *

This concrete method has been added to this previously-defined + * abstract class. (For backwards compatibility, it cannot be abstract.) + * + * @param privateKey the private key of the identity whose signature + * will be generated. + * @param params the parameters for generating this signature + * @param random the source of randomness + * + * @exception InvalidKeyException if the key is improperly + * encoded, parameters are missing, and so on. + * @exception InvalidAlgorithmParameterException if the parameters is + * invalid. + */ + void engineInitSign(PrivateKey privateKey, + AlgorithmParameterSpec params, SecureRandom random) + throws InvalidKeyException, InvalidAlgorithmParameterException { + if (params != null) { + try { + engineSetParameter(params); + } catch (UnsupportedOperationException usoe) { + // error out if not overrridden + throw new InvalidAlgorithmParameterException(usoe); + } + } + engineInitSign(privateKey, random); } /** @@ -126,7 +184,7 @@ protected void engineInitSign(PrivateKey privateKey, * properly */ protected abstract void engineUpdate(byte[] b, int off, int len) - throws SignatureException; + throws SignatureException; /** * Updates the data to be signed or verified using the specified @@ -222,7 +280,7 @@ protected void engineUpdate(ByteBuffer input) { * @since 1.2 */ protected int engineSign(byte[] outbuf, int offset, int len) - throws SignatureException { + throws SignatureException { byte[] sig = engineSign(); if (len < sig.length) { throw new SignatureException @@ -250,7 +308,7 @@ protected int engineSign(byte[] outbuf, int offset, int len) * process the input data provided, etc. */ protected abstract boolean engineVerify(byte[] sigBytes) - throws SignatureException; + throws SignatureException; /** * Verifies the passed-in signature in the specified array @@ -272,7 +330,7 @@ protected abstract boolean engineVerify(byte[] sigBytes) * @since 1.4 */ protected boolean engineVerify(byte[] sigBytes, int offset, int length) - throws SignatureException { + throws SignatureException { byte[] sigBytesCopy = new byte[length]; System.arraycopy(sigBytes, offset, sigBytesCopy, 0, length); return engineVerify(sigBytesCopy); @@ -304,7 +362,7 @@ protected boolean engineVerify(byte[] sigBytes, int offset, int length) */ @Deprecated protected abstract void engineSetParameter(String param, Object value) - throws InvalidParameterException; + throws InvalidParameterException; /** *

This method is overridden by providers to initialize @@ -320,23 +378,23 @@ protected abstract void engineSetParameter(String param, Object value) * are inappropriate for this signature engine */ protected void engineSetParameter(AlgorithmParameterSpec params) - throws InvalidAlgorithmParameterException { - throw new UnsupportedOperationException(); + throws InvalidAlgorithmParameterException { + throw new UnsupportedOperationException(); } /** - *

This method is overridden by providers to return the - * parameters used with this signature engine, or null - * if this signature engine does not use any parameters. + *

This method is overridden by providers to return the parameters + * used with this signature engine. * - *

The returned parameters may be the same that were used to initialize - * this signature engine, or may contain a combination of default and - * randomly generated parameter values used by the underlying signature - * implementation if this signature engine requires algorithm parameters - * but was not initialized with any. + *

If this signature engine has been previously initialized with + * parameters (by calling the {@code engineSetParameter} method), this + * method returns the same parameters. If this signature engine has not been + * initialized with parameters, this method may return a combination of + * default and randomly generated parameter values if the underlying + * signature implementation supports it and can successfully generate + * them. Otherwise, {@code null} is returned. * - * @return the parameters used with this signature engine, or null if this - * signature engine does not use any parameters + * @return the parameters used with this signature engine, or {@code null} * * @exception UnsupportedOperationException if this method is * not overridden by a provider @@ -359,7 +417,7 @@ protected AlgorithmParameters engineGetParameters() { * * @param param the string name of the parameter. * - * @return the object that represents the parameter value, or null if + * @return the object that represents the parameter value, or {@code null} if * there is none. * * @exception InvalidParameterException if {@code param} is an diff --git a/src/share/classes/java/security/cert/X509CRL.java b/src/share/classes/java/security/cert/X509CRL.java index 2133290735..2b48ceb7bb 100644 --- a/src/share/classes/java/security/cert/X509CRL.java +++ b/src/share/classes/java/security/cert/X509CRL.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,13 +25,9 @@ package java.security.cert; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.InvalidKeyException; -import java.security.SignatureException; -import java.security.Principal; -import java.security.Provider; -import java.security.PublicKey; +import java.security.*; +import java.security.spec.*; + import javax.security.auth.x500.X500Principal; import java.math.BigInteger; @@ -40,6 +36,7 @@ import java.util.Arrays; import sun.security.x509.X509CRLImpl; +import sun.security.util.SignatureUtil; /** *

@@ -241,7 +238,27 @@ public abstract void verify(PublicKey key, String sigProvider) public void verify(PublicKey key, Provider sigProvider) throws CRLException, NoSuchAlgorithmException, InvalidKeyException, SignatureException { - X509CRLImpl.verify(this, key, sigProvider); + String sigAlgName = getSigAlgName(); + Signature sig = (sigProvider == null) + ? Signature.getInstance(sigAlgName) + : Signature.getInstance(sigAlgName, sigProvider); + + try { + byte[] paramBytes = getSigAlgParams(); + SignatureUtil.initVerifyWithParam(sig, key, + SignatureUtil.getParamSpec(sigAlgName, paramBytes)); + } catch (ProviderException e) { + throw new CRLException(e.getMessage(), e.getCause()); + } catch (InvalidAlgorithmParameterException e) { + throw new CRLException(e); + } + + byte[] tbsCRL = getTBSCertList(); + sig.update(tbsCRL, 0, tbsCRL.length); + + if (sig.verify(getSignature()) == false) { + throw new SignatureException("Signature does not match."); + } } /** diff --git a/src/share/classes/java/security/cert/X509Certificate.java b/src/share/classes/java/security/cert/X509Certificate.java index 174d6a7383..b13866a457 100644 --- a/src/share/classes/java/security/cert/X509Certificate.java +++ b/src/share/classes/java/security/cert/X509Certificate.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,12 +27,14 @@ import java.math.BigInteger; import java.security.*; +import java.security.spec.*; import java.util.Collection; import java.util.Date; import java.util.List; import javax.security.auth.x500.X500Principal; import sun.security.x509.X509CertImpl; +import sun.security.util.SignatureUtil; /** *

@@ -647,7 +649,7 @@ public Collection> getIssuerAlternativeNames() return X509CertImpl.getIssuerAlternativeNames(this); } - /** + /** * Verifies that this certificate was signed using the * private key that corresponds to the specified public key. * This method uses the signature verification engine @@ -673,6 +675,25 @@ public Collection> getIssuerAlternativeNames() public void verify(PublicKey key, Provider sigProvider) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, SignatureException { - X509CertImpl.verify(this, key, sigProvider); + String sigName = getSigAlgName(); + Signature sig = (sigProvider == null) + ? Signature.getInstance(sigName) + : Signature.getInstance(sigName, sigProvider); + + try { + SignatureUtil.initVerifyWithParam(sig, key, + SignatureUtil.getParamSpec(sigName, getSigAlgParams())); + } catch (ProviderException e) { + throw new CertificateException(e.getMessage(), e.getCause()); + } catch (InvalidAlgorithmParameterException e) { + throw new CertificateException(e); + } + + byte[] tbsCert = getTBSCertificate(); + sig.update(tbsCert, 0, tbsCert.length); + + if (sig.verify(getSignature()) == false) { + throw new SignatureException("Signature does not match."); + } } } diff --git a/src/share/classes/java/security/interfaces/RSAKey.java b/src/share/classes/java/security/interfaces/RSAKey.java index 67fbe2bf81..5703d669d6 100644 --- a/src/share/classes/java/security/interfaces/RSAKey.java +++ b/src/share/classes/java/security/interfaces/RSAKey.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,9 +26,12 @@ package java.security.interfaces; import java.math.BigInteger; +import java.security.spec.AlgorithmParameterSpec; /** - * The interface to an RSA public or private key. + * The interface to a public or private key in + * PKCS#1 v2.2 standard, + * such as those for RSA, or RSASSA-PSS algorithms. * * @author Jan Luehe * @@ -46,4 +49,20 @@ public interface RSAKey { * @return the modulus */ public BigInteger getModulus(); + + /** + * Returns the parameters associated with this key. + * The parameters are optional and may be either + * explicitly specified or implicitly created during + * key pair generation. + * + * @implSpec + * The default implementation returns {@code null}. + * + * @return the associated parameters, may be null + * @since 8 + */ + default AlgorithmParameterSpec getParams() { + return null; + } } diff --git a/src/share/classes/java/security/interfaces/RSAMultiPrimePrivateCrtKey.java b/src/share/classes/java/security/interfaces/RSAMultiPrimePrivateCrtKey.java index f85d96a768..e9afe9cc9f 100644 --- a/src/share/classes/java/security/interfaces/RSAMultiPrimePrivateCrtKey.java +++ b/src/share/classes/java/security/interfaces/RSAMultiPrimePrivateCrtKey.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,8 +30,8 @@ /** * The interface to an RSA multi-prime private key, as defined in the - * PKCS#1 v2.1, using the Chinese Remainder Theorem - * (CRT) information values. + * PKCS#1 v2.2 standard, + * using the Chinese Remainder Theorem (CRT) information values. * * @author Valerie Peng * diff --git a/src/share/classes/java/security/interfaces/RSAPrivateCrtKey.java b/src/share/classes/java/security/interfaces/RSAPrivateCrtKey.java index 0408feabbb..4b391c0888 100644 --- a/src/share/classes/java/security/interfaces/RSAPrivateCrtKey.java +++ b/src/share/classes/java/security/interfaces/RSAPrivateCrtKey.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,7 +28,8 @@ import java.math.BigInteger; /** - * The interface to an RSA private key, as defined in the PKCS#1 standard, + * The interface to an RSA private key, as defined in the + * PKCS#1 v2.2 standard, * using the Chinese Remainder Theorem (CRT) information values. * * @author Jan Luehe diff --git a/src/share/classes/java/security/interfaces/package-info.java b/src/share/classes/java/security/interfaces/package-info.java index 54c9397e69..808224395d 100644 --- a/src/share/classes/java/security/interfaces/package-info.java +++ b/src/share/classes/java/security/interfaces/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -52,7 +52,7 @@ *

Package Specification

* *
    - *
  • PKCS #1: RSA Encryption Standard, Version 1.5, November 1993
  • + *
  • PKCS #1: RSA Cryptography Specifications, Version 2.2 (RFC 8017)
  • *
  • Federal Information Processing Standards Publication (FIPS PUB) 186: * Digital Signature Standard (DSS)
  • *
diff --git a/src/share/classes/java/security/spec/MGF1ParameterSpec.java b/src/share/classes/java/security/spec/MGF1ParameterSpec.java index 1be267f0ce..3821b84b5c 100644 --- a/src/share/classes/java/security/spec/MGF1ParameterSpec.java +++ b/src/share/classes/java/security/spec/MGF1ParameterSpec.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,23 +29,31 @@ /** * This class specifies the set of parameters used with mask generation - * function MGF1 in OAEP Padding and RSA-PSS signature scheme, as + * function MGF1 in OAEP Padding and RSASSA-PSS signature scheme, as * defined in the - * PKCS #1 v2.1 - * standard. + * PKCS#1 v2.2 standard. * *

Its ASN.1 definition in PKCS#1 standard is described below: *

- * MGF1Parameters ::= OAEP-PSSDigestAlgorthms
+ * PKCS1MGFAlgorithms    ALGORITHM-IDENTIFIER ::= {
+ *   { OID id-mgf1 PARAMETERS HashAlgorithm },
+ *   ...  -- Allows for future expansion --
+ * }
  * 
* where *
+ * HashAlgorithm ::= AlgorithmIdentifier {
+ *   {OAEP-PSSDigestAlgorithms}
+ * }
+ *
  * OAEP-PSSDigestAlgorithms    ALGORITHM-IDENTIFIER ::= {
- *   { OID id-sha1 PARAMETERS NULL   }|
- *   { OID id-sha224 PARAMETERS NULL   }|
- *   { OID id-sha256 PARAMETERS NULL }|
- *   { OID id-sha384 PARAMETERS NULL }|
- *   { OID id-sha512 PARAMETERS NULL },
+ *   { OID id-sha1       PARAMETERS NULL }|
+ *   { OID id-sha224     PARAMETERS NULL }|
+ *   { OID id-sha256     PARAMETERS NULL }|
+ *   { OID id-sha384     PARAMETERS NULL }|
+ *   { OID id-sha512     PARAMETERS NULL }|
+ *   { OID id-sha512-224 PARAMETERS NULL }|
+ *   { OID id-sha512-256 PARAMETERS NULL },
  *   ...  -- Allows for future expansion --
  * }
  * 
@@ -59,31 +67,47 @@ public class MGF1ParameterSpec implements AlgorithmParameterSpec { /** - * The MGF1ParameterSpec which uses "SHA-1" message digest. + * The MGF1ParameterSpec which uses "SHA-1" message digest */ public static final MGF1ParameterSpec SHA1 = new MGF1ParameterSpec("SHA-1"); + /** - * The MGF1ParameterSpec which uses "SHA-224" message digest. + * The MGF1ParameterSpec which uses "SHA-224" message digest */ public static final MGF1ParameterSpec SHA224 = new MGF1ParameterSpec("SHA-224"); + /** - * The MGF1ParameterSpec which uses "SHA-256" message digest. + * The MGF1ParameterSpec which uses "SHA-256" message digest */ public static final MGF1ParameterSpec SHA256 = new MGF1ParameterSpec("SHA-256"); + /** - * The MGF1ParameterSpec which uses "SHA-384" message digest. + * The MGF1ParameterSpec which uses "SHA-384" message digest */ public static final MGF1ParameterSpec SHA384 = new MGF1ParameterSpec("SHA-384"); + /** - * The MGF1ParameterSpec which uses SHA-512 message digest. + * The MGF1ParameterSpec which uses SHA-512 message digest */ public static final MGF1ParameterSpec SHA512 = new MGF1ParameterSpec("SHA-512"); + /** + * The MGF1ParameterSpec which uses SHA-512/224 message digest + */ + public static final MGF1ParameterSpec SHA512_224 = + new MGF1ParameterSpec("SHA-512/224"); + + /** + * The MGF1ParameterSpec which uses SHA-512/256 message digest + */ + public static final MGF1ParameterSpec SHA512_256 = + new MGF1ParameterSpec("SHA-512/256"); + private String mdName; /** diff --git a/src/share/classes/java/security/spec/PSSParameterSpec.java b/src/share/classes/java/security/spec/PSSParameterSpec.java index a9b82d8e42..7e725d7590 100644 --- a/src/share/classes/java/security/spec/PSSParameterSpec.java +++ b/src/share/classes/java/security/spec/PSSParameterSpec.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,37 +25,42 @@ package java.security.spec; -import java.math.BigInteger; -import java.security.spec.MGF1ParameterSpec; +import java.util.Objects; /** - * This class specifies a parameter spec for RSA-PSS signature scheme, + * This class specifies a parameter spec for RSASSA-PSS signature scheme, * as defined in the - * PKCS#1 v2.1 - * standard. + * PKCS#1 v2.2 standard. * *

Its ASN.1 definition in PKCS#1 standard is described below: *

  * RSASSA-PSS-params ::= SEQUENCE {
- *   hashAlgorithm      [0] OAEP-PSSDigestAlgorithms  DEFAULT sha1,
- *   maskGenAlgorithm   [1] PKCS1MGFAlgorithms  DEFAULT mgf1SHA1,
- *   saltLength         [2] INTEGER  DEFAULT 20,
- *   trailerField       [3] INTEGER  DEFAULT 1
+ *   hashAlgorithm      [0] HashAlgorithm      DEFAULT sha1,
+ *   maskGenAlgorithm   [1] MaskGenAlgorithm   DEFAULT mgf1SHA1,
+ *   saltLength         [2] INTEGER            DEFAULT 20,
+ *   trailerField       [3] TrailerField       DEFAULT trailerFieldBC(1)
  * }
  * 
* where *
+ * HashAlgorithm ::= AlgorithmIdentifier {
+ *   {OAEP-PSSDigestAlgorithms}
+ * }
+ * MaskGenAlgorithm ::= AlgorithmIdentifier { {PKCS1MGFAlgorithms} }
+ * TrailerField ::= INTEGER { trailerFieldBC(1) }
+ *
  * OAEP-PSSDigestAlgorithms    ALGORITHM-IDENTIFIER ::= {
- *   { OID id-sha1 PARAMETERS NULL   }|
- *   { OID id-sha224 PARAMETERS NULL   }|
- *   { OID id-sha256 PARAMETERS NULL }|
- *   { OID id-sha384 PARAMETERS NULL }|
- *   { OID id-sha512 PARAMETERS NULL },
+ *   { OID id-sha1       PARAMETERS NULL }|
+ *   { OID id-sha224     PARAMETERS NULL }|
+ *   { OID id-sha256     PARAMETERS NULL }|
+ *   { OID id-sha384     PARAMETERS NULL }|
+ *   { OID id-sha512     PARAMETERS NULL }|
+ *   { OID id-sha512-224 PARAMETERS NULL }|
+ *   { OID id-sha512-256 PARAMETERS NULL },
  *   ...  -- Allows for future expansion --
  * }
- *
  * PKCS1MGFAlgorithms    ALGORITHM-IDENTIFIER ::= {
- *   { OID id-mgf1 PARAMETERS OAEP-PSSDigestAlgorithms },
+ *   { OID id-mgf1 PARAMETERS HashAlgorithm },
  *   ...  -- Allows for future expansion --
  * }
  * 
@@ -78,55 +83,62 @@ public class PSSParameterSpec implements AlgorithmParameterSpec { - private String mdName = "SHA-1"; - private String mgfName = "MGF1"; - private AlgorithmParameterSpec mgfSpec = MGF1ParameterSpec.SHA1; - private int saltLen = 20; - private int trailerField = 1; + private final String mdName; + + private final String mgfName; + + private final AlgorithmParameterSpec mgfSpec; + + private final int saltLen; + + private final int trailerField; /** - * The PSS parameter set with all default values. - * @since 1.5 + * The {@code TrailerFieldBC} constant as defined in PKCS#1 + * + * @since 8 */ - public static final PSSParameterSpec DEFAULT = new PSSParameterSpec(); + public static final int TRAILER_FIELD_BC = 1; /** - * Constructs a new {@code PSSParameterSpec} as defined in - * the PKCS #1 standard using the default values. + * The PSS parameter set with all default values + * + * @since 1.5 */ + public static final PSSParameterSpec DEFAULT = new PSSParameterSpec + ("SHA-1", "MGF1", MGF1ParameterSpec.SHA1, 20, TRAILER_FIELD_BC); + + + // disallowed private PSSParameterSpec() { + throw new RuntimeException("default constructor not allowed"); } + /** * Creates a new {@code PSSParameterSpec} as defined in * the PKCS #1 standard using the specified message digest, * mask generation function, parameters for mask generation * function, salt length, and trailer field values. * - * @param mdName the algorithm name of the hash function. - * @param mgfName the algorithm name of the mask generation - * function. - * @param mgfSpec the parameters for the mask generation - * function. If null is specified, null will be returned by - * getMGFParameters(). - * @param saltLen the length of salt. - * @param trailerField the value of the trailer field. - * @exception NullPointerException if {@code mdName}, - * or {@code mgfName} is null. - * @exception IllegalArgumentException if {@code saltLen} - * or {@code trailerField} is less than 0. + * @param mdName the algorithm name of the hash function + * @param mgfName the algorithm name of the mask generation function + * @param mgfSpec the parameters for the mask generation function. + * If null is specified, null will be returned by + * getMGFParameters(). + * @param saltLen the length of salt + * @param trailerField the value of the trailer field + * @exception NullPointerException if {@code mdName}, or {@code mgfName} + * is null + * @exception IllegalArgumentException if {@code saltLen} or + * {@code trailerField} is less than 0 * @since 1.5 */ public PSSParameterSpec(String mdName, String mgfName, - AlgorithmParameterSpec mgfSpec, - int saltLen, int trailerField) { - if (mdName == null) { - throw new NullPointerException("digest algorithm is null"); - } - if (mgfName == null) { - throw new NullPointerException("mask generation function " + - "algorithm is null"); - } + AlgorithmParameterSpec mgfSpec, int saltLen, int trailerField) { + Objects.requireNonNull(mdName, "digest algorithm is null"); + Objects.requireNonNull(mgfName, + "mask generation function algorithm is null"); if (saltLen < 0) { throw new IllegalArgumentException("negative saltLen value: " + saltLen); @@ -147,23 +159,19 @@ public PSSParameterSpec(String mdName, String mgfName, * using the specified salt length and other default values as * defined in PKCS#1. * - * @param saltLen the length of salt in bits to be used in PKCS#1 - * PSS encoding. + * @param saltLen the length of salt in bytes to be used in PKCS#1 + * PSS encoding * @exception IllegalArgumentException if {@code saltLen} is - * less than 0. + * less than 0 */ public PSSParameterSpec(int saltLen) { - if (saltLen < 0) { - throw new IllegalArgumentException("negative saltLen value: " + - saltLen); - } - this.saltLen = saltLen; + this("SHA-1", "MGF1", MGF1ParameterSpec.SHA1, saltLen, TRAILER_FIELD_BC); } /** * Returns the message digest algorithm name. * - * @return the message digest algorithm name. + * @return the message digest algorithm name * @since 1.5 */ public String getDigestAlgorithm() { @@ -173,7 +181,7 @@ public String getDigestAlgorithm() { /** * Returns the mask generation function algorithm name. * - * @return the mask generation function algorithm name. + * @return the mask generation function algorithm name * * @since 1.5 */ @@ -184,7 +192,7 @@ public String getMGFAlgorithm() { /** * Returns the parameters for the mask generation function. * - * @return the parameters for the mask generation function. + * @return the parameters for the mask generation function * @since 1.5 */ public AlgorithmParameterSpec getMGFParameters() { @@ -192,21 +200,31 @@ public AlgorithmParameterSpec getMGFParameters() { } /** - * Returns the salt length in bits. + * Returns the salt length in bytes. * - * @return the salt length. + * @return the salt length */ public int getSaltLength() { return saltLen; } /** - * Returns the value for the trailer field, i.e. bc in PKCS#1 v2.1. + * Returns the value for the trailer field. * - * @return the value for the trailer field, i.e. bc in PKCS#1 v2.1. + * @return the value for the trailer field * @since 1.5 */ public int getTrailerField() { return trailerField; } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("MD: " + mdName + "\n") + .append("MGF: " + mgfSpec + "\n") + .append("SaltLength: " + saltLen + "\n") + .append("TrailerField: " + trailerField + "\n"); + return sb.toString(); + } } diff --git a/src/share/classes/java/security/spec/RSAKeyGenParameterSpec.java b/src/share/classes/java/security/spec/RSAKeyGenParameterSpec.java index a73c6cd46b..014af6fe35 100644 --- a/src/share/classes/java/security/spec/RSAKeyGenParameterSpec.java +++ b/src/share/classes/java/security/spec/RSAKeyGenParameterSpec.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -43,6 +43,7 @@ public class RSAKeyGenParameterSpec implements AlgorithmParameterSpec { private int keysize; private BigInteger publicExponent; + private AlgorithmParameterSpec keyParams; /** * The public-exponent value F0 = 3. @@ -55,15 +56,30 @@ public class RSAKeyGenParameterSpec implements AlgorithmParameterSpec { public static final BigInteger F4 = BigInteger.valueOf(65537); /** - * Constructs a new {@code RSAParameterSpec} object from the - * given keysize and public-exponent value. + * Constructs a new {@code RSAKeyGenParameterSpec} object from the + * given keysize, public-exponent value, and null key parameters. * * @param keysize the modulus size (specified in number of bits) * @param publicExponent the public exponent */ public RSAKeyGenParameterSpec(int keysize, BigInteger publicExponent) { + this(keysize, publicExponent, null); + } + + /** + * Constructs a new {@code RSAKeyGenParameterSpec} object from the + * given keysize, public-exponent value, and key parameters. + * + * @param keysize the modulus size (specified in number of bits) + * @param publicExponent the public exponent + * @param keyParams the key parameters, may be null + * @since 8 + */ + public RSAKeyGenParameterSpec(int keysize, BigInteger publicExponent, + AlgorithmParameterSpec keyParams) { this.keysize = keysize; this.publicExponent = publicExponent; + this.keyParams = keyParams; } /** @@ -83,4 +99,15 @@ public int getKeysize() { public BigInteger getPublicExponent() { return publicExponent; } + + /** + * Returns the parameters to be associated with key. + * + * @return the associated parameters, may be null if + * not present + * @since 8 + */ + public AlgorithmParameterSpec getKeyParams() { + return keyParams; + } } diff --git a/src/share/classes/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.java b/src/share/classes/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.java index a198e43a2e..f7bd8832a9 100644 --- a/src/share/classes/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.java +++ b/src/share/classes/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,11 +26,13 @@ package java.security.spec; import java.math.BigInteger; +import java.util.Objects; /** * This class specifies an RSA multi-prime private key, as defined in the - * PKCS#1 v2.1, using the Chinese Remainder Theorem (CRT) information - * values for efficiency. + * PKCS#1 v2.2 standard + * using the Chinese Remainder Theorem (CRT) information values + * for efficiency. * * @author Valerie Peng * @@ -57,34 +59,28 @@ public class RSAMultiPrimePrivateCrtKeySpec extends RSAPrivateKeySpec { private final RSAOtherPrimeInfo otherPrimeInfo[]; /** - * Creates a new {@code RSAMultiPrimePrivateCrtKeySpec} - * given the modulus, publicExponent, privateExponent, - * primeP, primeQ, primeExponentP, primeExponentQ, - * crtCoefficient, and otherPrimeInfo as defined in PKCS#1 v2.1. + * Creates a new {@code RSAMultiPrimePrivateCrtKeySpec}. * *

Note that the contents of {@code otherPrimeInfo} * are copied to protect against subsequent modification when * constructing this object. * - * @param modulus the modulus n. - * @param publicExponent the public exponent e. - * @param privateExponent the private exponent d. - * @param primeP the prime factor p of n. - * @param primeQ the prime factor q of n. - * @param primeExponentP this is d mod (p-1). - * @param primeExponentQ this is d mod (q-1). - * @param crtCoefficient the Chinese Remainder Theorem - * coefficient q-1 mod p. - * @param otherPrimeInfo triplets of the rest of primes, null can be - * specified if there are only two prime factors (p and q). - * @exception NullPointerException if any of the parameters, i.e. - * {@code modulus}, - * {@code publicExponent}, {@code privateExponent}, - * {@code primeP}, {@code primeQ}, - * {@code primeExponentP}, {@code primeExponentQ}, - * {@code crtCoefficient}, is null. - * @exception IllegalArgumentException if an empty, i.e. 0-length, - * {@code otherPrimeInfo} is specified. + * @param modulus the modulus n + * @param publicExponent the public exponent e + * @param privateExponent the private exponent d + * @param primeP the prime factor p of n + * @param primeQ the prime factor q of n + * @param primeExponentP this is d mod (p-1) + * @param primeExponentQ this is d mod (q-1) + * @param crtCoefficient the Chinese Remainder Theorem + * coefficient q-1 mod p + * @param otherPrimeInfo triplets of the rest of primes, null can be + * specified if there are only two prime factors + * (p and q) + * @throws NullPointerException if any of the specified parameters + * with the exception of {@code otherPrimeInfo} is null + * @throws IllegalArgumentException if an empty, i.e. 0-length, + * {@code otherPrimeInfo} is specified */ public RSAMultiPrimePrivateCrtKeySpec(BigInteger modulus, BigInteger publicExponent, @@ -95,45 +91,67 @@ public RSAMultiPrimePrivateCrtKeySpec(BigInteger modulus, BigInteger primeExponentQ, BigInteger crtCoefficient, RSAOtherPrimeInfo[] otherPrimeInfo) { - super(modulus, privateExponent); - if (modulus == null) { - throw new NullPointerException("the modulus parameter must be " + - "non-null"); - } - if (publicExponent == null) { - throw new NullPointerException("the publicExponent parameter " + - "must be non-null"); - } - if (privateExponent == null) { - throw new NullPointerException("the privateExponent parameter " + - "must be non-null"); - } - if (primeP == null) { - throw new NullPointerException("the primeP parameter " + - "must be non-null"); - } - if (primeQ == null) { - throw new NullPointerException("the primeQ parameter " + - "must be non-null"); - } - if (primeExponentP == null) { - throw new NullPointerException("the primeExponentP parameter " + - "must be non-null"); - } - if (primeExponentQ == null) { - throw new NullPointerException("the primeExponentQ parameter " + - "must be non-null"); - } - if (crtCoefficient == null) { - throw new NullPointerException("the crtCoefficient parameter " + - "must be non-null"); - } - this.publicExponent = publicExponent; - this.primeP = primeP; - this.primeQ = primeQ; - this.primeExponentP = primeExponentP; - this.primeExponentQ = primeExponentQ; - this.crtCoefficient = crtCoefficient; + this(modulus, publicExponent, privateExponent, primeP, primeQ, + primeExponentP, primeExponentQ, crtCoefficient, otherPrimeInfo, + null); + } + + /** + * Creates a new {@code RSAMultiPrimePrivateCrtKeySpec} with additional + * key parameters. + * + *

Note that the contents of {@code otherPrimeInfo} + * are copied to protect against subsequent modification when + * constructing this object. + * + * @param modulus the modulus n + * @param publicExponent the public exponent e + * @param privateExponent the private exponent d + * @param primeP the prime factor p of n + * @param primeQ the prime factor q of n + * @param primeExponentP this is d mod (p-1) + * @param primeExponentQ this is d mod (q-1) + * @param crtCoefficient the Chinese Remainder Theorem coefficient + * q-1 mod p + * @param otherPrimeInfo triplets of the rest of primes, null can be + * specified if there are only two prime factors + * (p and q) + * @param keyParams the parameters associated with key + * @throws NullPointerException if any of the specified parameters + * with the exception of {@code otherPrimeInfo} and {@code keyParams} + * is null + * @throws IllegalArgumentException if an empty, i.e. 0-length, + * {@code otherPrimeInfo} is specified + * @since 8 + */ + public RSAMultiPrimePrivateCrtKeySpec(BigInteger modulus, + BigInteger publicExponent, + BigInteger privateExponent, + BigInteger primeP, + BigInteger primeQ, + BigInteger primeExponentP, + BigInteger primeExponentQ, + BigInteger crtCoefficient, + RSAOtherPrimeInfo[] otherPrimeInfo, + AlgorithmParameterSpec keyParams) { + super(modulus, privateExponent, keyParams); + Objects.requireNonNull(modulus, + "the modulus parameter must be non-null"); + Objects.requireNonNull(privateExponent, + "the privateExponent parameter must be non-null"); + this.publicExponent = Objects.requireNonNull(publicExponent, + "the publicExponent parameter must be non-null"); + this.primeP = Objects.requireNonNull(primeP, + "the primeP parameter must be non-null"); + this.primeQ = Objects.requireNonNull(primeQ, + "the primeQ parameter must be non-null"); + this.primeExponentP = Objects.requireNonNull(primeExponentP, + "the primeExponentP parameter must be non-null"); + this.primeExponentQ = Objects.requireNonNull(primeExponentQ, + "the primeExponentQ parameter must be non-null"); + this.crtCoefficient = Objects.requireNonNull(crtCoefficient, + "the crtCoefficient parameter must be non-null"); + if (otherPrimeInfo == null) { this.otherPrimeInfo = null; } else if (otherPrimeInfo.length == 0) { @@ -202,8 +220,8 @@ public BigInteger getCrtCoefficient() { * Returns a copy of the otherPrimeInfo or null if there are * only two prime factors (p and q). * - * @return the otherPrimeInfo. Returns a new array each - * time this method is called. + * @return the otherPrimeInfo. Returns a new array each time this method + * is called. */ public RSAOtherPrimeInfo[] getOtherPrimeInfo() { if (otherPrimeInfo == null) return null; diff --git a/src/share/classes/java/security/spec/RSAOtherPrimeInfo.java b/src/share/classes/java/security/spec/RSAOtherPrimeInfo.java index 10d8471765..99b83a8859 100644 --- a/src/share/classes/java/security/spec/RSAOtherPrimeInfo.java +++ b/src/share/classes/java/security/spec/RSAOtherPrimeInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,15 +29,16 @@ /** * This class represents the triplet (prime, exponent, and coefficient) - * inside RSA's OtherPrimeInfo structure, as defined in the PKCS#1 v2.1. + * inside RSA's OtherPrimeInfo structure, as defined in the + * PKCS#1 v2.2 standard. * The ASN.1 syntax of RSA's OtherPrimeInfo is as follows: * *

  * OtherPrimeInfo ::= SEQUENCE {
- *   prime INTEGER,
- *   exponent INTEGER,
- *   coefficient INTEGER
- *   }
+ *   prime        INTEGER,
+ *   exponent     INTEGER,
+ *   coefficient  INTEGER
+ * }
  *
  * 
* diff --git a/src/share/classes/java/security/spec/RSAPrivateCrtKeySpec.java b/src/share/classes/java/security/spec/RSAPrivateCrtKeySpec.java index d0ba70be44..f4d618b384 100644 --- a/src/share/classes/java/security/spec/RSAPrivateCrtKeySpec.java +++ b/src/share/classes/java/security/spec/RSAPrivateCrtKeySpec.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,9 +28,9 @@ import java.math.BigInteger; /** - * This class specifies an RSA private key, as defined in the PKCS#1 - * standard, using the Chinese Remainder Theorem (CRT) information values for - * efficiency. + * This class specifies an RSA private key, as defined in the + * PKCS#1 v2.2 standard, + * using the Chinese Remainder Theorem (CRT) information values for efficiency. * * @author Jan Luehe * @@ -52,13 +52,8 @@ public class RSAPrivateCrtKeySpec extends RSAPrivateKeySpec { private final BigInteger primeExponentQ; private final BigInteger crtCoefficient; - - /** - * Creates a new {@code RSAPrivateCrtKeySpec} - * given the modulus, publicExponent, privateExponent, - * primeP, primeQ, primeExponentP, primeExponentQ, and - * crtCoefficient as defined in PKCS#1. + * Creates a new {@code RSAPrivateCrtKeySpec}. * * @param modulus the modulus n * @param publicExponent the public exponent e @@ -78,7 +73,36 @@ public RSAPrivateCrtKeySpec(BigInteger modulus, BigInteger primeExponentP, BigInteger primeExponentQ, BigInteger crtCoefficient) { - super(modulus, privateExponent); + this(modulus, publicExponent, privateExponent, primeP, primeQ, + primeExponentP, primeExponentQ, crtCoefficient, null); + } + + /** + * Creates a new {@code RSAPrivateCrtKeySpec} with additional + * key parameters. + * + * @param modulus the modulus n + * @param publicExponent the public exponent e + * @param privateExponent the private exponent d + * @param primeP the prime factor p of n + * @param primeQ the prime factor q of n + * @param primeExponentP this is d mod (p-1) + * @param primeExponentQ this is d mod (q-1) + * @param crtCoefficient the Chinese Remainder Theorem + * coefficient q-1 mod p + * @param keyParams the parameters associated with key + * @since 8 + */ + public RSAPrivateCrtKeySpec(BigInteger modulus, + BigInteger publicExponent, + BigInteger privateExponent, + BigInteger primeP, + BigInteger primeQ, + BigInteger primeExponentP, + BigInteger primeExponentQ, + BigInteger crtCoefficient, + AlgorithmParameterSpec keyParams) { + super(modulus, privateExponent, keyParams); this.publicExponent = publicExponent; this.primeP = primeP; this.primeQ = primeQ; diff --git a/src/share/classes/java/security/spec/RSAPrivateKeySpec.java b/src/share/classes/java/security/spec/RSAPrivateKeySpec.java index e749146168..2bb06c5868 100644 --- a/src/share/classes/java/security/spec/RSAPrivateKeySpec.java +++ b/src/share/classes/java/security/spec/RSAPrivateKeySpec.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -43,8 +43,9 @@ public class RSAPrivateKeySpec implements KeySpec { - private BigInteger modulus; - private BigInteger privateExponent; + private final BigInteger modulus; + private final BigInteger privateExponent; + private final AlgorithmParameterSpec params; /** * Creates a new RSAPrivateKeySpec. @@ -53,8 +54,22 @@ public class RSAPrivateKeySpec implements KeySpec { * @param privateExponent the private exponent */ public RSAPrivateKeySpec(BigInteger modulus, BigInteger privateExponent) { + this(modulus, privateExponent, null); + } + + /** + * Creates a new RSAPrivateKeySpec with additional key parameters. + * + * @param modulus the modulus + * @param privateExponent the private exponent + * @param params the parameters associated with this key, may be null + * @since 8 + */ + public RSAPrivateKeySpec(BigInteger modulus, BigInteger privateExponent, + AlgorithmParameterSpec params) { this.modulus = modulus; this.privateExponent = privateExponent; + this.params = params; } /** @@ -74,4 +89,15 @@ public BigInteger getModulus() { public BigInteger getPrivateExponent() { return this.privateExponent; } + + /** + * Returns the parameters associated with this key, may be null if not + * present. + * + * @return the parameters associated with this key + * @since 8 + */ + public AlgorithmParameterSpec getParams() { + return this.params; + } } diff --git a/src/share/classes/java/security/spec/RSAPublicKeySpec.java b/src/share/classes/java/security/spec/RSAPublicKeySpec.java index 9a944f962b..b9ab224622 100644 --- a/src/share/classes/java/security/spec/RSAPublicKeySpec.java +++ b/src/share/classes/java/security/spec/RSAPublicKeySpec.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -43,8 +43,9 @@ public class RSAPublicKeySpec implements KeySpec { - private BigInteger modulus; - private BigInteger publicExponent; + private final BigInteger modulus; + private final BigInteger publicExponent; + private final AlgorithmParameterSpec params; /** * Creates a new RSAPublicKeySpec. @@ -53,10 +54,25 @@ public class RSAPublicKeySpec implements KeySpec { * @param publicExponent the public exponent */ public RSAPublicKeySpec(BigInteger modulus, BigInteger publicExponent) { + this(modulus, publicExponent, null); + } + + /** + * Creates a new RSAPublicKeySpec with additional key parameters. + * + * @param modulus the modulus + * @param publicExponent the public exponent + * @param params the parameters associated with this key, may be null + * @since 8 + */ + public RSAPublicKeySpec(BigInteger modulus, BigInteger publicExponent, + AlgorithmParameterSpec params) { this.modulus = modulus; this.publicExponent = publicExponent; + this.params = params; } + /** * Returns the modulus. * @@ -74,4 +90,16 @@ public BigInteger getModulus() { public BigInteger getPublicExponent() { return this.publicExponent; } + + /** + * Returns the parameters associated with this key, may be null if not + * present. + * + * @return the parameters associated with this key + * @since 8 + */ + public AlgorithmParameterSpec getParams() { + return this.params; + } + } diff --git a/src/share/classes/java/security/spec/package-info.java b/src/share/classes/java/security/spec/package-info.java index cb393088e5..ed99a20d49 100644 --- a/src/share/classes/java/security/spec/package-info.java +++ b/src/share/classes/java/security/spec/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -42,7 +42,7 @@ *

Package Specification

* *
    - *
  • PKCS #1: RSA Encryption Standard, Version 1.5, November 1993
  • + *
  • PKCS #1: RSA Cryptography Specifications, Version 2.2 (RFC 8017)
  • *
  • PKCS #8: Private-Key Information Syntax Standard, * Version 1.2, November 1993
  • *
  • Federal Information Processing Standards Publication (FIPS PUB) 186: diff --git a/src/share/classes/javax/crypto/Cipher.java b/src/share/classes/javax/crypto/Cipher.java index b18ce92c4d..d3d09d7e2c 100644 --- a/src/share/classes/javax/crypto/Cipher.java +++ b/src/share/classes/javax/crypto/Cipher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -317,11 +317,15 @@ private static String[] tokenizeTransformation(String transformation) while (parser.hasMoreTokens() && count < 3) { parts[count++] = parser.nextToken().trim(); } - if (count == 0 || count == 2 || parser.hasMoreTokens()) { + if (count == 0 || count == 2) { throw new NoSuchAlgorithmException("Invalid transformation" + " format:" + transformation); } + // treats all subsequent tokens as part of padding + if (count == 3 && parser.hasMoreTokens()) { + parts[2] = parts[2] + parser.nextToken("\r\n"); + } } catch (NoSuchElementException e) { throw new NoSuchAlgorithmException("Invalid transformation " + "format:" + transformation); diff --git a/src/share/classes/javax/crypto/spec/OAEPParameterSpec.java b/src/share/classes/javax/crypto/spec/OAEPParameterSpec.java index fcdc018cb6..0b90452e6e 100644 --- a/src/share/classes/javax/crypto/spec/OAEPParameterSpec.java +++ b/src/share/classes/javax/crypto/spec/OAEPParameterSpec.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,40 +32,53 @@ /** * This class specifies the set of parameters used with OAEP Padding, * as defined in the - * PKCS #1 - * standard. + * PKCS#1 v2.2 standard. * * Its ASN.1 definition in PKCS#1 standard is described below: *
      * RSAES-OAEP-params ::= SEQUENCE {
    - *   hashAlgorithm      [0] OAEP-PSSDigestAlgorithms     DEFAULT sha1,
    - *   maskGenAlgorithm   [1] PKCS1MGFAlgorithms  DEFAULT mgf1SHA1,
    - *   pSourceAlgorithm   [2] PKCS1PSourceAlgorithms  DEFAULT pSpecifiedEmpty
    + *   hashAlgorithm      [0] HashAlgorithm     DEFAULT sha1,
    + *   maskGenAlgorithm   [1] MaskGenAlgorithm  DEFAULT mgf1SHA1,
    + *   pSourceAlgorithm   [2] PSourceAlgorithm  DEFAULT pSpecifiedEmpty
      * }
      * 
    * where *
    + * HashAlgorithm ::= AlgorithmIdentifier {
    + *   {OAEP-PSSDigestAlgorithms}
    + * }
    + * MaskGenAlgorithm ::= AlgorithmIdentifier { {PKCS1MGFAlgorithms} }
    + * PSourceAlgorithm ::= AlgorithmIdentifier {
    + *   {PKCS1PSourceAlgorithms}
    + * }
    + *
      * OAEP-PSSDigestAlgorithms    ALGORITHM-IDENTIFIER ::= {
    - *   { OID id-sha1 PARAMETERS NULL   }|
    - *   { OID id-sha256 PARAMETERS NULL }|
    - *   { OID id-sha384 PARAMETERS NULL }|
    - *   { OID id-sha512 PARAMETERS NULL },
    + *   { OID id-sha1       PARAMETERS NULL }|
    + *   { OID id-sha224     PARAMETERS NULL }|
    + *   { OID id-sha256     PARAMETERS NULL }|
    + *   { OID id-sha384     PARAMETERS NULL }|
    + *   { OID id-sha512     PARAMETERS NULL }|
    + *   { OID id-sha512-224 PARAMETERS NULL }|
    + *   { OID id-sha512-256 PARAMETERS NULL },
      *   ...  -- Allows for future expansion --
      * }
      * PKCS1MGFAlgorithms    ALGORITHM-IDENTIFIER ::= {
    - *   { OID id-mgf1 PARAMETERS OAEP-PSSDigestAlgorithms },
    + *   { OID id-mgf1 PARAMETERS HashAlgorithm },
      *   ...  -- Allows for future expansion --
      * }
      * PKCS1PSourceAlgorithms    ALGORITHM-IDENTIFIER ::= {
    - *   { OID id-pSpecified PARAMETERS OCTET STRING },
    + *   { OID id-pSpecified PARAMETERS EncodingParameters },
      *   ...  -- Allows for future expansion --
      * }
    + * EncodingParameters ::= OCTET STRING(SIZE(0..MAX))
      * 
    *

    Note: the OAEPParameterSpec.DEFAULT uses the following: + *

      *     message digest  -- "SHA-1"
      *     mask generation function (mgf) -- "MGF1"
      *     parameters for mgf -- MGF1ParameterSpec.SHA1
      *     source of encoding input -- PSource.PSpecified.DEFAULT
    + * 
    * * @see java.security.spec.MGF1ParameterSpec * @see PSource diff --git a/src/share/classes/javax/crypto/spec/PSource.java b/src/share/classes/javax/crypto/spec/PSource.java index a3d2efe893..0e5a6c88a9 100644 --- a/src/share/classes/javax/crypto/spec/PSource.java +++ b/src/share/classes/javax/crypto/spec/PSource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,13 +28,19 @@ /** * This class specifies the source for encoding input P in OAEP Padding, * as defined in the - * PKCS #1 - * standard. + * PKCS#1 v2.2 standard. + *
    + * PSourceAlgorithm ::= AlgorithmIdentifier {
    + *   {PKCS1PSourceAlgorithms}
    + * }
    + * 
    + * where *
      * PKCS1PSourceAlgorithms    ALGORITHM-IDENTIFIER ::= {
    - *   { OID id-pSpecified PARAMETERS OCTET STRING },
    + *   { OID id-pSpecified PARAMETERS EncodingParameters },
      *   ...  -- Allows for future expansion --
      * }
    + * EncodingParameters ::= OCTET STRING(SIZE(0..MAX))
      * 
    * @author Valerie Peng * diff --git a/src/share/classes/javax/crypto/spec/package.html b/src/share/classes/javax/crypto/spec/package.html index b8fd80724d..fd4bac4b16 100644 --- a/src/share/classes/javax/crypto/spec/package.html +++ b/src/share/classes/javax/crypto/spec/package.html @@ -1,5 +1,5 @@