From d67c53197691a758b72dac4901f903ec036822da Mon Sep 17 00:00:00 2001 From: George Barnett Date: Wed, 5 Jul 2023 14:03:08 +0100 Subject: [PATCH] Update expired test certs (#1627) --- .../GRPCSampleData/GRPCSwiftCertificate.swift | 380 +++++++++--------- Sources/GRPCSampleData/bundle.p12 | Bin 2405 -> 2405 bytes 2 files changed, 190 insertions(+), 190 deletions(-) diff --git a/Sources/GRPCSampleData/GRPCSwiftCertificate.swift b/Sources/GRPCSampleData/GRPCSwiftCertificate.swift index 3294ae96f..2abcc8f8f 100644 --- a/Sources/GRPCSampleData/GRPCSwiftCertificate.swift +++ b/Sources/GRPCSampleData/GRPCSwiftCertificate.swift @@ -1,5 +1,5 @@ /* - * Copyright 2022, gRPC Authors All rights reserved. + * Copyright 2023, gRPC Authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,49 +33,49 @@ public struct SampleCertificate { public static let ca = SampleCertificate( certificate: try! NIOSSLCertificate(bytes: .init(caCert.utf8), format: .pem), commonName: "some-ca", - notAfter: Date(timeIntervalSince1970: 1699960773) + notAfter: Date(timeIntervalSince1970: 1720088924) ) public static let otherCA = SampleCertificate( certificate: try! NIOSSLCertificate(bytes: .init(otherCACert.utf8), format: .pem), commonName: "some-other-ca", - notAfter: Date(timeIntervalSince1970: 1699960773) + notAfter: Date(timeIntervalSince1970: 1720088924) ) public static let server = SampleCertificate( certificate: try! NIOSSLCertificate(bytes: .init(serverCert.utf8), format: .pem), commonName: "localhost", - notAfter: Date(timeIntervalSince1970: 1699960773) + notAfter: Date(timeIntervalSince1970: 1720088924) ) public static let exampleServer = SampleCertificate( certificate: try! NIOSSLCertificate(bytes: .init(exampleServerCert.utf8), format: .pem), commonName: "example.com", - notAfter: Date(timeIntervalSince1970: 1699960773) + notAfter: Date(timeIntervalSince1970: 1720088924) ) public static let serverSignedByOtherCA = SampleCertificate( certificate: try! NIOSSLCertificate(bytes: .init(serverSignedByOtherCACert.utf8), format: .pem), commonName: "localhost", - notAfter: Date(timeIntervalSince1970: 1699960773) + notAfter: Date(timeIntervalSince1970: 1720088924) ) public static let client = SampleCertificate( certificate: try! NIOSSLCertificate(bytes: .init(clientCert.utf8), format: .pem), commonName: "localhost", - notAfter: Date(timeIntervalSince1970: 1699960773) + notAfter: Date(timeIntervalSince1970: 1720088924) ) public static let clientSignedByOtherCA = SampleCertificate( certificate: try! NIOSSLCertificate(bytes: .init(clientSignedByOtherCACert.utf8), format: .pem), commonName: "localhost", - notAfter: Date(timeIntervalSince1970: 1699960773) + notAfter: Date(timeIntervalSince1970: 1720088924) ) public static let exampleServerWithExplicitCurve = SampleCertificate( certificate: try! NIOSSLCertificate(bytes: .init(serverExplicitCurveCert.utf8), format: .pem), commonName: "localhost", - notAfter: Date(timeIntervalSince1970: 1699960773) + notAfter: Date(timeIntervalSince1970: 1720088924) ) } @@ -106,258 +106,258 @@ public struct SamplePrivateKey { private let caCert = """ -----BEGIN CERTIFICATE----- -MIICoDCCAYgCCQCf2sGvEIOvlDANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdz -b21lLWNhMB4XDTIyMTExNDExMTkzM1oXDTIzMTExNDExMTkzM1owEjEQMA4GA1UE -AwwHc29tZS1jYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOjCRRWS -ezh/izFLT4g8lAjVUGbjckCnJRPfwgWDAC1adTDi4QhzONVlmYUzUkx6VPCcVVou -vc/WM8hHC6cRDdf/ubGRZondGw6bzaO2yqc8K6BNSvqFnkuQHRpPoSc/RKHe+qTT -glhygm3GlAUaNl0hJpXWlLqOoIb0mn8emF7afbyyWariPPQyzY2rywPLPXipitmW -Jw7GxVC+Q2yx5GQxPvutCdtkAsrS1AsYxpvpW+kHmtj0Dj40N7yhTz1cw2QtCD2i -CQuk9oRwtIiJi54USy/r6oq5NOlwqHyq+DGDt5XZx1RKvGJTn3ujHPEJVipoTkdX -/K+RpqQxJNGhyO8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAjKgbr1hwRMUwEYLe -AAf0ODw0iRfch9QG6qYTOFjuC3KyDKdzf52OGm49Ep4gVmgMPLcA3YGtUXd8dJSf -WYZ0pSJYeLVJiEkkV/0gwpc+vK2OxZe1XBPbW3JN+wmRBxi3MiL7bbSvDlYIj7Dv -8c1vs8SxE4VuSkFRrcrVV0V95xs01X1/M9aa8z9Lf59ecKytaLvKysorDrCN8nC3 -zlMDehPCLH9y4UlBqp8ClUpKk/5/P8HXr40ZGq+5TFrR80YABPSVX7krRMcxIhfu -IFIT2yhjkxMQWj8SCDUZxamBElAXY9KHSlEv3y+teRQABBVNxslHXqLKfKTF3q4S -tUVJuA== +MIICoDCCAYgCCQCgCA1/0dKfFjANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdz +b21lLWNhMB4XDTIzMDcwNTEwMjg0NFoXDTI0MDcwNDEwMjg0NFowEjEQMA4GA1UE +AwwHc29tZS1jYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALTi2aJy +Vw3E0OQwNIm9GZOG4E/Rc0atKoJes9yWaMrMPGwoenLEc2JNIvJSdBGZHKO7HKAG +OnffpqVIXtRBIU7l8HEhX97Q+knI6wPz8O7JaGVf6KznLa2eFO6xGM1pogO7m+/M +0mw8LSftn2IEiJk9v00qj+WgfwJJqL/TUZRoT5M2+u99uiaW7bnI1+1vawo5i7A1 +zfN6SBud5K/BaEYcAjxX1JMWCJLWSuOFZArWX7Je2MP+LqZkjh8kQO+d8ZZaLSIs +ujd6x6/r365Sl24l4auNfWy/5V1Ctfxl4avupAm7CpmEFpswe/ucNHkD0drUCzvt +hBeR3coLXWgbQs0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAJm1Yntrrl6WxPbsA +s1DrI9YHdQjUNkouX0PtGp4yKrP7hwTclIhHjlGaQRJ2p1I7hllCMCPDa2YZa714 +XhtvEmpWOeLXMFolpKEn83kccvkQviZ3yd2lKH64jDX1/g2Rf6dXhDZMKrMAkEdx +X3JwZwPxwb8VDtac7TkVgOcQFHRzdX2g6pQXz3eNsjckGNJgzzl/ln6DrHHDbruI +M7bfnc2ZCBcHUCLWts8LnX2ekUq9KOxMe4e3sD27sKPizklNfGH4Rdg4LByhkx3S +GGR3ziWyixfcs4BNhA5mbsvb8vpPdtOh1oFt+TtPxlQ2FQOnSHk6wF285XggYYgv +p8pG5Q== -----END CERTIFICATE----- """ private let otherCACert = """ -----BEGIN CERTIFICATE----- -MIICrDCCAZQCCQDQxWAzi9Y9LTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1z -b21lLW90aGVyLWNhMB4XDTIyMTExNDExMTkzM1oXDTIzMTExNDExMTkzM1owGDEW +MIICrDCCAZQCCQC3Iplq4Q/2+jANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1z +b21lLW90aGVyLWNhMB4XDTIzMDcwNTEwMjg0NFoXDTI0MDcwNDEwMjg0NFowGDEW MBQGA1UEAwwNc29tZS1vdGhlci1jYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC -AQoCggEBANOr3vaYLkfnqk0lREo0VJD/rnUGQ6BiVtKiou0uksb9gX4oHdKlnqyi -dvFuwaJHIzjBhdWD2EqgWwuBTB3y/UybD/ZvkojnLD+QNMnbgG5aCnO03gVlVBOf -JggEtAEM31C7Fi6X7Gr/QwRI721+kqNSB48Rj3BT93cDW73aSeL6IZ8jlvefWYR7 -1UI3bP+4WG58PSJOhUs2edaOn0G5wRZ5LyK6A77noll90cP+CVNlqLj8HRapqhf1 -XZhGwwaEYxNV1oDroxq9mcM+6E8LdWCsdE3N4Dx6pdL0lOjwvhevZ2ct/fb31NYE -fMstojwKf9Of5/J4kZaC1mp44IwPS00CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEA -iUuX1YYdVwqamg13eji1I9/8eMP5demBnXjM7DYP3JqDhClTYNnN8aB+o1YW51ce -3V1FtN/f3g3YMgYB4YSOb241G9uXGCz5CwcYeBCJbUT/PdNZOrTW1EzA+gAy8GxS -yMbK+ZrXy+7mJr79sumIO2WGk//eznvgrmlKq+eZtVf/TDTYs5TdbqI4sqoN+qPQ -WyuBXEkU2D259VvZ+GLljVr7JCysciALKDk3QAb6cfjhFh3aOqb40m5i4Jg6g2G6 -iFS1kE3KjaWhYYn66BRVOYzfT25RkFBxxJh2Pg6DQOyVUWsWJ+VrstpQlcGMElmq -/LaIwNYfuUNcKb90L+M6vg== +AQoCggEBAOko0E/i9WlJS5eBAfJsQ1Xz5cAse959qRz4LSE2PsRXYIqGD+CHSlxf +K549WPYfCTEJxT4+MCwU9MfyHSTmhYo/MEA6K1jMznZULhYFriLLiGBCB238W0Xo +bEf3EN9xrHlmHaYrN9EwI6Qiq/AYkpAmbrlgbLW5Ig03YWTODS8k4R1nrkB609BC +DBEyzBiCjgzo0xVduTgf6iiEfUg+dlvkeH+4qjLU0DRJq0g7YIM/kEX/zL2YUad5 +9aytkDjO30IhcjQC+wvhCLBn6FDyYOpthaGM1cbMLG3efMpGAtyny2qATo63yVmf +kd8ftmV86BidAm+tCnFwBzxfXd4CB00CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEA +Qxth0x5noVZrWZs67kBpjhiNI5Zg4/IMFukL4qv4XqC4AkwJJ4XaMAVTgtZ+mGmr +yOJ6pEzw0C7nWmTtlUjQu32Z+YNLSnE6wcIEx8ed1fwI0kezcyBBrg+Rs1vDNi1c +Tshq0by3RBuuSLclYrR64pmzYj4XJjABYIPurmtBCh4iwVhEe3tYs8I5vlKhmvA3 +ZTnqs21wD0v7FA4aM4EguFfLTMlBuD7U4G+agXvtcV4tXzQSh7RaXB06Mt4mNJ1k +LfqH39ZEnzeqUVm0vn283hvH9RzTYuHZu8J9wtmDrSTb6EcA4kpnILOgjhyLNL5G +EZi+HPA+wJ2bsRVlAxmuMA== -----END CERTIFICATE----- """ private let serverCert = """ -----BEGIN CERTIFICATE----- MIICmjCCAYICAQEwDQYJKoZIhvcNAQELBQAwEjEQMA4GA1UEAwwHc29tZS1jYTAe -Fw0yMjExMTQxMTE5MzNaFw0yMzExMTQxMTE5MzNaMBQxEjAQBgNVBAMMCWxvY2Fs -aG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANEQLRL2oOHPHN7K -ozmP8Ks8CcndChJrunNTJAWCiMA/HFEVVfylnQpPyc/t+W2yD+d+PsJknu2hI1O5 -o53SBsEDm1taHaCJt9ur5NKpEphzOI7VuwkgcoGqmY0Hz7GmBmbG06Z6ne8EZfg5 -a/rjxhW3GyOmIT3s9xWiU3MW7VX0PDlVmkZzVYtcSp9+AXQMDpvLK48INu1mUC6u -1nbEzj6KuFwpU5+V1cRLHer+I9HVA7qBcgsIDDEdUDG0/l0MivAyDbNHGHDZcsfj -jwTMsGRcd+IONItHyYb72+JBEKv3/qFAe4XIeR6iJQP4OxZ4CoxeUFgkVQwqBNd+ -1JYDuvECAwEAATANBgkqhkiG9w0BAQsFAAOCAQEASoyiLe/ak0nH5Bl7RvwAsO+Y -J2kA/oIUCpFEmsqDxK9Nt4eGIvknGzWsfTsVM4jXQo1MYCE7XrjpG9H6fubeQvxG -b+eU3VaHztflxLouzBIM6LnzoXnt2/rjQWIMbWZri2Gwl4incvVDLOv3jm5VD1Uw -OePLd+DvD/NzQ4nWdqCqhZAjopEPUpOT7fP8OkJVjGddvAn/0KyXkg3tutmUMB9m -8KctofAp1fKmd056Lgj+j6DIFDxxWEiihTO1ae8FlS4X/teeGSEVGv5M4baWRrcD -29V9XNIbMiwCNa7DJlPpxkjHdT4KifwPDHJ92RfK54SU1k0i8LD9KByuV4av9w== +Fw0yMzA3MDUxMDI4NDRaFw0yNDA3MDQxMDI4NDRaMBQxEjAQBgNVBAMMCWxvY2Fs +aG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKTZdzuWLHyxPM/F +sviBBXpSzl2MxJxDkmir8DSdXO5E1sHCAymTaxy9bOdi1XUZbRTyKfTv3x6sdRdT +0Gs2WjhL0yFT9IEVrGZADt3GIYoHYZU56Yn/nLglGQZqIeo33wyPEIAkbWL6X4RG +1Hc6nJQxhw1aaVtsYNAoWjAVzP773TZgyRcsGliqHtYpD0q0b+EfmPkb0GM1yvBa +j88dWWFFlG00aZFQatSkIrPbkXG0Mu4/1UxYDEuxOYrIFkFMfR8V8h6ZQ2x3H6cS +cTJ2TpIlw3rO6E0J/HYaVhmvJpevIPQhvH/Q+vM1bkvaIkckLchW7VgU4P+ZzHEw +r/xMcqMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAGpBsuzx72mOBa9o7m1eNh2cY +H6MrNi1b6vTaA3SOH68RDxg2qx6UrKxI34/No7FaOzRrfs9vUaKXHwwBnDxMskH5 +iTmVAGegumDQE3Bd11j+v1tKxXWS/bvWH7tfK6taoex76ktR3L8qO+Hp8n4YKuSb +qJScIhMPIg7fWPonLvcszGFPdBIxU3YkAZJZFeom/s1WhWCYXsJZSYOXv4YRlaU5 +ozeV3v9icDptaxNY7n4U6C32eykMjowJJ9dcOD+ib3PF88S+utmZnSEGYu+5bnXy +6MGWZcYH1wQ0RpNC+YzjQcGsKwHfaoBS4WFEK2fJdRfX4owZOu6HO1zhyoLpqw== -----END CERTIFICATE----- """ private let serverSignedByOtherCACert = """ -----BEGIN CERTIFICATE----- MIICoDCCAYgCAQEwDQYJKoZIhvcNAQELBQAwGDEWMBQGA1UEAwwNc29tZS1vdGhl -ci1jYTAeFw0yMjExMTQxMTE5MzNaFw0yMzExMTQxMTE5MzNaMBQxEjAQBgNVBAMM -CWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANEQLRL2 -oOHPHN7KozmP8Ks8CcndChJrunNTJAWCiMA/HFEVVfylnQpPyc/t+W2yD+d+PsJk -nu2hI1O5o53SBsEDm1taHaCJt9ur5NKpEphzOI7VuwkgcoGqmY0Hz7GmBmbG06Z6 -ne8EZfg5a/rjxhW3GyOmIT3s9xWiU3MW7VX0PDlVmkZzVYtcSp9+AXQMDpvLK48I -Nu1mUC6u1nbEzj6KuFwpU5+V1cRLHer+I9HVA7qBcgsIDDEdUDG0/l0MivAyDbNH -GHDZcsfjjwTMsGRcd+IONItHyYb72+JBEKv3/qFAe4XIeR6iJQP4OxZ4CoxeUFgk -VQwqBNd+1JYDuvECAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAZN5RQsfPP09YIfYo -UGu9m5+lpzYhE0S2+szysTg2IpWug0ZK4xhnqQYd9cGRks+U6hiLPdiyHCwOykf6 -OplIp5fMxPWZipREb9nA33Ra1G9vpB/tZxQJxDTvUeCH88SQOszdZk79+zWyVkaF -+TCa3jDXb/vT20+wKxpPUjse5w2j0VOh21KaP82EMyOY/ZvhbMC60QyHnFDvJAEV -sle77vbdLjYELpYUpf9N+TxFDZ2B4dY/edprLZGt3LcUUFv/WB8FxZdWcjdZML2F -TMqicbP7H27+V1HF1rFUJWKzDNh4Wg6bY6lQNTZeHUyLwf/WlUraXTKYpqSH8FQ1 -703RGQ== +ci1jYTAeFw0yMzA3MDUxMDI4NDRaFw0yNDA3MDQxMDI4NDRaMBQxEjAQBgNVBAMM +CWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKTZdzuW +LHyxPM/FsviBBXpSzl2MxJxDkmir8DSdXO5E1sHCAymTaxy9bOdi1XUZbRTyKfTv +3x6sdRdT0Gs2WjhL0yFT9IEVrGZADt3GIYoHYZU56Yn/nLglGQZqIeo33wyPEIAk +bWL6X4RG1Hc6nJQxhw1aaVtsYNAoWjAVzP773TZgyRcsGliqHtYpD0q0b+EfmPkb +0GM1yvBaj88dWWFFlG00aZFQatSkIrPbkXG0Mu4/1UxYDEuxOYrIFkFMfR8V8h6Z +Q2x3H6cScTJ2TpIlw3rO6E0J/HYaVhmvJpevIPQhvH/Q+vM1bkvaIkckLchW7VgU +4P+ZzHEwr/xMcqMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAY3vY+hng2gLh9t8q +/fvZewBiLAjsePbgRGT/xO4zCi3JwbHt07oGyQfo63ok5IJIrj3MPVy7N/oGJF0Y +niQrIhXs0NCKEZ/P9amh6wZJKAOtfD9t3oiNWTx56shm1vFQTTUdpykK0b37jGiK +y0N0p8M27ym/gQGTixfHNBtA0p+rmdDErOHqfU5Px3iQfmMmf4hxXPOSkGMixyre +3AR6wURMGLUCLVxi0sQYNd4fGo/GwbswTSJI7+sypZHMwpXbaN7KjorkSmI8UuoY +aGEewReM008rQWGWf3ybmNCChhru82lPQGMp6y9fN0s591iIzjpCXixzd1j1V4oY +yXRecw== -----END CERTIFICATE----- """ private let serverKey = """ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- """ private let exampleServerCert = """ -----BEGIN CERTIFICATE----- MIICnDCCAYQCAQEwDQYJKoZIhvcNAQELBQAwEjEQMA4GA1UEAwwHc29tZS1jYTAe -Fw0yMjExMTQxMTE5MzRaFw0yMzExMTQxMTE5MzRaMBYxFDASBgNVBAMMC2V4YW1w -bGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5UPdc3MERjIj -rKNMcsCJEPJtzFZG7T99rDaENxl5hF5TdlCuMfKQMyf4rmUk2KdQXduWDmP/9keO -Btc3Hw9xm7mHn7UPbK0kHjlncqTCnjZzVQ2j0stg4Q0WjGeS0aB8k1AHPiBaOnvJ -LYcBJrA8mZK+inEE0gWEJsODTM+bKb3+5I69qVoHAkU2tXTDV9g1YKfP4H3rufEg -622AR1yAo8UxaGjY3amWps6XF/9R2iaSDAPLH1dCBw/YWrIH51n75S+n/H3Rz0+H -/aT9Eze0M2F2Nj1cU8fVcbDNR0smssgXVmE2mvQ+OvbO0H7VTS1HK2q2aPOPkRWh -yhFnOvPnbQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAWk5KHkWVsbXqz6/MnwxD5 -fn7JrBR77Vz3mxQO9NDKN/vczNMJf5cli6thrB5VPprl5LFXWwQ+LUQhP+XprigQ -8owU1gMNqDzxVHn7By2lnAehLcWYxDoGc8xgTuf2aEjFAyW9xB67YP/kDx9uNFwY -z+zWc6eMVr6dtKcsHcrIEoxLPBO9kuC/wlNY+73q04mmy9XQny15iQLy4sQT0wk4 -xV4p86rqDZcGepdV2/bLk2coF9cUOPOGwUBqEIc7n5GekC2WTXSnjOEK5c+2Wkbw -Yt4jXnvsaQ8bwpchHfM1K3mLn+2rCEZ3F4E5Ug7DKebrwU4z/Nccf1DwM4pdI0EI +Fw0yMzA3MDUxMDI4NDVaFw0yNDA3MDQxMDI4NDVaMBYxFDASBgNVBAMMC2V4YW1w +bGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0yKJAjr3evjW +69/krEH8V3hLdVBuJX7YnhyEPVT0k+0Q4jJ+95XROgElY3DsuARH5wuksTi+mek5 +J5MObbUhHtGIaoqVaDew6TokawwQyBwngKudssu9/6rq38m33OSEv/5oc6xtTdKJ +Lrmqqf664+QajxCeec9CPMGJExQ25c1A5QOkkyC5xR+TcRRIcKPaDZ9aj6JlcD58 +QxD672fQP3exR2iQQ1YZDfAdF/hcgh2ISI+qNV2Pl5DZL8ujEX8XCf8EyHc5GNYN +5nlT+Z9EjoDFTBpy8nNbp84rks0Ru36OYX9JyM+wu/a0iMVBr4Yk73VVhOaH+aUI +eNHaD7fhlQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQB1++0U/7RduytrWh2bu6uz +sFk4XK+5eIhKn4DMq6vKXFQYF94Tkz8K2RDGzZ3Cl8qRU7dLwlHrUgqFI89XMFAM +LjumIWoMnfik8A6cBmp/HqURzXPNv6Wgn4MtU7aDs8WAEsGYAo5TTtqVJUGc2Mlf +NkW3MQ/RTfUncamx2wNFjwLmGTuERgHA/OA8WQVnMDI5JLXH5sigdOMTkqgkGzhg +8NVWnqubG4b4a7W3xl4s2FjqglqXP3vu+c1F6cWJfKgOXIqd8NduJ+p2FJZ1rW2c +3jkHoqBLqA4/zua+HUn5ICcUZrZid7HgmlUoR/4n+dbjT3Jdpp4BpNn3q8JuWE4Q -----END CERTIFICATE----- """ private let exampleServerKey = """ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- """ private let clientCert = """ -----BEGIN CERTIFICATE----- MIICmjCCAYICAQEwDQYJKoZIhvcNAQELBQAwEjEQMA4GA1UEAwwHc29tZS1jYTAe -Fw0yMjExMTQxMTE5MzRaFw0yMzExMTQxMTE5MzRaMBQxEjAQBgNVBAMMCWxvY2Fs -aG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOMSDHjt5P3MOmtw -atYP0PnCfr2sxsMd1uxKeb+x5mpYuckcsnm1UR0LcBCizwBZ7yYAZQkFyK7vdJge -Hv9P3Rki6+6Jj/ngLdpOirtUcOfnfzbdlA2k6qJtY6G+ZKyczDICWaZHzNRycDkL -Yv4kzUT8PynIRIK/LPyXQa+tGty9+G2exVPdpzKpCgE8fKd8FeCOLW06Z0RsP0FS -ySPSJxdDq0BRbfurhplhawh7uJ+7IoVfdWV2wwDvLztCEXHn2iiNpyzIixYapnVB -PX1MXelsPRJaa9EKwOiqJB5ZcV9JWk9wa4W7mJrRfFTRh/9HRsoXIAaJPIqjTmqI -ffat/1cCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAWpPkMzjKLAnxbfyasR6cPk3t -ZanuBQ9RqVJw2gPem+SmSpvyPZ3CJTi0ZeUbPRSJ2W8YHyogaA5XShZSm8JJQKye -TNYqUewVbU18OwVco0l7Wc8R1iiZgYEUcvMF2f/EWEMoCTmS3JlpbLl7LmdTy7iQ -gIrR+iQ649nLw1T4Q5kp7zxjI6WJ3eZVNUjlTrUzKapSY4Tm2/+GafD+WNVRRACh -Y9VNkaQ6qYy4SaLw6+bX2YdbDhIi275vAONHIZcAsMt6/aLJzKgfTxRqqmEvmJdQ -KSVRRaSKZ/qe9UBdl4oFn1wupFAoNDQWkXT/Q3kVhxVXZ8ZE+ylZnuWcj3CHvQ== +Fw0yMzA3MDUxMDI4NDVaFw0yNDA3MDQxMDI4NDVaMBQxEjAQBgNVBAMMCWxvY2Fs +aG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOP8JtVr8dF1Nzg/ +gesU5U06YksuOu5xSphv3GEtsIY9i49rqTk6t4z1aNJgBG+2fPKqCMjPtPJxRSgj +qUhoxSS15Ap6yeDN9VJGGb2TH1jAYFHmVb6nB6gDdYdn9isYO+laIZ2o9qVe7uQr +bSWHxr4ZqOlVGM5kiBTIIoyQJYnExEZ6nz6nqBVj6ZkZ3Nww9zRQ8AjK8hUfMq5K +PGohTqAvIu3NUwU12AePtneb31Fpc1DKWM3ZeC8kNHheZuuIlBhrBmJ+B64HeKX9 +xfl15zI9ziDLSzMa9IL6ZV+3c6IBiTeGavf5cjHO1atkQIX+jCRQwb+p4q/NHRvO +ADhAXesCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAsjJ+nFYDH31PmM9YpKGuytOw +DQYVLFYWIGybZC7FSESzlGx1GOZ5nY1AWj7gCnAvc7/Ct3efI/7qA0tSB+rbd2tA +/qqU0/0FJLZDyiXrpNzhFoYkg2VzZRSmFdsJbhzjNJM7iJRsWEhXn/7qydLyp1vj +i7DlYQVI2QgEQQz7BMJ6D3zPRxlyDzlVjr7l54M8RX9Dj8Oj9Sajd0RlkLiGW7YR +TC2nNebpRGN57Hi8dCM3xLWQcJ0N7BK0A67MnQaRbUQ0DMvxXO0+HUHxpfN39P/H +6Y81QkFAeeCMCsSWTGHspIJ8teKk+KmIe3xZ72taWNge1Cu3xas7Zsl1lbI2mw== -----END CERTIFICATE----- """ private let clientSignedByOtherCACert = """ -----BEGIN CERTIFICATE----- MIICoDCCAYgCAQEwDQYJKoZIhvcNAQELBQAwGDEWMBQGA1UEAwwNc29tZS1vdGhl -ci1jYTAeFw0yMjExMTQxMTE5MzRaFw0yMzExMTQxMTE5MzRaMBQxEjAQBgNVBAMM -CWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOMSDHjt -5P3MOmtwatYP0PnCfr2sxsMd1uxKeb+x5mpYuckcsnm1UR0LcBCizwBZ7yYAZQkF -yK7vdJgeHv9P3Rki6+6Jj/ngLdpOirtUcOfnfzbdlA2k6qJtY6G+ZKyczDICWaZH -zNRycDkLYv4kzUT8PynIRIK/LPyXQa+tGty9+G2exVPdpzKpCgE8fKd8FeCOLW06 -Z0RsP0FSySPSJxdDq0BRbfurhplhawh7uJ+7IoVfdWV2wwDvLztCEXHn2iiNpyzI -ixYapnVBPX1MXelsPRJaa9EKwOiqJB5ZcV9JWk9wa4W7mJrRfFTRh/9HRsoXIAaJ -PIqjTmqIffat/1cCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAIqGPpw/m3oIb+Ok7 -eZCEph/IcEwvkJXAFYeYjQHDsK1EW/HNoyjKKU3CaLJuWtvNbW+8GpmiVdAcO0XS -RN+xwDOLmB+9Ob70tZRsR/4/695WkkCm/70Y89YqTq3ev86vZmPWBGZsdXB/rvfs -sJbEkNeDRAquEbVQ3K8qmG7w8oC+VdzdQfQHY6hdkzsb0Q99aPASwGjxPVDz12Tb -v9g9f9yVwI+vxxabHr4nvKJ/GfuHRzG2eSW2TNBY/Kxp10+lCdMfbPq2p0LsV4eZ -eHPCFqiBe6CK80Pdpy7CNCPBBvGkGb7nfxBi4/tNVDgMlOQy6pA3PLjib8NLMCIA -5iUEvw== +ci1jYTAeFw0yMzA3MDUxMDI4NDVaFw0yNDA3MDQxMDI4NDVaMBQxEjAQBgNVBAMM +CWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOP8JtVr +8dF1Nzg/gesU5U06YksuOu5xSphv3GEtsIY9i49rqTk6t4z1aNJgBG+2fPKqCMjP +tPJxRSgjqUhoxSS15Ap6yeDN9VJGGb2TH1jAYFHmVb6nB6gDdYdn9isYO+laIZ2o +9qVe7uQrbSWHxr4ZqOlVGM5kiBTIIoyQJYnExEZ6nz6nqBVj6ZkZ3Nww9zRQ8AjK +8hUfMq5KPGohTqAvIu3NUwU12AePtneb31Fpc1DKWM3ZeC8kNHheZuuIlBhrBmJ+ +B64HeKX9xfl15zI9ziDLSzMa9IL6ZV+3c6IBiTeGavf5cjHO1atkQIX+jCRQwb+p +4q/NHRvOADhAXesCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAiEKKo8JIG29d16ZT +6d4ERj/o/3B2rwpTvSxmVaon3Zzz0gQ+HhuEH9D3XzzZ//P7qe8PxpcZ75veuv7X +ZcIPK+L7QqLAR/RrbWSbhI8CpQ0WX2MitKkz+cdRCey8/4JF4g8PXMMuFrP6fGEm +79l4aJoAiTNJ98qufUzD63kqU+kpPGjML6rnJFfwTVAWu/7Sy92u052IsoZfiKx0 +yN1vYr9jLD48n26YsyVjuuqqMW+OKxzRGA3xCa02W3cILQb0NVv4hM0+yGd1laKe +1zGHzuaeCIL9bFGBtxRXTWyyEG9z5nohEz/waHpUHg5VcbrkLOIIAhsolLuDKQyl +JanCRA== -----END CERTIFICATE----- """ private let clientKey = """ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- """ private let serverExplicitCurveCert = """ -----BEGIN CERTIFICATE----- -MIICEDCCAbYCCQDCeNe2vM7d6DAKBggqhkjOPQQDAjAWMRQwEgYDVQQDDAtleGFt -cGxlLmNvbTAeFw0yMjExMTQxMTE5MzRaFw0yMzExMTQxMTE5MzRaMBYxFDASBgNV +MIICEDCCAbYCCQC7a34VXIF7+DAKBggqhkjOPQQDAjAWMRQwEgYDVQQDDAtleGFt +cGxlLmNvbTAeFw0yMzA3MDUxMDI4NDVaFw0yNDA3MDQxMDI4NDVaMBYxFDASBgNV BAMMC2V4YW1wbGUuY29tMIIBSzCCAQMGByqGSM49AgEwgfcCAQEwLAYHKoZIzj0B AQIhAP////8AAAABAAAAAAAAAAAAAAAA////////////////MFsEIP////8AAAAB AAAAAAAAAAAAAAAA///////////////8BCBaxjXYqjqT57PrvVV2mIa8ZR0GsMxT sPY7zjw+J9JgSwMVAMSdNgiG5wSTamZ44ROdJreBn36QBEEEaxfR8uEsQkf4vObl Y6RA8ncDfYEt6zOg9KE5RdiYwpZP40Li/hp/m47n60p8D54WK84zV2sxXs7LtkBo -N79R9QIhAP////8AAAAA//////////+85vqtpxeehPO5ysL8YyVRAgEBA0IABDmd -3Pzv6HbsUTmNd7RljKbkYP+36ljl6qVZKZ+8m3Exq4DvtIzLKho/4NluAhWCsRev -2pWTfEiqiYS/U40TnfQwCgYIKoZIzj0EAwIDSAAwRQIhAI+BpDBjiqZD7r5vhPrG -TT9Kq9s4ekIc1/a4AoTioT8CAiAluJHscXt+vBcqEI9sH0wudusCdPJyLbvNtMZd -wdduCw== +N79R9QIhAP////8AAAAA//////////+85vqtpxeehPO5ysL8YyVRAgEBA0IABN5Q +sDW36YI12PFC/kRnACzCt8a5lqjaFu6QNl0Y0ZYaiE9MdR+EOGcCfoSGf9r8n1Yl +peOOLlvsXQ0UO8WJbsYwCgYIKoZIzj0EAwIDSAAwRQIgGd0bh4HWEd3ytsCEGaw0 +m567URfCk1u6sY4I77U64zQCIQD5hOn0PDS4eYR+kBB5MadQtcBtz8gjtW/OJcfV +D1NSHw== -----END CERTIFICATE----- """ private let serverExplicitCurveKey = """ -----BEGIN EC PRIVATE KEY----- -MIIBaAIBAQQgBLTFlKchn4c+dQphsqJ2hWVpLPeRQ0opnSwvRsH+63iggfowgfcC +MIIBaAIBAQQgHqp+i/1N/Iq8DUruPu0ep9WiB9I+n1Ox6qFucixKbr6ggfowgfcC AQEwLAYHKoZIzj0BAQIhAP////8AAAABAAAAAAAAAAAAAAAA//////////////// MFsEIP////8AAAABAAAAAAAAAAAAAAAA///////////////8BCBaxjXYqjqT57Pr vVV2mIa8ZR0GsMxTsPY7zjw+J9JgSwMVAMSdNgiG5wSTamZ44ROdJreBn36QBEEE axfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpZP40Li/hp/m47n60p8D54W K84zV2sxXs7LtkBoN79R9QIhAP////8AAAAA//////////+85vqtpxeehPO5ysL8 -YyVRAgEBoUQDQgAEOZ3c/O/oduxROY13tGWMpuRg/7fqWOXqpVkpn7ybcTGrgO+0 -jMsqGj/g2W4CFYKxF6/alZN8SKqJhL9TjROd9A== +YyVRAgEBoUQDQgAE3lCwNbfpgjXY8UL+RGcALMK3xrmWqNoW7pA2XRjRlhqIT0x1 +H4Q4ZwJ+hIZ/2vyfViWl444uW+xdDRQ7xYluxg== -----END EC PRIVATE KEY----- """ diff --git a/Sources/GRPCSampleData/bundle.p12 b/Sources/GRPCSampleData/bundle.p12 index cb9a3e369376f563dbd985c90726fd9e256bfd08..c32d3287272daa1445a9b6ca45bbfc60a71d9db4 100644 GIT binary patch delta 2271 zcmV<52q5?666F$*U4N|tY{QM`)wcoy2mpYB1AurN)Z4YdVs2O85`tTaW5 zvhx$M;J%`qTs%YewlQ~KKb~@DF7<%bh*^p4d@yfHhjclFb$b;bN1&);N?5Oo(+{sz zdjrUavM>{w^Kk9Sqdi`*Re(L~U%qY);=4JU?4H(}&qTUx5Pz823KYjqGgK?3u;+D! zTPRd%9Ce_{v8L!o)xD;szIwGuGYu=7^D%=0WEarQ&VP}GxnEx&pVSbu2U*&E0KU%8 zau-)N!qZpEqp0t3fYC>fv(4LEB#tLThUa9Gg zlJ&d#q)FYXd3v%ofFHFGcrLhm{>=&Az4;=nsN9g}9e>0@hB`p_ad@y4ukF61tGd}3 zbSkfi4-ZoMHNNwz8^VF*mAkM6(D>s&7_NK}^E@SEm*lZ$kS?Sv-k4;ybk_Fiw zOlYC1eJHw;y_Yi8cVX6Y=2sn#pmKMCe(k}vyzbnrj?zT-R+{rtr7*G{4Ev&l>Fh25 zxp8=?=YN6?WwX9IdU=j8Y*t5S&#IgcE2-X@Ck*vNM%^9SMt)z^^zv#vl!}*I04Srbh3+bw7xAn z54Qoo$AMaOVik~kG|O4^Xx0x+-D@0Kv0dEB zCug+&$#=a0q7tGn8vwDiP@k2r8A{VctFm2l`@(@TL*AqV%adevs=s*hj+*C|l3dw;hWgB*fx-v@fL-2U6*PBjTmnqVrgvFE+C zr;MuQ<;7GaXOhr6G3pf(@tUpAB6;=VJ~$k;K=sriDr~C8C#E|TV0PPFzb=4*JGS6# z43F)ChYNit5r88A$V6p2AvP?Qh?w)U*VHv$iX}^(<(MDrSia;|G3Ic`Ec70K9e?c; zE0}`2vzPMk7+)mGWAR1&LMwh$Rc^R*^v<+KS?1R7SZy|gZiJIY z3KZsJ;GYRHw#L>2X5<%`dhxaf6HrY4Li|HM+xr!KSGOd&!Op(ho-|eop#V+9;2bWU znh6MzNwKRl#-8JEF;P=u4KCV`_}I~%C@Mx-tIjmQdt$fzn?cXXFsn1 z5Z{+MK@IY+m4(tjkAg>cNU#q#yW)XtoR}Y zY}#1xuVZT6_f5IX59jKfGjc8XVawUey0pF4y5GeYj!V|tPNFr$Wvds;p??*Mp!fgJ zZ4e4_GtEF=S@L*8vNVQ^61oqxee*9bpeclHT%aft>t=_w*+#6P+o;23i3s|#!Vm$) zuVb+<;Cuw0MMyxCuw6yu>`zN2$>tOa3DO>IagGdZk z@a9n1ZN&*gnF`i5swxXb3xDjKTD#lFnE{?v@nf;Mb|oYU231S;MfJBMCw3d>|LZNR zQsx-`5ZVP3^-4nKWBO%nPmt^7rou~JW+V-hnh(PdP&mDXg`2py;hlI&C@fMr!H~Kz z#e}^;^xZ4l+3c3yiiAz!Q$U%MBA~;*Xy}i}>=OgQkK-y1q$bCAoqrV4gxfF;fumaGwi@9?^+YhN-xaCAy>-^z?N@sktv14UF1-G}MddRCTL?*P_B^mJEHz?sV8D zxX$9-C15VuN74SI$7WFcq48U0$E@=p zS47vhbSOwcTu}Gg8sQ&fpZu3txUY)vf$I)qf8huloM_)d^M5!k)m?f$N)9`ioLoM# zCO+*O_q!kCm72-HY@8Va$OuiSZkL-z*AbXgheDa3fC1fMbD+R-a)v4;b`U=(jJ04E z^x^o#n)jk%GutjR{}tB#Um!w;q=pTa0X*0IaQT-ac!-=h#sMu1bo9XApc~{otri-+ zKT7K}d$yTZ7k_ANvY9!ELuD1+4n2hUCYLxeBep1ka4W#ijr!ZTvwHfX{@Cy7nK80> zSC(+(PdY5Kt>uP0mFRbPeEDmz12N#Yt~;mB-D>HS=CYbY(sRtG-=jg|N|84UcdG{^ zg%$)cB`_lf2`Yw2hW8Bt2^BFG1Qe}fvb`arhn7L*!aSz+UiwLab-c$gF)$%82?hl# t4g&%j1povTwF!~lvMg%fdo=O`D_)qpy6AwR1PI1vV&|}<-mC%w2mnyhZqWb$ delta 2271 zcmV<52q5?666F$*U4L1kWV*R@%bWrN2mpYB1Aq*I`QfA`$HnRZzDKK_4O&vlZIDa# zKMwR!|M}wUdMbT6AqB1Bd|8LKqlW)k-~nakStpu_lT{ipgltWaXUhJ^1j-#l5uCvO zn?rZ%0eOfTh|iOu1xAoN%aa+p{@zAR_BryciCa}w7fJ86t$)=KU;3lljtycr4Ff~$ z2pc+JY1Qg}Rb$i>CkFdk%p6zyCEj%Gs|0t?TC7rRTFCR=8QdNh{6Mbfpii__S6|!N0d6ZTsec**+0byz3{A^l7A_&z4zOFcwRH1i=-1~AjvY{iUAPxK3q2zM1pOBz za)`h1GaWc`%6|sVRk5_B)(6fv6*n`>=X)kdg_110PQ!OZXjrwhWlM~{KlG&8ic)2y z)FOxi2{BS2+d%o=ENtp3A%TDU&=4M%hVrS>PGE1z&wqpv;nv_s{86+ojzPUG5GRwb zPbPJC>81M$%1Rcmi&3TgVl$;`B2j!OV%%*@Da{ny=F4@2>wvZw-enKN6+sFpTja4* zso{;mNC=(hr?AZ@F?XsfBY%s#NfNnzaVQiB^fH+WJp`%uDRL9WCP7Jn8vl4_M z$oOk?`9F~?ique|mXyWps>c{$6v`gl4G>d%$jp;UA4ZWo25NRCbhpP$m*GIyBwfA! zdddYMF~wQOKA;YVT`}z6e&566W<>l-AGh0s?SKgHBX^l+Hmwn$m4zbrdS9@^?n8xsdD6^gL zBk=}O5TVnGLGot>E?ju4GOMz|iN1K|4}X04M||~T|sPnF=2LRkTShHF(*>+7C{o{ELYbns7Yh%D+4tE-S|r zg*1Oah#jSjzP=GXzJklB=6IWx#}NYlSrQ=h(((6OE{RdH>xt`HgL!8nvVUe&WsA+I zGkUH!>Zd0Z7)TK|knPZCg*FWSs|W#cZdHw)A&j%jcr6n+$ydm{Iby-p_HMP$GTMpa z88|U#GZpT7#DK(Mm#iBxk9kz8`Q*FODD3&M{Vs^H7b%zOd%ZT7{b=2g9Qs|Ck$xtm z7g|13hmc!_NShq+E+ZPE<$r6h_OzOq3i`<-KGRBZw!qbe+W>)H_E`;#nEUhu#P#lz zmn!q`Qk~UR^oJR@QNEJ#dc;MJqM|`nd#0?~sPBK34tXpMl!~lU<>tuA0m{5yW6?SZ zONp~o03liB^q`mY?s7j%IalT2Ma3)=)Je}(mscSa3x92ayl>z(Mt``5*sT7peR!n# z@CNBI&689W@7h0g<+pf?oSON}ND ztZ5YH4;OJ9PI1B35V*tHgEVP!3mB*COv<8dW)_>2T8erDb@WE9#

`N}^B>#lxsyRu%f$V+?I-@K>;qHR! zw?c7#GZ6xHS?DL63-mp3W8E3?{8vV z)