Skip to content

Commit d7b361a

Browse files
authored
test(cli-repl): add tests for --tlsAllow flags (MONGOSH-571) (#806)
1 parent 50fe4d9 commit d7b361a

File tree

6 files changed

+295
-3
lines changed

6 files changed

+295
-3
lines changed

packages/cli-repl/test/e2e-tls.spec.ts

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const CLIENT_CERT = getCertPath('client.bundle.pem');
1414
const CLIENT_CERT_PFX = getCertPath('client.bundle.pfx');
1515
const INVALID_CLIENT_CERT = getCertPath('invalid-client.bundle.pem');
1616
const SERVER_KEY = getCertPath('server.bundle.pem');
17+
const SERVER_INVALIDHOST_KEY = getCertPath('server-invalidhost.bundle.pem');
1718
const CRL_INCLUDING_SERVER = getCertPath('ca-server.crl');
1819

1920
describe('e2e TLS', () => {
@@ -49,7 +50,7 @@ describe('e2e TLS', () => {
4950
});
5051

5152
function registerTlsTests({ tlsMode: serverTlsModeOption, tlsModeValue: serverTlsModeValue, tlsCertificateFile: serverTlsCertificateKeyFileOption, tlsCaFile: serverTlsCAFileOption }) {
52-
context('connecting without client cert', () => {
53+
context('connecting without client cert to server with valid cert', () => {
5354
after(async() => {
5455
// mlaunch has some trouble interpreting all the server options correctly,
5556
// and subsequently can't connect to the server to find out if it's up,
@@ -153,7 +154,7 @@ describe('e2e TLS', () => {
153154
});
154155
});
155156

156-
context('connecting with client cert', () => {
157+
context('connecting with client cert to server with valid cert', () => {
157158
const tmpdir = useTmpdir();
158159

159160
after(async() => {
@@ -302,5 +303,62 @@ describe('e2e TLS', () => {
302303
}
303304
});
304305
});
306+
307+
context('connecting to server with invalid cert', () => {
308+
after(async() => {
309+
// mlaunch has some trouble interpreting all the server options correctly,
310+
// and subsequently can't connect to the server to find out if it's up,
311+
// then thinks it isn't and doesn't shut it down cleanly. We shut it down
312+
// here to work around that.
313+
const shell = TestShell.start({ args:
314+
[
315+
await server.connectionString(),
316+
'--tls', '--tlsCAFile', CA_CERT, '--tlsAllowInvalidCertificates'
317+
]
318+
});
319+
await shell.waitForPrompt();
320+
await shell.executeLine('db.shutdownServer({ force: true })');
321+
await TestShell.killall();
322+
});
323+
324+
const server = startTestServer(
325+
'not-shared', '--hostname', 'localhost',
326+
serverTlsModeOption, serverTlsModeValue,
327+
serverTlsCertificateKeyFileOption, SERVER_INVALIDHOST_KEY
328+
);
329+
330+
it('works with allowInvalidCertificates', async() => {
331+
const shell = TestShell.start({
332+
args: [
333+
await server.connectionString(),
334+
'--tls', '--tlsCAFile', CA_CERT, '--tlsAllowInvalidCertificates'
335+
]
336+
});
337+
const result = await shell.waitForPromptOrExit();
338+
expect(result.state).to.equal('prompt');
339+
});
340+
341+
it('works with allowInvalidHostnames', async() => {
342+
const shell = TestShell.start({
343+
args: [
344+
await server.connectionString(),
345+
'--tls', '--tlsCAFile', CA_CERT, '--tlsAllowInvalidHostnames'
346+
]
347+
});
348+
const result = await shell.waitForPromptOrExit();
349+
expect(result.state).to.equal('prompt');
350+
});
351+
352+
it('fails when no additional args are provided', async() => {
353+
const shell = TestShell.start({
354+
args: [
355+
await server.connectionString(),
356+
'--tls', '--tlsCAFile', CA_CERT
357+
]
358+
});
359+
const result = await shell.waitForPromptOrExit();
360+
expect(result.state).to.equal('exit');
361+
});
362+
});
305363
}
306364
});

packages/cli-repl/test/fixtures/certificates/README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,28 @@ To recreate the certificates follow the steps outlined below.
7070
cat server.pem server.key > server.bundle.pem
7171
```
7272

73+
## Setup Server Certificate with invalid hostname
74+
1. Create a new key to use for the server:
75+
```
76+
openssl genrsa -out server-invalidhost.key 4096
77+
```
78+
2. Generate a Certificate Signing Request (CSR) with validity 99.999 days:
79+
```
80+
openssl req -new -key server-invalidhost.key -out server-invalidhost.csr -days 99999
81+
```
82+
* Organization Name: `MongoDB`
83+
* Organizational Unit Name: `DevTools`
84+
* Common Name: `invalidhost`
85+
3. Sign the CSR to generate server certificate:
86+
```
87+
openssl ca -create_serial -config ca.cnf -in server-invalidhost.csr -out server-invalidhost.pem -days 99999
88+
```
89+
This will also generate a `<FINGERPRINT>.pem` file which can be removed.
90+
4. Create a bundle with server key and certificate to use for `mongod`:
91+
```
92+
cat server-invalidhost.pem server-invalidhost.key > server-invalidhost.bundle.pem
93+
```
94+
7395
## Setup "Non-CA" for testing invalid CA cert
7496
1. Create a new key to use for the Non CA:
7597
```

packages/cli-repl/test/fixtures/certificates/ca.db

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ V 22941006122725Z F349920F8B55BB11 unknown /O=MongoDB/OU=DevTools/CN=127.0.0.1
66
R 22941006125419Z 201222130941Z F349920F8B55BB12 unknown /O=MongoDB/OU=DevTools/CN=localhost
77
V 22941006125605Z F349920F8B55BB13 unknown /O=MongoDB/OU=DevTools/CN=Wonderwoman/[email protected]
88
V 22941006152405Z F349920F8B55BB14 unknown /O=MongoDB/OU=DevTools Testers/CN=Wonderwoman/[email protected]
9+
V 22941218081417Z F349920F8B55BB15 unknown /O=MongoDB/OU=DevTools/CN=invalidhost
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
F349920F8B55BB15
1+
F349920F8B55BB16
Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
Certificate:
2+
Data:
3+
Version: 1 (0x0)
4+
Serial Number: 17530703619976182549 (0xf349920f8b55bb15)
5+
Signature Algorithm: sha256WithRSAEncryption
6+
Issuer: O=MongoDB, OU=DevTools, CN=DevTools CA
7+
Validity
8+
Not Before: Mar 5 08:14:17 2021 GMT
9+
Not After : Dec 18 08:14:17 2294 GMT
10+
Subject: O=MongoDB, OU=DevTools, CN=invalidhost
11+
Subject Public Key Info:
12+
Public Key Algorithm: rsaEncryption
13+
Public-Key: (4096 bit)
14+
Modulus:
15+
00:c0:cd:cf:d8:99:66:12:ca:6b:14:6a:97:81:33:
16+
71:d6:37:13:70:a9:78:02:69:b0:d0:6c:48:75:8d:
17+
a4:53:7c:d1:f7:82:19:c6:4a:a6:36:cb:e9:ca:d8:
18+
c5:81:61:08:57:e0:0c:72:cd:00:c5:d5:77:8d:8a:
19+
ea:c1:b2:e1:89:09:5e:29:92:38:91:1a:30:b5:9b:
20+
13:4c:96:d1:c9:a9:ae:71:98:c9:3e:32:f5:e9:d4:
21+
f9:e9:c1:41:32:58:21:6b:32:55:c4:6d:5e:64:0d:
22+
81:23:0c:b7:9e:a0:8a:73:51:7d:e4:d5:45:9c:f4:
23+
4a:78:a7:97:0b:ed:12:53:b1:ca:11:ff:85:ff:58:
24+
11:9e:7e:33:13:c3:33:22:47:06:eb:8f:fa:3c:3a:
25+
5f:91:8e:6f:97:eb:c5:aa:62:51:66:ca:90:b9:88:
26+
00:30:ba:86:33:59:e0:ce:5e:35:a4:78:ed:87:75:
27+
46:db:fb:2d:0a:77:79:eb:5f:57:22:68:82:fa:90:
28+
f0:68:01:b9:b1:26:8b:a6:2c:a1:06:5a:26:c4:3a:
29+
e8:12:cb:dd:8c:a4:07:65:9a:6c:60:9e:e7:02:ec:
30+
86:4e:a8:74:c8:de:bb:a0:79:b2:68:56:c9:b7:67:
31+
77:4f:16:ab:b6:8b:4a:35:03:d1:01:66:78:ff:0d:
32+
98:e4:6d:4a:78:71:b9:ee:c3:b8:67:95:fb:50:f0:
33+
fa:30:13:64:d5:1a:02:fb:be:28:53:08:45:d5:3b:
34+
9f:28:c0:67:d2:36:2c:25:9a:58:5d:f2:e4:fc:99:
35+
1a:88:28:0c:8f:9a:66:20:8d:45:d8:31:1c:02:20:
36+
13:b9:3a:1e:2b:02:57:2d:44:d2:7e:d4:4a:d1:7e:
37+
10:91:75:eb:63:63:f2:c9:23:dc:f9:12:3a:8a:44:
38+
b5:ec:f9:ab:6b:8b:fe:3f:98:42:cb:23:fa:7f:e0:
39+
47:52:65:41:4c:b9:67:37:4e:69:a5:99:e7:a9:d8:
40+
32:b1:4c:15:4b:63:58:1c:1b:ed:d4:95:0b:f4:23:
41+
6d:d2:d0:23:a7:e0:b3:bd:79:75:9a:93:ec:3c:91:
42+
15:ed:d8:5b:64:53:22:d9:70:45:a5:e7:d4:b0:3d:
43+
55:8e:0b:9f:31:29:95:2a:94:e7:7e:7c:5f:77:51:
44+
e5:db:30:d1:e1:07:b6:0e:56:8d:9b:43:bc:43:47:
45+
27:60:33:e3:c8:0a:79:7f:5b:da:30:42:17:9b:6a:
46+
64:7a:30:fb:89:ed:91:4b:60:a9:58:3e:6f:af:b1:
47+
d2:44:c0:71:cb:1e:b1:3e:71:c0:8d:4b:55:72:33:
48+
13:77:64:86:b8:80:e5:7e:a0:f3:d6:c7:25:ba:10:
49+
03:63:8f
50+
Exponent: 65537 (0x10001)
51+
Signature Algorithm: sha256WithRSAEncryption
52+
1e:d8:8a:82:4d:05:2a:20:a8:cf:4b:d2:b0:28:5b:7b:de:47:
53+
d8:c8:1c:f5:cb:60:45:ab:81:b8:69:9d:71:75:81:4b:81:5b:
54+
ce:1e:3a:d8:39:6c:70:25:31:0f:11:32:a2:fb:a3:d3:de:22:
55+
6b:ed:0f:e9:2a:c4:c6:34:c3:44:f6:0c:b7:09:50:29:bb:b2:
56+
16:ed:9e:69:e6:0f:34:cd:f2:ed:5d:ad:92:30:22:de:d9:23:
57+
8c:f6:22:1b:d9:d1:cc:f7:e4:75:f3:cc:f0:7a:78:e7:d1:8b:
58+
b1:ef:be:16:d4:77:eb:49:10:ac:96:1e:51:7f:04:19:fb:11:
59+
3d:2c:62:92:db:9e:87:13:a3:24:d1:82:ac:9e:13:52:b5:31:
60+
a8:91:98:2b:d1:84:12:3c:89:71:6d:a0:93:ea:c2:20:51:89:
61+
c8:56:75:bd:75:6f:ba:0c:67:76:60:54:23:5f:99:f8:9e:15:
62+
d4:cb:b0:25:da:e3:b5:2f:fc:f5:f2:e7:e9:08:f6:28:e6:42:
63+
0b:0e:40:6b:15:61:fe:ed:dc:4f:c6:cc:67:82:b2:8f:d0:b4:
64+
b4:23:13:0a:d4:8d:d3:54:fa:01:d0:b8:91:08:2c:52:c0:9f:
65+
cb:95:4d:ab:20:e2:7c:d6:09:98:b0:d5:84:20:f1:34:4b:01:
66+
db:8c:63:c5:d4:1d:22:ea:b6:02:a1:68:2a:4d:d1:7c:e1:25:
67+
5e:10:43:f3:33:7a:d9:08:f5:84:d3:e0:4d:5a:c3:99:62:a7:
68+
84:50:a3:a1:3f:88:ed:96:5b:34:e9:e2:a1:a5:9f:e3:c2:1e:
69+
04:19:26:85:63:77:0e:c1:9d:f6:03:e9:05:35:65:5b:1f:86:
70+
21:b5:ac:bf:a6:6f:d0:28:15:ae:53:a5:b2:ad:c9:52:52:89:
71+
49:11:fa:ca:d3:24:a4:d8:a0:0f:ff:7e:a8:a6:3f:7d:79:7f:
72+
95:2d:24:75:ce:67:9b:75:46:b6:de:62:a3:a6:d9:e5:18:c8:
73+
44:20:a8:00:25:f1:2d:8a:d2:41:25:39:5f:b1:0d:72:ab:f0:
74+
61:fa:ac:85:f3:c0:c3:78:e5:d3:ed:d2:d7:78:01:f0:54:20:
75+
54:63:7b:72:ce:93:43:2f:e2:39:ee:d2:84:f7:af:6b:0b:6a:
76+
7c:97:53:58:b5:0f:51:d4:83:30:c6:b2:9c:ab:85:53:cb:69:
77+
9e:7c:17:a1:14:b2:4f:8b:ca:62:d9:5d:51:ab:ee:11:02:5d:
78+
db:26:7b:16:52:58:db:22:15:10:00:e7:61:ea:7e:19:f9:29:
79+
5d:05:0a:16:62:26:c1:9e:6d:1e:c5:be:d3:9d:de:08:76:da:
80+
b1:a8:a0:63:34:50:82:5e
81+
-----BEGIN CERTIFICATE-----
82+
MIIE9DCCAtwCCQDzSZIPi1W7FTANBgkqhkiG9w0BAQsFADA7MRAwDgYDVQQKDAdN
83+
b25nb0RCMREwDwYDVQQLDAhEZXZUb29sczEUMBIGA1UEAwwLRGV2VG9vbHMgQ0Ew
84+
IBcNMjEwMzA1MDgxNDE3WhgPMjI5NDEyMTgwODE0MTdaMDsxEDAOBgNVBAoMB01v
85+
bmdvREIxETAPBgNVBAsMCERldlRvb2xzMRQwEgYDVQQDDAtpbnZhbGlkaG9zdDCC
86+
AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDNz9iZZhLKaxRql4EzcdY3
87+
E3CpeAJpsNBsSHWNpFN80feCGcZKpjbL6crYxYFhCFfgDHLNAMXVd42K6sGy4YkJ
88+
XimSOJEaMLWbE0yW0cmprnGYyT4y9enU+enBQTJYIWsyVcRtXmQNgSMMt56ginNR
89+
feTVRZz0SninlwvtElOxyhH/hf9YEZ5+MxPDMyJHBuuP+jw6X5GOb5frxapiUWbK
90+
kLmIADC6hjNZ4M5eNaR47Yd1Rtv7LQp3eetfVyJogvqQ8GgBubEmi6YsoQZaJsQ6
91+
6BLL3YykB2WabGCe5wLshk6odMjeu6B5smhWybdnd08Wq7aLSjUD0QFmeP8NmORt
92+
Snhxue7DuGeV+1Dw+jATZNUaAvu+KFMIRdU7nyjAZ9I2LCWaWF3y5PyZGogoDI+a
93+
ZiCNRdgxHAIgE7k6HisCVy1E0n7UStF+EJF162Nj8skj3PkSOopEtez5q2uL/j+Y
94+
Qssj+n/gR1JlQUy5ZzdOaaWZ56nYMrFMFUtjWBwb7dSVC/QjbdLQI6fgs715dZqT
95+
7DyRFe3YW2RTItlwRaXn1LA9VY4LnzEplSqU5358X3dR5dsw0eEHtg5WjZtDvENH
96+
J2Az48gKeX9b2jBCF5tqZHow+4ntkUtgqVg+b6+x0kTAccsesT5xwI1LVXIzE3dk
97+
hriA5X6g89bHJboQA2OPAgMBAAEwDQYJKoZIhvcNAQELBQADggIBAB7YioJNBSog
98+
qM9L0rAoW3veR9jIHPXLYEWrgbhpnXF1gUuBW84eOtg5bHAlMQ8RMqL7o9PeImvt
99+
D+kqxMY0w0T2DLcJUCm7shbtnmnmDzTN8u1drZIwIt7ZI4z2IhvZ0cz35HXzzPB6
100+
eOfRi7HvvhbUd+tJEKyWHlF/BBn7ET0sYpLbnocToyTRgqyeE1K1MaiRmCvRhBI8
101+
iXFtoJPqwiBRichWdb11b7oMZ3ZgVCNfmfieFdTLsCXa47Uv/PXy5+kI9ijmQgsO
102+
QGsVYf7t3E/GzGeCso/QtLQjEwrUjdNU+gHQuJEILFLAn8uVTasg4nzWCZiw1YQg
103+
8TRLAduMY8XUHSLqtgKhaCpN0XzhJV4QQ/MzetkI9YTT4E1aw5lip4RQo6E/iO2W
104+
WzTp4qGln+PCHgQZJoVjdw7BnfYD6QU1ZVsfhiG1rL+mb9AoFa5TpbKtyVJSiUkR
105+
+srTJKTYoA//fqimP315f5UtJHXOZ5t1RrbeYqOm2eUYyEQgqAAl8S2K0kElOV+x
106+
DXKr8GH6rIXzwMN45dPt0td4AfBUIFRje3LOk0Mv4jnu0oT3r2sLanyXU1i1D1HU
107+
gzDGspyrhVPLaZ58F6EUsk+LymLZXVGr7hECXdsmexZSWNsiFRAA52Hqfhn5KV0F
108+
ChZiJsGebR7FvtOd3gh22rGooGM0UIJe
109+
-----END CERTIFICATE-----
110+
-----BEGIN RSA PRIVATE KEY-----
111+
MIIJKQIBAAKCAgEAwM3P2JlmEsprFGqXgTNx1jcTcKl4Ammw0GxIdY2kU3zR94IZ
112+
xkqmNsvpytjFgWEIV+AMcs0AxdV3jYrqwbLhiQleKZI4kRowtZsTTJbRyamucZjJ
113+
PjL16dT56cFBMlghazJVxG1eZA2BIwy3nqCKc1F95NVFnPRKeKeXC+0SU7HKEf+F
114+
/1gRnn4zE8MzIkcG64/6PDpfkY5vl+vFqmJRZsqQuYgAMLqGM1ngzl41pHjth3VG
115+
2/stCnd5619XImiC+pDwaAG5sSaLpiyhBlomxDroEsvdjKQHZZpsYJ7nAuyGTqh0
116+
yN67oHmyaFbJt2d3TxartotKNQPRAWZ4/w2Y5G1KeHG57sO4Z5X7UPD6MBNk1RoC
117+
+74oUwhF1TufKMBn0jYsJZpYXfLk/JkaiCgMj5pmII1F2DEcAiATuToeKwJXLUTS
118+
ftRK0X4QkXXrY2PyySPc+RI6ikS17Pmra4v+P5hCyyP6f+BHUmVBTLlnN05ppZnn
119+
qdgysUwVS2NYHBvt1JUL9CNt0tAjp+CzvXl1mpPsPJEV7dhbZFMi2XBFpefUsD1V
120+
jgufMSmVKpTnfnxfd1Hl2zDR4Qe2DlaNm0O8Q0cnYDPjyAp5f1vaMEIXm2pkejD7
121+
ie2RS2CpWD5vr7HSRMBxyx6xPnHAjUtVcjMTd2SGuIDlfqDz1scluhADY48CAwEA
122+
AQKCAgBIMombRU4IyU2xtnyHQBlnqvYXoQ40cRlp4rJ7eo/HR51kfo5iR3/YUyF3
123+
+RZ0bT5vkZF3x7Z7XoVHNnbUE8UKyLw++uc9xr3os2pVqsBiMK0HEryBExos9rii
124+
xOBCFuhkuNOPG5lWBAyQcGmt99YAesqWzxojPQNKDQ+twpezSYcumC24QWVPoVhF
125+
FTpnoos/2IlO1lkFK340OHCrbeeng0EQiJHxrVclkYlyHaserL3dlJf1NihWnAjG
126+
j8wUMWiipXWwrLy5ToLKtjmSJF4R6zEOINMUoDO440ukHrzIxoNAnyokMeu2mvuo
127+
wJ8Gk7MEpaulTqF6GrTAPnwenhva/3GO3XKfLrbM4SSeN/SXfMRgwI1PVDZuWT+e
128+
Kn15+0c0oP39rWVLo2p60OClNF5Mi1g/NgsWWJJwvCaUinBOwOEBR0N0JTQR/0Vi
129+
anF7i9nq9OGnHQCa8Tt81T851uY2MhF9easnuxxFsJ9eqqhBf3/5GlkVZjgMfNLL
130+
m/tM9o0NFZCDQHppFJ4+BJpEeWqZsBsdKMAHSswXz2zoYZiyQxwWSHUiigTj5VOG
131+
z266UC1M7S09EzijFC9+F8dTbk4HQmHdMyBvNp3PfbfljON0L0MCV20wcb2N9dDJ
132+
HACVvc37rtHDy5fydVkCtmUSNkewRoJYzAKtLWL3yxbCjJSIYQKCAQEA5JVYop+f
133+
SksyM7HrFI5SGVchQpruou71/dJE+HNyqSdo51kUUrxr/9S4sEl8pF/Tk3nj4q4k
134+
OynBLnMYQ1Oc52mMHjM+q3M7ryuJ2cb24JI7H0FUzRmUUDkmai2HhVzonHJfE4i/
135+
RCk+D/xFvfjLs1AM7dWmTHlKHC9nlwU/qLpdz/hrcaNooeyme5JwNaRlE7RXI1o+
136+
I/oeD8lODVk7F4HLkgoGLAposmmqbPd2E4hU8cHqwPKm6d3AGTPugH2V2jCg3pCR
137+
HlrVYGP3Qc4NKJ+TMiDeuRpJhlQYH+DUSgOZZma2Cb1J4SwSbJE5Ub7JqbU2jgzQ
138+
bl7VmUNk1BfrEQKCAQEA1+3bq5QPg+EQtRDq+MFeoquJVW3U3VNvt3K5hJcurom8
139+
SeJHtRaZPiiphOi5QvvOa+mc5ObVGvBPaqk/mJNGxcHjc2lLZdqWXjBBNEQoHDcK
140+
D7Nk8aCZ+LfWlgrJ1L8EN48KxzgKgQQwwpS4mXLnfkB9PoxAyT6jNh9nnPnWzt+D
141+
zYUFOeJEDZI+S79JUzlLK5GQFE/q98jSZQ6V6BTB5eyA9X13a9bGFbmDkUpXWIo4
142+
ua7Purid6Ah/ERhsahpJUgnvcY57n7K9A6gtKeC1K2GOgBhfYQHqoOD7Q1pro1py
143+
WHP5r1eYwPzgxYDsDw2dAYb19C/oKjbmY/c90noknwKCAQEA4ReQKNQ279oMnYte
144+
iud7QSjjv8sBo8DczA37jQ1io+ADFY5KzQ5u64Z2OGKlMtiKaHdnSRli5D/B1BPS
145+
mLoFkHwHVtXvqLXY2C5vmNysz4gwYB7devrtafJdOcGL6nALP8QAjCPk9SIH04YA
146+
x4nwTatOkAYLtNLbf9XOlJC+l1CugNWIOGdJ6eo4JweVJ72zKywzgsSi3Jq4b6M0
147+
EUEFR6iw5iao3UWCw+35vUQSKjneLBNhMI/Cfhm3yRmyiyUgI7QvNfv2a4XXCQxn
148+
t41It/Ar6vkjWfPg4z58Yyfq5NeWf5g1OnIEBpB3tCFt6GmP/GZOSqOjvIv2mu4a
149+
pCDJgQKCAQA5B3RWK6OxZBcCi3ZTvtacxgteicSHtAq0e9NtpnRI2s3lAaOIu3A7
150+
z4d+N+z+OP062Rd8CU9Nbxy6gfru9C7j+iJ1j+C/BO1j8QC3qiyhzxOUNAA8JPul
151+
igBd3nmR++VEOz5QgYecrZunOJpMxOFJIgUyKN7PiACZQdAe0ImgV7464KARuqXY
152+
o8BaRyo5lc85sZdJFhZr3RlcYW7MPfc8H6urqriIvc/RWw7Zp7XMB62VtQreOPZT
153+
mzLcNAQmPc0RotgfuM8DzbRIK/nJrrSKwZheUpGWUGhEl0clcdMt8Kx0miTe35bT
154+
mbZP044FJ8ZI6fk5xhFeXOOakWk9ls7nAoIBAQDe4EpU7o87AQ5QKhAjx7YTzkRy
155+
pOT0wZOHwOJefeTg280QJ5ks+p+ehxFjslphKqNFoa5RIclcfwN5nyBDddHp2Cmr
156+
HScxMHECVSfuZ/0OOnQ4DVdDS+aMHGJUp0dZl1OYXmNwjq6sMNV8s87TIwUB4cbp
157+
eubm4RQcg+sQRxCwyH5FavJZaxD7rYjkIhLD9IwtBzotSr9PThVQwSlWC2ydjCHv
158+
mKiCiGDZM1a9xZtTghN6dEzJ/ZsjSbpLV2mx0XW1+cGbbQhh2G7n4xhhrAxk3Juu
159+
wfjhXoNX5S2Rz4ISZGQZQiAnrwS0e7vgap8bQRL6GbTfQo/hpxMXXpuQIUlT
160+
-----END RSA PRIVATE KEY-----
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
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
51+
-----END RSA PRIVATE KEY-----

0 commit comments

Comments
 (0)