commit test ssl certificate to testdata

Chromium requires build artifacts to be generated deterministically so
commit a long-lived (10 years) test certificate to the repository.

Change-Id: I7a6e2441f506196ca58fbbf757648fa0ac70bc9a
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/1872188
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Scott Graham <scottmg@chromium.org>
This commit is contained in:
Joshua Peraza 2019-10-30 15:27:03 -07:00
parent cea103fb7d
commit 1b60c8172c
6 changed files with 93 additions and 36 deletions

View File

@ -103,15 +103,14 @@ if (crashpad_is_in_chromium || crashpad_is_in_fuchsia) {
]
if (crashpad_use_boringssl_for_http_transport_socket) {
deps += [ "util:generate_test_server_key" ]
resources += [
{
path = "$root_out_dir/crashpad_util_test_cert.pem"
dest = "crashpad_util_test_cert.pem"
path = "util/net/testdata/crashpad_util_test_cert.pem"
dest = "util/net/testdata/crashpad_util_test_cert.pem"
},
{
path = "$root_out_dir/crashpad_util_test_key.pem"
dest = "crashpad_util_test_key.pem"
path = "util/net/testdata/crashpad_util_test_key.pem"
dest = "util/net/testdata/crashpad_util_test_key.pem"
},
]
}

View File

@ -505,17 +505,6 @@ static_library("util") {
}
}
if (crashpad_use_boringssl_for_http_transport_socket) {
action("generate_test_server_key") {
script = "net/generate_test_server_key.py"
outputs = [
"$root_out_dir/crashpad_util_test_cert.pem",
"$root_out_dir/crashpad_util_test_key.pem",
]
data = outputs
}
}
if (!crashpad_is_android) {
crashpad_executable("http_transport_test_server") {
testonly = true
@ -540,9 +529,6 @@ if (!crashpad_is_android) {
}
if (crashpad_use_boringssl_for_http_transport_socket) {
data_deps = [
":generate_test_server_key",
]
defines = [ "CRASHPAD_USE_BORINGSSL" ]
if (crashpad_is_in_chromium || crashpad_is_in_fuchsia) {

View File

@ -16,13 +16,32 @@
import os
import subprocess
import sys
# GN requires a Python script for actions, so this just wraps the openssl
# command needed to generate a test private key and a certificate. These names
# must correspond to what TestPaths::BuildArtifact() constructs.
key = 'crashpad_util_test_key.pem'
cert = 'crashpad_util_test_cert.pem'
subprocess.check_call(
['openssl', 'req', '-x509', '-nodes', '-subj', '/CN=localhost',
'-days', '365', '-newkey', 'rsa:2048', '-keyout', key, '-out', cert],
stderr=open(os.devnull, 'w'))
testdata = os.path.join(os.path.dirname(__file__), 'testdata')
key = os.path.join(testdata, 'crashpad_util_test_key.pem')
cert = os.path.join(testdata, 'crashpad_util_test_cert.pem')
with open(cert, 'w') as cert_file, open(key, 'w') as key_file:
MESSAGE = 'DO NOT EDIT: This file was auto-generated by ' + __file__ + '\n\n'
cert_file.write(MESSAGE)
key_file.write(MESSAGE)
proc = subprocess.Popen(
['openssl', 'req', '-x509', '-nodes', '-subj', '/CN=localhost',
'-days', '3650', '-newkey', 'rsa:2048', '-keyout', '-'],
stderr=open(os.devnull, 'w'), stdout=subprocess.PIPE)
contents = proc.communicate()[0]
dest = sys.stderr
for line in contents.splitlines(True):
if line.startswith("-----BEGIN PRIVATE KEY-----"):
dest = key_file
elif line.startswith("-----BEGIN CERTIFICATE-----"):
dest = cert_file
elif line.startswith("-----END"):
dest.write(line)
dest = sys.stderr
continue
dest.write(line)

View File

@ -81,15 +81,14 @@ class HTTPTransportTestFixture : public MultiprocessExec {
SetChildCommand(server_path, nullptr);
} else {
std::vector<std::string> args;
cert_ = TestPaths::BuildArtifact(FILE_PATH_LITERAL("util"),
FILE_PATH_LITERAL("cert"),
TestPaths::FileType::kCertificate);
cert_ = TestPaths::TestDataRoot().Append(
FILE_PATH_LITERAL("util/net/testdata/crashpad_util_test_cert.pem"));
args.push_back(ToUTF8IfWin(cert_.value()));
args.emplace_back(ToUTF8IfWin(
TestPaths::BuildArtifact(FILE_PATH_LITERAL("util"),
FILE_PATH_LITERAL("key"),
TestPaths::FileType::kCertificate)
.value()));
args.emplace_back(
ToUTF8IfWin(TestPaths::TestDataRoot()
.Append(FILE_PATH_LITERAL(
"util/net/testdata/crashpad_util_test_key.pem"))
.value()));
SetChildCommand(server_path, &args);
scheme_and_host_ = "https://localhost";
}
@ -371,6 +370,9 @@ TEST_P(HTTPTransport, Upload33k_LengthUnknown) {
// lacking libcrypto.so.1.1, so disabled there for now. On Mac, they could also
// likely be enabled relatively easily, if HTTPTransportMac learned to respect
// the user-supplied cert.
//
// If tests with boringssl are failing because of expired certificates, try
// re-running generate_test_server_key.py.
INSTANTIATE_TEST_SUITE_P(HTTPTransport,
HTTPTransport,
testing::Values(FILE_PATH_LITERAL("http"),

View File

@ -0,0 +1,21 @@
DO NOT EDIT: This file was auto-generated by ./util/net/generate_test_server_key.py
-----BEGIN CERTIFICATE-----
MIIDCDCCAfCgAwIBAgITF9h5BaPfzje590HrE1UF+f9PVDANBgkqhkiG9w0BAQsF
ADAUMRIwEAYDVQQDDAlsb2NhbGhvc3QwHhcNMTkxMDMwMjIyNDE4WhcNMjkxMDI3
MjIyNDE4WjAUMRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQCrT0iXfixTPH6nBxgvCgiKkSTeVTSvfhcoUYA7yPZj/1XH
VYfECoGyvFN4/5g/GL4c721XZmI92Twg2Oa3HksRY8VlNXGNwqbt+wftSLOz+dOE
bsJ3+NsBtXuaIphFPA9u0h+yrplBtM/dxLTW5v8e3OuEMBXa+94dp4y78u21UkzM
uWB66tduT7/f0S9P68XhksYwwwvCn5lu258wHKNM5mb4CTwOcUgyyprlS2FS3Fsx
pIsg9wDfQy5rHINxcZGZZ8Ht4KOJ7egwhfiP4XEiLK6+5DZoOQtrkEUFfLL4i5sx
+eOeD12GP+Dxs6KHYoejGftNx/7U0E2GVMWwWzstAgMBAAGjUzBRMB0GA1UdDgQW
BBT8y2bnyty/YWcvzlE9JIAPG7/q4DAfBgNVHSMEGDAWgBT8y2bnyty/YWcvzlE9
JIAPG7/q4DAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCF+R21
Cd1fgITfhYJE7JAV3jLfact5h/2MP5UwgtODfZt2Idwxs8qqwPB0g7WQqEjrPfTv
6y90AEwr2L8e+wXGnTKtWelCqzztFGov4Hj+rd158eOmEo0IPGrx8dwqLQbw91uU
cq4onf5iuHkOt99TmIqVYn2zaOHbOF2YYyU052X+9XE/Z5fhibX5THfEG3w0+XM6
aKEGIM/MxfVaLA8yDXFxhDXHBrH+QAAXTQaC8exnp+po/psyJARD0sM509MeTdAv
po9JyIzesNAsLW4I7kL8I5i8e+WN79lX2jgwaWMxPmHadYN3mtoltpmFM40oFN6q
8wjuU07eN/G79c3B
-----END CERTIFICATE-----

View File

@ -0,0 +1,30 @@
DO NOT EDIT: This file was auto-generated by ./util/net/generate_test_server_key.py
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCrT0iXfixTPH6n
BxgvCgiKkSTeVTSvfhcoUYA7yPZj/1XHVYfECoGyvFN4/5g/GL4c721XZmI92Twg
2Oa3HksRY8VlNXGNwqbt+wftSLOz+dOEbsJ3+NsBtXuaIphFPA9u0h+yrplBtM/d
xLTW5v8e3OuEMBXa+94dp4y78u21UkzMuWB66tduT7/f0S9P68XhksYwwwvCn5lu
258wHKNM5mb4CTwOcUgyyprlS2FS3FsxpIsg9wDfQy5rHINxcZGZZ8Ht4KOJ7egw
hfiP4XEiLK6+5DZoOQtrkEUFfLL4i5sx+eOeD12GP+Dxs6KHYoejGftNx/7U0E2G
VMWwWzstAgMBAAECggEANEgJDnrqSijfOlh27/wu6SMszlHQt3JS3PIqoZROZexK
IICg45qVRJgnHXlb3H3Pn4MOqqrLdraynA+2MdKj9FWvq5io5CuwyFZhb/BNL7Mh
83veC8E+DYJ2i27da9vNlfO4ys5wZVYqTjM3QZLT73Zaxkfqk59khUZaNA4Kr9hD
EBs9gaDMATyIAN5eAbYTVxgobZ+7OjCNmQ46x2KOg6Wwg/ZQEXtqFoDB3aCNVfTz
OxlLb5XWF9PvqW0p1wFpF0XEDipkVtjorjp3mHXRuq0gS9Gev1ChQej1yVqMee9J
jnVK0k7qZw4WLStxBjHqWlBnYLcXLb4f2c6cssA6YQKBgQDfqtYFjU3HCeoRaAoP
MWTSW2PX8fitnp0O4e1yHymDgtirepvPL8pa7rTBkHuR6lfXNjY0qD0NPsbr81nG
kNv/btLOK1YPw6f468S6DMsOzGPIWWE+jkhF/1iUTMUQLvOM3lCLEi0ayZ26yx1T
F2wO2u1kGc1eJ8wn6TccsYiguQKBgQDEEt7eGQMkxLFV4N5e5iunHBvQg+EgfLZZ
bnuftwruqafmCht/BZgmKQD+e6B6h3nC/iaKET101zpWL95x7Ayd1+mg6Rmdzl87
ctftScrNLYUTl36BuhP82Y9HvLgf20xrEwBGivc0QtqhMAz/DJoknEM/29LmWEsZ
VwvWQxhsFQKBgQCrOcJMT8d6Fznsh2QkC2EutK3ztBb2+xUrPoQjOH30YqfyZpN/
Agv8nv8bq7sdknQamjLXDvBmAmgQW6SfoWf53OJe2Mgym0stAXkCIScWNhwxVVNf
q1bi1z79kOPPptHmRo8MWCbVegFY7YOOh8C+gpT3a9VPPlJJP31kZvi8aQKBgDcD
ZGzEb9FdLrR9x2axBgZ5KIS0u/G1jCRDj4Qcg4C7MVSl+VkGZM4wKws7/KbkZBGF
5aJPfALQcJnGDI/CPzf6YJ65SGqygJ3ZdyQo1DIFV5VLqD8Vyo3jLQRfuvmVOjfA
uQ8R5pJPP7CCHuNg0c772RKNxvrCQy/08GlJogyRAoGAK6A/8r/iDRJipJSOZdCl
MreiJvjFOQrORhy+TeDGn02EHK0lijzj1I7SlgfUDLWVnQpBlk12wV6aHGUj2NlG
Ctk15MFs6gggPV1Fmt6PeviE1e9E4+SDWX35Jhe8JDIqxdgZ0HW/S9Nl4Xt3owhw
/DSneMQd7X0Tdq7lesJjd3o=
-----END PRIVATE KEY-----