forked from microsoft/vscode-remote-try-cpp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver_certificate_turtle.hpp
132 lines (123 loc) · 6.36 KB
/
server_certificate_turtle.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
//
// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
// Official repository: https://github.com/boostorg/beast
//
#pragma once
#include <boost/asio/buffer.hpp>
#include <boost/asio/ssl/context.hpp>
#include <cstddef>
#include <memory>
/* Load a signed certificate into the ssl context, and configure
the context for use with a server.
For this to work with the browser or operating system, it is
necessary to import the "Beast Test CA" certificate into
the local certificate store, browser, or operating system
depending on your environment Please see the documentation
accompanying the Beast certificate for more details.
*/
inline
void
load_server_certificate_turtle(boost::asio::ssl::context& ctx)
{
/*
The certificate was generated from CMD.EXE on Windows 10 using:
winpty openssl dhparam -out dh.pem 2048
winpty openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 10000 -out cert.pem -subj "//C=US\ST=CA\L=Los Angeles\O=Beast\CN=www.example.com"
*/
std::string const cert = R"(-----BEGIN CERTIFICATE-----
MIID1TCCAr2gAwIBAgIUVH57X+hpr9tZh7zT60HW4m5kGYgwDQYJKoZIhvcNAQEL
BQAwUjELMAkGA1UEBhMCREUxDDAKBgNVBAgTA05SVzEPMA0GA1UEBxMGS2VycGVu
MSQwIgYDVQQDExtMb2NhbCBUZXN0ICBJbnRlcm1lZGlhdGUgQ0EwHhcNMjEwNTIz
MjAyNDAwWhcNMjIwNTIzMjAyNDAwWjA3MTUwMwYDVQQDEyxUdXJ0bGUgTG9jYWwg
YW5kIEZyZWVERE5TIFNlcnZlciBDZXJ0aWZpY2F0ZTCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBANJ9VNhI0rFA4Fd9OO7bPaWYa2lDFM3qr6gXpEnC/p11
SWQQBxEt4WNd/YNIkeT2Q510sUs/ztcc3MS6Et9oty7pWZtGGpV376YvKgHXpyaZ
EosfA9ZAEkQ/CEELiVIayOQvYv1txKPCPOChCLDItDcz6WWeMYMU7Qon8RSssJSL
G36aXkex4HcBEp+CZ2TCVmVLmGBRbs1SpXdgOalP2RKNAhHLSul+lrnNdM8G126d
GaXUPeW90nHZXdOE4X8x1bj8MGBvRqDGNXxdWjR+W0y9NodDHIkd2oqty+ItN5Aj
wXGHg7zigyEo1C0rrvmnfOXmyJdjJeImYk1lqZjoifcCAwEAAaOBvTCBujAOBgNV
HQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAd
BgNVHQ4EFgQUO+ikQzIyKjuZG99euko8c8SJfTkwHwYDVR0jBBgwFoAUR6Vq4hCy
vt9abrnXacPC9pWNC+IwRQYDVR0RBD4wPIIQdHVydGxlLmZyaXR6LmJveIIddHVy
dGxlLmVpc2VubG9oci5mcmVlZGRucy5vcmeCCWxvY2FsaG9zdDANBgkqhkiG9w0B
AQsFAAOCAQEAZO8jJBEvznSUpvKvSiqg6Mn3pcbtlOB9fc3zqhAhMOu927YcW/FV
bf5NIIyBA0KgGiUjEcxDBdjaqE2gHCsVxaSwiB8VyKYmCnWJKOmg/9MssGclFR6B
jyPL1P8rUbcruKRc4aCQH+0ggFn6/2t9hrGI1MPa8aCOeD2tux5641IESY2X1L1G
tQmnN7xXeG3bHFMPwYHdsCN/Lyi4cY2d4Y7GaXH7wbi2pM/JUqzuUeJPUhCwdFH5
I1LRUKBahHMi5T3P5dzmBZlXR8+Qc6odIr8wOIXe/zdlA1ls0dMh2x0DFR+K3LDQ
SR+y4stwy1p+BzthPpG7t9dVnrvZN6uRNw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIC0jCCAnigAwIBAgIUeDpLxfT4F9l3pbMX8LR/ZdaS6BowCgYIKoZIzj0EAwIw
TTELMAkGA1UEBhMCREUxDDAKBgNVBAgTA05SVzEPMA0GA1UEBxMGS2VycGVuMR8w
HQYDVQQDExZFaXNlbmxvaHIgVGVzdCBSb290IENBMB4XDTIxMDQwOTA4NDIwMFoX
DTIyMDQwOTA4NDIwMFowUjELMAkGA1UEBhMCREUxDDAKBgNVBAgTA05SVzEPMA0G
A1UEBxMGS2VycGVuMSQwIgYDVQQDExtMb2NhbCBUZXN0ICBJbnRlcm1lZGlhdGUg
Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5RjJOFLWCSyIs/jQP
qA0fU9407coHU6SxUB4YbT16DubgPQpukdiBtVOKrXaJ7xDL7uONPYc3G5MT+Wxc
F6N5nxy9Dd4Ia71CUGdlPP6oYxgjA2AIVTdrBrtIxNiJmThL/xd+wEEdXiSKX9eu
wWilEYLev9MRVJZKU97FpNo/cm1u+iQ80m95gsIfQPX0w7QWSnmLhO8cAfoHteLN
CuU18nuLQafNESo+72gC6dfpXYtIrA+uFlcpRfEhcrlQ2/lhOZL9sSpM05GMzWm5
aB96QPkAelcT9ZVaY92YUnEsWKz5I+jRfRK1XVa7+8ACVizfy0Yvy91mO6C913uR
CFPXAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBpjASBgNVHRMBAf8ECDAGAQH/AgEA
MB0GA1UdDgQWBBRHpWriELK+31puuddpw8L2lY0L4jAfBgNVHSMEGDAWgBT9cNk9
qdisyHYmJeHB4uO+nHW0bTAKBggqhkjOPQQDAgNIADBFAiEAsi0ksn5hn2urj6Rm
fLiZVJj17IFbEy3KhvnQ3LdWS+gCIFdUG513q0gAN5bk/JzvrGg8XxaUPqM77f8y
mEXLUyZZ
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB3jCCAYSgAwIBAgIUAKheNM7QnELe/lO8e4+j/Y1qCA8wCgYIKoZIzj0EAwIw
TTELMAkGA1UEBhMCREUxDDAKBgNVBAgTA05SVzEPMA0GA1UEBxMGS2VycGVuMR8w
HQYDVQQDExZFaXNlbmxvaHIgVGVzdCBSb290IENBMB4XDTIxMDQwOTA4NDIwMFoX
DTI2MDQwODA4NDIwMFowTTELMAkGA1UEBhMCREUxDDAKBgNVBAgTA05SVzEPMA0G
A1UEBxMGS2VycGVuMR8wHQYDVQQDExZFaXNlbmxvaHIgVGVzdCBSb290IENBMFkw
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/8Mdn+7CK23AoF/Glbl4NMPKOFOABVYU
MZLDhlQiam8skBn7dRwxXoMzgVFVxIzxu1BDu+Z8x6eewKMTctjZKqNCMEAwDgYD
VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP1w2T2p2KzI
diYl4cHi476cdbRtMAoGCCqGSM49BAMCA0gAMEUCIQDxqM+8yRv/y2ZJ1ehecwCu
nJRY/2CliAaMc7w8ZghvJgIgMqjLCt9cFZY01RXmnUXf4aZJcLRdOILlZncfLPEj
DFg=
-----END CERTIFICATE-----
)";
std::string const key = R"(-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA0n1U2EjSsUDgV3047ts9pZhraUMUzeqvqBekScL+nXVJZBAH
ES3hY139g0iR5PZDnXSxSz/O1xzcxLoS32i3LulZm0YalXfvpi8qAdenJpkSix8D
1kASRD8IQQuJUhrI5C9i/W3Eo8I84KEIsMi0NzPpZZ4xgxTtCifxFKywlIsbfppe
R7HgdwESn4JnZMJWZUuYYFFuzVKld2A5qU/ZEo0CEctK6X6Wuc10zwbXbp0ZpdQ9
5b3Scdld04ThfzHVuPwwYG9GoMY1fF1aNH5bTL02h0MciR3aiq3L4i03kCPBcYeD
vOKDISjULSuu+ad85ebIl2Ml4iZiTWWpmOiJ9wIDAQABAoIBAAWFYg9WQaiCkh/Z
Wf/x4jkQuWiGaOpJyJe5HwcMRU9t/yHPxc+ui2Xm1jp2UdVWnElqASh/IPbFfAjw
9IPFpGBnoIERIqte/Ps363sm4+yAQVtC0f/xqEj/+kByhASSTUim8YrCMVE2TBB8
SNUSPp/gDbQrpRLSHrGQgKNRMESFIWJUehg7tRHtnq9Z1Eo69OChSpMwK6msEMrB
lkdMlHXuDA9ZVkekeO/cXCSePZm/fapY5zifHvi6dCuteb2zpT3b9aftrwZ9Sd8k
So5uPS7W6d98+nQKBkmNkdLtPyQKPtQVCSR1l0Z0q/Cspff4hWwAtTN5NnZ0B9n0
JMKvYeECgYEA40SfLOtbW7pdqrTYIzuRLaxTNutfWRZOi/3WzTIS1M3K+wrNdUjQ
NhYTxh3nKqeGulgWG5wXlq5PjHD2nlVh/b5Y4zcRz3AHwJZBjTbM0Y4RA4S3701w
lxpJk+UtPMDr/HPzYwvg9GYym6ghaH/R7YLHwkN/Iyluvz9n33g+B6cCgYEA7Rmv
ee4D0hUlLRibISeqhBMLQ3OkqqmBIFoOtI/U9GggTDfHiFbaEyZJis31MvWv2eRe
cLE/1Z/h2M/FAQPHXQqxExkU8lMZPxLC8C2tbP2nLbzelS3nl8r1XP8TCCt+OuOv
pSjt8GrZRUaNreLApvzwrdcH6SgJ8kjRJ61gtTECgYEAr42SZ2BmcbTEJdkMHCsn
OeCjZwjp3icdBYZPJrJHWZqd8M2nZ7GXJDBpleADcS93IvpoGWu5zOtZB2M7HZNW
3mrqvpkLaPFhC6MFf8+U50qWWeFrM67eCdqEe3nMN+HOaHQozZmfayqGbTayl8Yk
oxMiuyzoSID4y0JvOm/neoECgYBclGj2XT/UqjkH8NGyEoD8bUs6nU8w7FrlPQT8
8CShAn+KA0XAMNmaHJsevej+avytQgS2UB+y1GkldYthKA6Sf/hAksyhCl2TSUog
6lULd8ftjhADhBcoKDHCjD7sM79oUztkbCTseWw5JqFvwlijW6TG3G3UVrP7jP9O
VN6sIQKBgQDhKbCngEzT6i6DVqsw9u3XvBvarvs/4PlD+xA6aANqsuTK01wfNiJG
BvtSuFz0IClChTnUfInKBRT7pzZzA8Urp5qfwPx/jvsYvOdKaPJ34wpS6ghkfrtU
RBzjIlyrkPwZ9CxjJHlAgNSYQppmGMVRmAxP0getvHizBtEzf+WJJQ==
-----END RSA PRIVATE KEY-----
)";
ctx.set_options(
boost::asio::ssl::context::default_workarounds |
boost::asio::ssl::context::no_sslv2 |
boost::asio::ssl::context::single_dh_use);
ctx.use_certificate_chain(
boost::asio::buffer(cert.data(), cert.size()));
ctx.use_private_key(
boost::asio::buffer(key.data(), key.size()),
boost::asio::ssl::context::file_format::pem);
}