This brings in pem_unittest.cc which belongs in here now with the pem stuff. Change-Id: I04bb16692d31e2aa9de2c146785684c05543b1a7 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/63645 Commit-Queue: Bob Beck <bbe@google.com> Reviewed-by: David Benjamin <davidben@google.com> Commit-Queue: David Benjamin <davidben@google.com> Auto-Submit: Bob Beck <bbe@google.com>chromium-stable
parent
4df6f97cf9
commit
7fb818fbbf
9 changed files with 417 additions and 4 deletions
@ -0,0 +1,205 @@ |
||||
// Copyright 2010 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "pem.h" |
||||
|
||||
#include <gtest/gtest.h> |
||||
|
||||
namespace bssl { |
||||
|
||||
TEST(PEMTokenizerTest, BasicParsing) { |
||||
const char data[] = |
||||
"-----BEGIN EXPECTED-BLOCK-----\n" |
||||
"TWF0Y2hlc0FjY2VwdGVkQmxvY2tUeXBl\n" |
||||
"-----END EXPECTED-BLOCK-----\n"; |
||||
std::string_view string_piece(data); |
||||
std::vector<std::string> accepted_types; |
||||
accepted_types.push_back("EXPECTED-BLOCK"); |
||||
|
||||
PEMTokenizer tokenizer(string_piece, accepted_types); |
||||
EXPECT_TRUE(tokenizer.GetNext()); |
||||
|
||||
EXPECT_EQ("EXPECTED-BLOCK", tokenizer.block_type()); |
||||
EXPECT_EQ("MatchesAcceptedBlockType", tokenizer.data()); |
||||
|
||||
EXPECT_FALSE(tokenizer.GetNext()); |
||||
} |
||||
|
||||
TEST(PEMTokenizerTest, CarriageReturnLineFeeds) { |
||||
const char data[] = |
||||
"-----BEGIN EXPECTED-BLOCK-----\r\n" |
||||
"TWF0Y2hlc0FjY2VwdGVkQmxvY2tUeXBl\r\n" |
||||
"-----END EXPECTED-BLOCK-----\r\n"; |
||||
std::string_view string_piece(data); |
||||
std::vector<std::string> accepted_types; |
||||
accepted_types.push_back("EXPECTED-BLOCK"); |
||||
|
||||
PEMTokenizer tokenizer(string_piece, accepted_types); |
||||
EXPECT_TRUE(tokenizer.GetNext()); |
||||
|
||||
EXPECT_EQ("EXPECTED-BLOCK", tokenizer.block_type()); |
||||
EXPECT_EQ("MatchesAcceptedBlockType", tokenizer.data()); |
||||
|
||||
EXPECT_FALSE(tokenizer.GetNext()); |
||||
} |
||||
|
||||
TEST(PEMTokenizerTest, NoAcceptedBlockTypes) { |
||||
const char data[] = |
||||
"-----BEGIN UNEXPECTED-BLOCK-----\n" |
||||
"SWdub3Jlc1JlamVjdGVkQmxvY2tUeXBl\n" |
||||
"-----END UNEXPECTED-BLOCK-----\n"; |
||||
std::string_view string_piece(data); |
||||
std::vector<std::string> accepted_types; |
||||
accepted_types.push_back("EXPECTED-BLOCK"); |
||||
|
||||
PEMTokenizer tokenizer(string_piece, accepted_types); |
||||
EXPECT_FALSE(tokenizer.GetNext()); |
||||
} |
||||
|
||||
TEST(PEMTokenizerTest, MultipleAcceptedBlockTypes) { |
||||
const char data[] = |
||||
"-----BEGIN BLOCK-ONE-----\n" |
||||
"RW5jb2RlZERhdGFPbmU=\n" |
||||
"-----END BLOCK-ONE-----\n" |
||||
"-----BEGIN BLOCK-TWO-----\n" |
||||
"RW5jb2RlZERhdGFUd28=\n" |
||||
"-----END BLOCK-TWO-----\n"; |
||||
std::string_view string_piece(data); |
||||
std::vector<std::string> accepted_types; |
||||
accepted_types.push_back("BLOCK-ONE"); |
||||
accepted_types.push_back("BLOCK-TWO"); |
||||
|
||||
PEMTokenizer tokenizer(string_piece, accepted_types); |
||||
EXPECT_TRUE(tokenizer.GetNext()); |
||||
|
||||
EXPECT_EQ("BLOCK-ONE", tokenizer.block_type()); |
||||
EXPECT_EQ("EncodedDataOne", tokenizer.data()); |
||||
|
||||
EXPECT_TRUE(tokenizer.GetNext()); |
||||
|
||||
EXPECT_EQ("BLOCK-TWO", tokenizer.block_type()); |
||||
EXPECT_EQ("EncodedDataTwo", tokenizer.data()); |
||||
|
||||
EXPECT_FALSE(tokenizer.GetNext()); |
||||
} |
||||
|
||||
TEST(PEMTokenizerTest, MissingFooter) { |
||||
const char data[] = |
||||
"-----BEGIN MISSING-FOOTER-----\n" |
||||
"RW5jb2RlZERhdGFPbmU=\n" |
||||
"-----END MISSING-FOOTER-----\n" |
||||
"-----BEGIN MISSING-FOOTER-----\n" |
||||
"RW5jb2RlZERhdGFUd28=\n"; |
||||
std::string_view string_piece(data); |
||||
std::vector<std::string> accepted_types; |
||||
accepted_types.push_back("MISSING-FOOTER"); |
||||
|
||||
PEMTokenizer tokenizer(string_piece, accepted_types); |
||||
EXPECT_TRUE(tokenizer.GetNext()); |
||||
|
||||
EXPECT_EQ("MISSING-FOOTER", tokenizer.block_type()); |
||||
EXPECT_EQ("EncodedDataOne", tokenizer.data()); |
||||
|
||||
EXPECT_FALSE(tokenizer.GetNext()); |
||||
} |
||||
|
||||
TEST(PEMTokenizerTest, NestedEncoding) { |
||||
const char data[] = |
||||
"-----BEGIN BLOCK-ONE-----\n" |
||||
"RW5jb2RlZERhdGFPbmU=\n" |
||||
"-----BEGIN BLOCK-TWO-----\n" |
||||
"RW5jb2RlZERhdGFUd28=\n" |
||||
"-----END BLOCK-TWO-----\n" |
||||
"-----END BLOCK-ONE-----\n" |
||||
"-----BEGIN BLOCK-ONE-----\n" |
||||
"RW5jb2RlZERhdGFUaHJlZQ==\n" |
||||
"-----END BLOCK-ONE-----\n"; |
||||
std::string_view string_piece(data); |
||||
std::vector<std::string> accepted_types; |
||||
accepted_types.push_back("BLOCK-ONE"); |
||||
|
||||
PEMTokenizer tokenizer(string_piece, accepted_types); |
||||
EXPECT_TRUE(tokenizer.GetNext()); |
||||
|
||||
EXPECT_EQ("BLOCK-ONE", tokenizer.block_type()); |
||||
EXPECT_EQ("EncodedDataThree", tokenizer.data()); |
||||
|
||||
EXPECT_FALSE(tokenizer.GetNext()); |
||||
} |
||||
|
||||
TEST(PEMTokenizerTest, EmptyAcceptedTypes) { |
||||
const char data[] = |
||||
"-----BEGIN BLOCK-ONE-----\n" |
||||
"RW5jb2RlZERhdGFPbmU=\n" |
||||
"-----END BLOCK-ONE-----\n"; |
||||
std::string_view string_piece(data); |
||||
std::vector<std::string> accepted_types; |
||||
|
||||
PEMTokenizer tokenizer(string_piece, accepted_types); |
||||
EXPECT_FALSE(tokenizer.GetNext()); |
||||
} |
||||
|
||||
TEST(PEMTokenizerTest, BlockWithHeader) { |
||||
const char data[] = |
||||
"-----BEGIN BLOCK-ONE-----\n" |
||||
"Header-One: Data data data\n" |
||||
"Header-Two: \n" |
||||
" continuation\n" |
||||
"Header-Three: Mix-And,Match\n" |
||||
"\n" |
||||
"RW5jb2RlZERhdGFPbmU=\n" |
||||
"-----END BLOCK-ONE-----\n" |
||||
"-----BEGIN BLOCK-ONE-----\n" |
||||
"RW5jb2RlZERhdGFUd28=\n" |
||||
"-----END BLOCK-ONE-----\n"; |
||||
std::string_view string_piece(data); |
||||
std::vector<std::string> accepted_types; |
||||
accepted_types.push_back("BLOCK-ONE"); |
||||
|
||||
PEMTokenizer tokenizer(string_piece, accepted_types); |
||||
EXPECT_TRUE(tokenizer.GetNext()); |
||||
|
||||
EXPECT_EQ("BLOCK-ONE", tokenizer.block_type()); |
||||
EXPECT_EQ("EncodedDataTwo", tokenizer.data()); |
||||
|
||||
EXPECT_FALSE(tokenizer.GetNext()); |
||||
} |
||||
|
||||
TEST(PEMEncodeTest, Basic) { |
||||
EXPECT_EQ( |
||||
"-----BEGIN BLOCK-ONE-----\n" |
||||
"RW5jb2RlZERhdGFPbmU=\n" |
||||
"-----END BLOCK-ONE-----\n", |
||||
PEMEncode("EncodedDataOne", "BLOCK-ONE")); |
||||
EXPECT_EQ( |
||||
"-----BEGIN BLOCK-TWO-----\n" |
||||
"RW5jb2RlZERhdGFUd28=\n" |
||||
"-----END BLOCK-TWO-----\n", |
||||
PEMEncode("EncodedDataTwo", "BLOCK-TWO")); |
||||
} |
||||
|
||||
TEST(PEMEncodeTest, Empty) { |
||||
EXPECT_EQ( |
||||
"-----BEGIN EMPTY-----\n" |
||||
"-----END EMPTY-----\n", |
||||
PEMEncode("", "EMPTY")); |
||||
} |
||||
|
||||
TEST(PEMEncodeTest, Wrapping) { |
||||
EXPECT_EQ( |
||||
"-----BEGIN SINGLE LINE-----\n" |
||||
"MTIzNDU2Nzg5MGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktM\n" |
||||
"-----END SINGLE LINE-----\n", |
||||
PEMEncode("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL", |
||||
"SINGLE LINE")); |
||||
|
||||
EXPECT_EQ( |
||||
"-----BEGIN WRAPPED LINE-----\n" |
||||
"MTIzNDU2Nzg5MGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktM\nTQ==\n" |
||||
"-----END WRAPPED LINE-----\n", |
||||
PEMEncode("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLM", |
||||
"WRAPPED LINE")); |
||||
} |
||||
|
||||
} // namespace net
|
@ -0,0 +1,159 @@ |
||||
Certificate: |
||||
Data: |
||||
Version: 3 (0x2) |
||||
Serial Number: 1 (0x1) |
||||
Signature Algorithm: sha256WithRSAEncryption |
||||
Issuer: CN=Test Intermediate CA |
||||
Validity |
||||
Not Before: Jun 1 11:27:00 2023 GMT |
||||
Not After : May 29 11:27:00 2033 GMT |
||||
Subject: CN=localhost |
||||
Subject Public Key Info: |
||||
Public Key Algorithm: rsaEncryption |
||||
Public-Key: (2048 bit) |
||||
Modulus: |
||||
00:f2:5e:81:dd:8a:91:07:17:5e:dc:89:e0:56:36: |
||||
2d:5f:80:01:13:a6:64:48:04:79:3c:5e:08:23:75: |
||||
bd:12:f9:d4:00:fb:47:7b:25:11:21:12:0b:05:25: |
||||
6e:9e:04:b9:70:dc:5d:be:c3:59:a9:55:ff:3c:d4: |
||||
95:b0:77:39:d0:31:0b:b4:c9:a4:c9:53:30:21:e8: |
||||
58:f0:70:1c:fd:26:07:24:0d:ae:c9:0e:73:99:3e: |
||||
e8:cb:cb:54:90:ae:49:90:90:89:c1:d3:82:23:d7: |
||||
b5:dd:2b:0a:77:d0:10:c7:6f:71:b9:1c:d4:0b:39: |
||||
f7:8d:ca:46:94:d4:cb:93:35:28:9d:36:90:cf:a8: |
||||
ac:e5:70:e8:66:16:7b:5a:8b:9f:c4:e8:d0:e2:de: |
||||
87:7b:6f:fa:0d:81:90:e2:13:34:a5:bb:58:72:1d: |
||||
f1:51:1c:9d:4c:55:50:e5:98:21:bf:a9:b3:8b:fc: |
||||
e8:74:30:32:f8:81:6c:b0:b0:f4:0b:16:94:d8:af: |
||||
18:aa:03:09:a4:77:2f:ed:d9:d9:dd:b3:84:1f:a6: |
||||
59:f7:ba:a7:16:b2:38:e2:f4:c7:bc:16:e6:98:46: |
||||
82:d1:ce:f6:45:b9:0c:b9:f1:98:9d:92:36:33:cc: |
||||
3f:08:80:02:25:9a:a7:8b:ca:2e:ab:8e:7f:44:5e: |
||||
be:9b |
||||
Exponent: 65537 (0x10001) |
||||
X509v3 extensions: |
||||
X509v3 Basic Constraints: critical |
||||
CA:FALSE |
||||
X509v3 Extended Key Usage: |
||||
TLS Web Server Authentication, TLS Web Client Authentication |
||||
X509v3 Subject Alternative Name: |
||||
DNS:localhost |
||||
X509v3 Subject Key Identifier: |
||||
F8:F0:38:9F:09:35:40:22:F7:E3:30:D8:FC:E5:A8:5C:1F:8C:D1:8C |
||||
X509v3 Authority Key Identifier: |
||||
19:A2:E3:C8:BC:6D:CA:84:54:09:B3:67:4D:3E:60:CF:C4:78:38:95 |
||||
Signature Algorithm: sha256WithRSAEncryption |
||||
Signature Value: |
||||
43:58:ea:e3:50:da:d4:50:9a:3e:d7:0a:82:c2:1c:ca:f8:05: |
||||
4d:4a:96:bf:6e:ab:0a:0a:ae:d3:4e:c4:ce:73:73:ec:c5:45: |
||||
d2:9b:9f:4c:cd:32:f9:27:a7:6f:59:bf:66:e9:78:b5:6b:10: |
||||
6a:e8:44:51:dc:f7:31:68:36:a8:d3:59:bc:90:94:48:d5:f5: |
||||
30:67:7e:bf:22:58:ca:0c:0a:79:6d:94:d6:9f:70:68:e4:24: |
||||
68:49:16:ea:d7:f9:1b:35:dc:93:49:56:d1:c1:1d:31:a5:c4: |
||||
34:c7:88:e8:20:0f:de:ea:b5:0a:6d:da:10:df:5a:db:ca:e5: |
||||
7d:1c:99:eb:f5:26:bf:cd:dd:67:31:8b:15:63:ea:90:68:fa: |
||||
83:81:48:e2:b9:94:02:c2:61:74:71:06:fe:e8:97:e0:f0:d2: |
||||
da:79:06:14:a2:44:94:93:32:f6:00:7d:28:ef:21:89:2e:2b: |
||||
69:45:cb:ae:a6:64:46:ae:db:36:d2:a3:fe:ed:8c:65:c0:c9: |
||||
51:42:73:df:21:2e:2d:51:35:c3:e8:54:76:5b:4e:0f:39:9d: |
||||
9f:f4:6e:9f:af:8c:9e:de:60:b2:e7:5d:5c:61:12:f3:4b:4b: |
||||
2e:08:ec:cc:20:90:00:36:f3:c4:14:b3:43:a2:f9:19:33:e5: |
||||
c3:01:56:9b |
||||
-----BEGIN CERTIFICATE----- |
||||
MIIDNTCCAh2gAwIBAgIBATANBgkqhkiG9w0BAQsFADAfMR0wGwYDVQQDDBRUZXN0 |
||||
IEludGVybWVkaWF0ZSBDQTAeFw0yMzA2MDExMTI3MDBaFw0zMzA1MjkxMTI3MDBa |
||||
MBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC |
||||
AQoCggEBAPJegd2KkQcXXtyJ4FY2LV+AAROmZEgEeTxeCCN1vRL51AD7R3slESES |
||||
CwUlbp4EuXDcXb7DWalV/zzUlbB3OdAxC7TJpMlTMCHoWPBwHP0mByQNrskOc5k+ |
||||
6MvLVJCuSZCQicHTgiPXtd0rCnfQEMdvcbkc1As5943KRpTUy5M1KJ02kM+orOVw |
||||
6GYWe1qLn8To0OLeh3tv+g2BkOITNKW7WHId8VEcnUxVUOWYIb+ps4v86HQwMviB |
||||
bLCw9AsWlNivGKoDCaR3L+3Z2d2zhB+mWfe6pxayOOL0x7wW5phGgtHO9kW5DLnx |
||||
mJ2SNjPMPwiAAiWap4vKLquOf0RevpsCAwEAAaOBhjCBgzAMBgNVHRMBAf8EAjAA |
||||
MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAUBgNVHREEDTALgglsb2Nh |
||||
bGhvc3QwHQYDVR0OBBYEFPjwOJ8JNUAi9+Mw2PzlqFwfjNGMMB8GA1UdIwQYMBaA |
||||
FBmi48i8bcqEVAmzZ00+YM/EeDiVMA0GCSqGSIb3DQEBCwUAA4IBAQBDWOrjUNrU |
||||
UJo+1wqCwhzK+AVNSpa/bqsKCq7TTsTOc3PsxUXSm59MzTL5J6dvWb9m6Xi1axBq |
||||
6ERR3PcxaDao01m8kJRI1fUwZ36/IljKDAp5bZTWn3Bo5CRoSRbq1/kbNdyTSVbR |
||||
wR0xpcQ0x4joIA/e6rUKbdoQ31rbyuV9HJnr9Sa/zd1nMYsVY+qQaPqDgUjiuZQC |
||||
wmF0cQb+6Jfg8NLaeQYUokSUkzL2AH0o7yGJLitpRcuupmRGrts20qP+7YxlwMlR |
||||
QnPfIS4tUTXD6FR2W04POZ2f9G6fr4ye3mCy511cYRLzS0suCOzMIJAANvPEFLND |
||||
ovkZM+XDAVab |
||||
-----END CERTIFICATE----- |
||||
Certificate: |
||||
Data: |
||||
Version: 3 (0x2) |
||||
Serial Number: 1 (0x1) |
||||
Signature Algorithm: sha256WithRSAEncryption |
||||
Issuer: CN=Test Root CA |
||||
Validity |
||||
Not Before: Jun 1 11:27:00 2023 GMT |
||||
Not After : May 29 11:27:00 2033 GMT |
||||
Subject: CN=Test Intermediate CA |
||||
Subject Public Key Info: |
||||
Public Key Algorithm: rsaEncryption |
||||
Public-Key: (2048 bit) |
||||
Modulus: |
||||
00:b7:e9:bb:fb:dd:c9:fc:be:5c:a7:8a:ed:d0:c6: |
||||
f8:89:33:d8:a7:81:db:85:43:dd:ba:46:7e:2a:44: |
||||
76:58:81:f9:1d:e7:02:1c:11:8e:13:2c:51:c9:36: |
||||
4b:a9:8f:d2:a7:d0:2d:0a:6e:16:33:08:a5:37:6e: |
||||
75:56:12:70:6d:51:0e:83:a6:4c:91:b9:74:50:73: |
||||
c6:3a:bf:82:0d:8a:f2:df:9c:dd:a4:ea:42:3e:eb: |
||||
04:4a:22:44:d0:1b:2a:0d:d6:18:f6:b1:95:73:8f: |
||||
f8:e5:c4:56:ff:5c:32:6a:5a:ec:42:93:79:18:a9: |
||||
09:87:ff:40:d3:90:58:5b:9c:fa:5b:d5:46:b3:17: |
||||
7c:e2:6f:9c:26:d1:18:18:0d:5a:3e:7f:7f:70:ca: |
||||
ee:f5:e3:b7:8c:9c:b7:9d:72:ad:cb:1b:42:3f:21: |
||||
98:29:0f:9e:83:db:e0:54:4c:24:54:fc:84:b8:53: |
||||
92:ed:26:d6:4a:f6:10:c5:7e:1c:5c:dc:3b:b2:eb: |
||||
90:4c:a6:93:91:75:9c:b3:91:95:d2:6d:7c:97:3f: |
||||
69:fc:16:86:9e:c9:30:f2:85:64:a1:88:7b:c0:d3: |
||||
28:67:c1:e6:51:84:00:5b:ed:12:e5:5a:8f:4a:14: |
||||
22:39:0f:1b:76:5f:3f:87:91:55:d9:39:91:50:41: |
||||
98:2d |
||||
Exponent: 65537 (0x10001) |
||||
X509v3 extensions: |
||||
X509v3 Basic Constraints: critical |
||||
CA:TRUE |
||||
X509v3 Key Usage: critical |
||||
Certificate Sign, CRL Sign |
||||
X509v3 Subject Key Identifier: |
||||
19:A2:E3:C8:BC:6D:CA:84:54:09:B3:67:4D:3E:60:CF:C4:78:38:95 |
||||
X509v3 Authority Key Identifier: |
||||
55:D5:CD:87:69:64:E7:5F:FA:84:C9:B3:D1:9F:8E:A4:87:BC:F9:FD |
||||
Signature Algorithm: sha256WithRSAEncryption |
||||
Signature Value: |
||||
95:78:6d:c2:94:1d:1d:55:7f:91:01:57:a8:d6:9c:28:c2:13: |
||||
26:b7:25:67:f3:ea:28:be:99:e8:fb:9b:12:f1:90:86:a8:c9: |
||||
b3:db:14:10:d8:cf:67:75:cc:f9:5e:e8:a0:f8:0e:dc:fe:de: |
||||
78:13:63:b3:66:a5:a6:0e:2b:9b:8c:54:13:f0:14:de:26:55: |
||||
38:73:cf:6a:37:10:dd:3c:07:5a:c3:6f:cd:c4:96:ee:bf:8c: |
||||
35:bf:c6:9c:97:21:98:e0:5e:94:61:0d:3d:5c:f0:83:ce:29: |
||||
c0:2b:bf:b9:87:b8:c2:d1:b1:60:72:9a:ff:e6:8b:6b:89:e7: |
||||
db:2d:56:d8:a6:08:9c:6c:48:23:a4:da:d5:d7:17:b0:ef:4e: |
||||
ea:c2:df:ce:aa:dc:d7:12:4b:93:88:e5:d3:81:b7:8c:98:03: |
||||
51:2c:11:6b:23:07:5c:60:07:df:93:30:53:d6:6d:a8:cc:dd: |
||||
ad:00:4b:e8:80:1b:71:1f:6c:51:32:01:f9:f5:f2:91:8e:b3: |
||||
d4:13:26:b0:e3:6c:fa:64:b0:94:af:e7:12:b5:b9:7a:4c:20: |
||||
67:6e:bb:e7:c5:73:97:39:fe:1e:c9:0e:17:33:45:5b:90:f0: |
||||
da:6d:a8:49:cf:29:de:0a:cb:ac:0c:d0:59:0a:a5:d1:c8:0e: |
||||
19:96:2d:63 |
||||
-----BEGIN CERTIFICATE----- |
||||
MIIDFDCCAfygAwIBAgIBATANBgkqhkiG9w0BAQsFADAXMRUwEwYDVQQDDAxUZXN0 |
||||
IFJvb3QgQ0EwHhcNMjMwNjAxMTEyNzAwWhcNMzMwNTI5MTEyNzAwWjAfMR0wGwYD |
||||
VQQDDBRUZXN0IEludGVybWVkaWF0ZSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP |
||||
ADCCAQoCggEBALfpu/vdyfy+XKeK7dDG+Ikz2KeB24VD3bpGfipEdliB+R3nAhwR |
||||
jhMsUck2S6mP0qfQLQpuFjMIpTdudVYScG1RDoOmTJG5dFBzxjq/gg2K8t+c3aTq |
||||
Qj7rBEoiRNAbKg3WGPaxlXOP+OXEVv9cMmpa7EKTeRipCYf/QNOQWFuc+lvVRrMX |
||||
fOJvnCbRGBgNWj5/f3DK7vXjt4yct51yrcsbQj8hmCkPnoPb4FRMJFT8hLhTku0m |
||||
1kr2EMV+HFzcO7LrkEymk5F1nLORldJtfJc/afwWhp7JMPKFZKGIe8DTKGfB5lGE |
||||
AFvtEuVaj0oUIjkPG3ZfP4eRVdk5kVBBmC0CAwEAAaNjMGEwDwYDVR0TAQH/BAUw |
||||
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBmi48i8bcqEVAmzZ00+YM/E |
||||
eDiVMB8GA1UdIwQYMBaAFFXVzYdpZOdf+oTJs9GfjqSHvPn9MA0GCSqGSIb3DQEB |
||||
CwUAA4IBAQCVeG3ClB0dVX+RAVeo1pwowhMmtyVn8+oovpno+5sS8ZCGqMmz2xQQ |
||||
2M9ndcz5Xuig+A7c/t54E2OzZqWmDiubjFQT8BTeJlU4c89qNxDdPAdaw2/NxJbu |
||||
v4w1v8aclyGY4F6UYQ09XPCDzinAK7+5h7jC0bFgcpr/5otriefbLVbYpgicbEgj |
||||
pNrV1xew707qwt/OqtzXEkuTiOXTgbeMmANRLBFrIwdcYAffkzBT1m2ozN2tAEvo |
||||
gBtxH2xRMgH59fKRjrPUEyaw42z6ZLCUr+cStbl6TCBnbrvnxXOXOf4eyQ4XM0Vb |
||||
kPDabahJzyneCsusDNBZCqXRyA4Zli1j |
||||
-----END CERTIFICATE----- |
Binary file not shown.
@ -0,0 +1,28 @@ |
||||
-----BEGIN PRIVATE KEY----- |
||||
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDyXoHdipEHF17c |
||||
ieBWNi1fgAETpmRIBHk8Xggjdb0S+dQA+0d7JREhEgsFJW6eBLlw3F2+w1mpVf88 |
||||
1JWwdznQMQu0yaTJUzAh6FjwcBz9JgckDa7JDnOZPujLy1SQrkmQkInB04Ij17Xd |
||||
Kwp30BDHb3G5HNQLOfeNykaU1MuTNSidNpDPqKzlcOhmFntai5/E6NDi3od7b/oN |
||||
gZDiEzSlu1hyHfFRHJ1MVVDlmCG/qbOL/Oh0MDL4gWywsPQLFpTYrxiqAwmkdy/t |
||||
2dnds4Qfpln3uqcWsjji9Me8FuaYRoLRzvZFuQy58ZidkjYzzD8IgAIlmqeLyi6r |
||||
jn9EXr6bAgMBAAECggEAYptnu6I+KgPsoM5pmrm1ERcrmPqH7zL+vjxFlGO5FqjV |
||||
A8c4CFaG1w0XtbLKg/jJF61YaJ3i8z2dN/sHocGIIHdr21R0ukIhoZH96Wi7qpTX |
||||
r+fvNjauemk5XnytvaVjIbFkkprCZmHDSKXTvvZEdVeWjak4bg7Z9HKY78F5x7w8 |
||||
x4aChtcWo6bsB8N2oQxsGYHew9v7KKNUiuqXMnvBSSnH/GOCwsYzlLfFCjhOdOrT |
||||
7/J3VhtcP/7zMCARUosteOyjK8Mr8mt9KNNRjs1b0A1JU6yPdqsmkjEaYeeW/7K8 |
||||
SkxEzXwBJ9iBKPpVsAix25JCBxBpfDg7GYu0XGpcyQKBgQD5GMU8E6T5HOtB053C |
||||
FR9ooMPLtKzCCW52nGZnXn4KfMTppGyl6uKmxj5adUVIOkzWwadGBSUDmj3BEW6F |
||||
Tch/TbaPS2Mcsn7Vs9v9ZgzB4zJ2R0x0LJkkSncGy36uAQkdn/w7DyNru9Y7AelI |
||||
fS2VM4SQDgNE2YVmOhbz9vcfeQKBgQD5FgHymkUogvr9P90JluNNPSfnG4NWa+Fn |
||||
zq/oH+2X6VNcX1n69olmP4v4IirCKMMGWKS+xBplBVFExiMJj8RNhrAMDTzDUsip |
||||
rrtsJHo/KsL63xuEcLlcDb0Z7YvolOs9CtZQ/RNUmQeD5wE/dDR8RaGbWtGxWjli |
||||
I/MBkDFlswKBgQDaWQsy4SlgMChMGFoV8XwJs7pNSr+QisHoeKoO/DZRrRLSlw2h |
||||
1qX8eJPZqSgk6u3F5hRhfUr3wHFXVpdhhFA2vwFC1Fs5oYEqhDFXCugt4KCwK0lq |
||||
IFnRBPEW5LPThRbfgAiSIG/1FL7yFHfP0eJuAa22tIHLDT0w4cSS762pSQKBgQDC |
||||
vWgManyDbdQZR2Li6msPqi6WSzZlzLZP2JJC4yN4z1zzLUFGKpXFsQ0XlG7lmcTQ |
||||
I2G6G8ufC4c8Q8SE5zfMfO8KnRbShtiHgSrbI7HHzQDf7qqu4wqoY71ilgv6bON1 |
||||
uBFTBGmmjHYJtAOPvqSCPFZbBahIBogyqHSG1lsobQKBgQDTHrF6X0VDkR8V6rZg |
||||
fhxFcOf9zkZEKOFP2aWQ0s3s5N/QEeaIiWLCJu8yLxCe15WzaHSl0iR/piwplRhC |
||||
nqPufl86Yn6ztL1nI7Y9O/sCc0HBzAAntLW/L+ZCeqm28BWHCuMGySc/fUVUV04w |
||||
lUGD7/W2H+/yr/TZOqXZY1ZVHw== |
||||
-----END PRIVATE KEY----- |
@ -0,0 +1,19 @@ |
||||
-----BEGIN CERTIFICATE----- |
||||
MIIC/jCCAeagAwIBAgIUXOi6XoxnMUjJg4jeOwRhsdqEqEQwDQYJKoZIhvcNAQEL |
||||
BQAwFzEVMBMGA1UEAwwMVGVzdCBSb290IENBMB4XDTIzMDYwMTExMjcwMFoXDTMz |
||||
MDUyOTExMjcwMFowFzEVMBMGA1UEAwwMVGVzdCBSb290IENBMIIBIjANBgkqhkiG |
||||
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl9xCMPMIvfmJWz25AG/VtgWbqNs67HXQbXWf |
||||
pDF2wjQpHVOYbfl7Zgly5O+5es1aUbJaGyZ9G6xuYSXKFnnYLoP7M86O05fQQBAj |
||||
K+IE5nO6136ksCAfxCFTFfn4vhPvK8Vba5rqox4WeIXYKvHYSoiHz0ELrnFOHcyN |
||||
Innyze7bLtkMCA1ShHpmvDCR+U3Uj6JwOfoirn29jjU/48/ORha7dcJYtYXk2eGo |
||||
RJfrtIx20tXAaKaGnXOCGYbEVXTeQkQPqKFVzqP7+KYS/Y8eNFV35ugpLNES+44T |
||||
bQ2QruTZdrNRjJkEoyiB/E53a0OUltB/R7Z0L0xstnKfsAf3OwIDAQABo0IwQDAP |
||||
BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUVdXNh2lk |
||||
51/6hMmz0Z+OpIe8+f0wDQYJKoZIhvcNAQELBQADggEBADNg7G8n6DUrQ5doXzm9 |
||||
kOp5siX6iPs0zFReXKhIT1Gef63l3tb7AdPedF03aj9XkUt0shhNOGG5SK2k5KBQ |
||||
MJc9muYRCAyo2xMr3rFUQdI5B51SCy5HeAMralgTHXN0Hv+TH04YfRrACVmr+5ke |
||||
pH3bF1gYaT+Zy5/pHJnV5lcwS6/H44g9XXWIopjWCwbfzKxIuWofqL4fiToPSIYu |
||||
MCUI4bKZipcJT5O6rdz/S9lbgYVjOJ4HAoT2icNQqNMMfULKevmF8SdJzfNd35yn |
||||
tAKTROhIE2aQRVCclrjo/T3eyjWGGoJlGmxKbeCf/rXzcn1BRtk/UzLnbUFFlg5l |
||||
axw= |
||||
-----END CERTIFICATE----- |
Loading…
Reference in new issue