Skip to content

Commit aa39e39

Browse files
committed
Add x509_import_spki() to timing.c
Signed-off-by: Steffen Jaeckel <[email protected]>
1 parent 7703c52 commit aa39e39

File tree

3 files changed

+223
-0
lines changed

3 files changed

+223
-0
lines changed

demos/timing.c

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,10 @@ static ulong64 t_read(void)
123123

124124
static void init_timer(void)
125125
{
126+
#if defined(LTC_NO_ASM)
127+
skew = 0;
128+
fprintf(stderr, "LTC_NO_ASM\nClock Skew: %lu\n", (unsigned long)skew);
129+
#else
126130
ulong64 c1, c2, t1, t2;
127131
unsigned long y1;
128132

@@ -137,6 +141,7 @@ static void init_timer(void)
137141
}
138142
skew = c2 - c1;
139143
fprintf(stderr, "Clock Skew: %lu\n", (unsigned long)skew);
144+
#endif
140145
}
141146

142147
static void time_keysched(void)
@@ -1360,6 +1365,56 @@ static void time_encmacs(void)
13601365
time_encmacs_(32);
13611366
}
13621367

1368+
static void time_x509_import_spki(const char *pem)
1369+
{
1370+
const ltc_x509_certificate *cert;
1371+
FILE *f;
1372+
int err, y, n;
1373+
ltc_pka_key k[8] = {0};
1374+
ulong64 t1, t2;
1375+
f = fopen(pem, "r");
1376+
if ((err = x509_import_pem_filehandle(f, &cert)) != CRYPT_OK) {
1377+
fprintf(stderr, "\nx509_import_pem_filehandle() error... %s\n", error_to_string(err));
1378+
exit(EXIT_FAILURE);
1379+
}
1380+
if ((err = x509_import_spki(cert->asn1->data, cert->asn1->size, k, NULL)) != CRYPT_OK) {
1381+
fprintf(stderr, "\nx509_import_spki() error... %s\n", error_to_string(err));
1382+
exit(EXIT_FAILURE);
1383+
}
1384+
pka_key_free(k);
1385+
#define DO1 x509_import_spki(cert->asn1->data, cert->asn1->size, &k[n++], NULL);
1386+
#define DO2 DO1 DO1
1387+
#define DO4 DO2 DO2
1388+
#define DO8 DO4 DO4
1389+
t2 = -1;
1390+
for (y = 0; y < 1000; y++) {
1391+
n = 0;
1392+
t_start();
1393+
t1 = t_read();
1394+
DO8;
1395+
t1 = (t_read() - t1)>>1;
1396+
if (t1 < t2) t2 = t1;
1397+
for (n = LTC_ARRAY_SIZE(k); n --> 0;) {
1398+
pka_key_free(&k[n]);
1399+
}
1400+
}
1401+
fprintf(stderr, "x509 %-20s: %9"PRI64"u cycles\n", strrchr(pem, '/') + 1, t2/LTC_ARRAY_SIZE(k));
1402+
x509_free(&cert);
1403+
fclose(f);
1404+
}
1405+
1406+
static void time_x509(void)
1407+
{
1408+
time_x509_import_spki("tests/x509/gnutls/cert-rsa-pss.pem");
1409+
time_x509_import_spki("tests/x509/LTC_CA.pem");
1410+
time_x509_import_spki("tests/x509/LTC_S0.pem");
1411+
time_x509_import_spki("tests/x509/LTC_SS0.pem");
1412+
time_x509_import_spki("tests/x509/secp384r1.pem");
1413+
time_x509_import_spki("tests/x509/secp521r1.pem");
1414+
time_x509_import_spki("tests/x509/invalid/LTC_SSS0.pem");
1415+
time_x509_import_spki("tests/x509/invalid/secp224r1.pem");
1416+
}
1417+
13631418
static void LTC_NORETURN die(int status)
13641419
{
13651420
FILE* o = status == EXIT_SUCCESS ? stdout : stderr;
@@ -1399,6 +1454,7 @@ const struct
13991454
LTC_TEST_FN(dsa),
14001455
LTC_TEST_FN(ecc),
14011456
LTC_TEST_FN(dh),
1457+
LTC_TEST_FN(x509),
14021458
};
14031459
char *single_test = NULL;
14041460
unsigned int i;

tests/x509/invalid/LTC_SSS0.pem

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIC6TCCAdGgAwIBAgIIWKbGS7FFfFEwDQYJKoZIhvcNAQELBQAwKDEUMBIGA1UE
3+
ChMLTGliVG9tQ3J5cHQxEDAOBgNVBAMTB0xUQyBTUzAwIBcNMjUwOTAzMDgyNjAw
4+
WhgPMzAyNTA5MDMwODI2MDBaMCkxFDASBgNVBAoTC0xpYlRvbUNyeXB0MREwDwYD
5+
VQQDEwhMVEMgU1NTMDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV1mgbza
6+
UGhF3rnjDRJhMoPpcvWbfuM8wE3SjRU+kVv4HnMFzKa7rpOCL/9wUYotKUymdpDg
7+
5XD5tCcwbrZqBSs8BuBYEcfPCgkI+NBzXffiDY1Z60kwa5NIvByPcePxRE4bE8De
8+
zJGKyS06llz8j6dQUoMcMinS4cqhpaof1TcCAwEAAaOBlzCBlDASBgNVHRMBAf8E
9+
CDAGAQH/AgEAMB0GA1UdDgQWBBQPcAyfJAWr3MNiCVYNhkj//bs9fDAfBgNVHSME
10+
GDAWgBTY1GXwayUXgPCc4HQiKu4XXayoSjALBgNVHQ8EBAMCAQYwEQYJYIZIAYb4
11+
QgEBBAQDAgAHMB4GCWCGSAGG+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwDQYJKoZI
12+
hvcNAQELBQADggEBAKZDiqriGnJVwVu2zdZnjTySLtXEGlUd4A8hT3rZ1EgP3rQ0
13+
4j4zhATb1fH++2XdHX6IMDtdduWSjKxTF6rmPfDl0znbg3mnbUC2nP6Nw3UsD1DC
14+
/k1cI0a9S1ocXCJsPIp89lBXuGWUwk5Ml7B/BKNhqOCJqD8CFpejAXovMhpwJ8zk
15+
2U542RVW+qXUJE36KCzwrxldqU9zuqSCdllJ53oSnt4YQ7ODuUVCTm7gObaU71Uu
16+
qO3hNalAYNckKi9qrUNdH4dir2zGUkHw41hDcQ/Qd7kNvIo8e/OLJPtWpYUO0gOS
17+
L4s9V2ZO9BhQJM2KW67Xz/O8byg9CgyXR4LgJ58=
18+
-----END CERTIFICATE-----
19+
-----BEGIN CERTIFICATE-----
20+
MIIEazCCAlOgAwIBAgIIaxPLdClfRLwwDQYJKoZIhvcNAQELBQAwJzEUMBIGA1UE
21+
ChMLTGliVG9tQ3J5cHQxDzANBgNVBAMTBkxUQyBTMDAgFw0yNTA5MDMwODIyMDBa
22+
GA81MDI1MDkwMzA4MjIwMFowKDEUMBIGA1UEChMLTGliVG9tQ3J5cHQxEDAOBgNV
23+
BAMTB0xUQyBTUzAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC0lSWq
24+
0cFHUL5qqkKvFm453nLj/1dPyxsQ2sM2bjUarj25jhHg/C93e+GDaD/uXJR4I87c
25+
hUHzoHusC3glfqVFQCtIP2M8jOD57zpdegueElWoCdsj7JnETekVSZ/jdAq0PNKP
26+
jiMxcF5sa3i2UaN1ab+cjs2HLur458xqc27H/+NVeTA6NOI11MqkQc+ScaIC1gV2
27+
jlhWmik88bxprBbhm/YrUdi/cmGfL34borcNx31k4Q3tDBxuLz4lohacdpRcLdCC
28+
i4GS70Mciy9nwt+/juLKT9uLLtyluaG970nMO2pqTTpwhrGLNdM08Q6gddNA+FhO
29+
Tv818DyMloJ+FIXZAgMBAAGjgZcwgZQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNV
30+
HQ4EFgQU2NRl8GslF4DwnOB0IiruF12sqEowHwYDVR0jBBgwFoAUQTExVrNGN1Pl
31+
W+wOR+8j6k6N5hAwCwYDVR0PBAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAeBglg
32+
hkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMA0GCSqGSIb3DQEBCwUAA4ICAQAt
33+
y+dHcKWYp+MNt3r3aFO1toi9VJ4L9ySwntV0PHbvONLgFEp8zoTzKOC+OkdcbLU+
34+
J9mgpQ1JxwFmYaZATPTDvCi7/bfCekjDdPsyeXRdUcMhq8wu3K0P40xF1R1j7WWR
35+
ZqdtMlvD1k2LJSU6Bwt6uROZA2kGVx+TpVb3KttMoqRzjz2KNdyx/kXTdKFmL9Ip
36+
3icyhLXPEiT5o8wdgRDOwuQwWWxEKaXl0IvAJykG8dBXEDcF4mcmFcp9my9dudRX
37+
NBI7n0t1/ItA6mQ7hOL1Xflgqo4kmm5/oZzQcYLTapW0LGSC39rPvNTY5Sf6P7TN
38+
KYgTUgW6WaUgobZjpwuQxgcrohjdXcx03745g2e9eY5eJTRVlbDlLmwdxg7a/joO
39+
2PXpUg79FixMdmt8LARrLbDEVlfB5N5HilB+3J7riWU33nZRymE8w7AR/HMIV+9i
40+
T9Ue0+6lAL+Mz9zLTviQfdz5xOqo0ngEeWTs8HOpjiwdGkB5uUEkwhhnXZJlNICN
41+
ebo7IG0OpfPKhO82i2xFA6uZzJvTv+3G1ih/LwL+MzJVfLxnuuL7DBbv7d9lB4cO
42+
ooMOOZMH9okthuKLk20a0VdmPAQ9xF8KhIgutajEXAGWhayXoGugMNRjWrJm6lUX
43+
d8kK4AEM2eDZWo11GxAdU1XqIOWCLdV95eWfkZo7gg==
44+
-----END CERTIFICATE-----
45+
-----BEGIN CERTIFICATE-----
46+
MIIDrTCCA1+gAwIBAgIIdmUTeeSNp0gwBQYDK2VwMCcxFDASBgNVBAoTC0xpYlRv
47+
bUNyeXB0MQ8wDQYDVQQDEwZMVEMgUjAwIBcNMjUwOTAzMDgxODAwWhgPNjAyNTA5
48+
MDMwODE4MDBaMCcxFDASBgNVBAoTC0xpYlRvbUNyeXB0MQ8wDQYDVQQDEwZMVEMg
49+
UzAwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCMlz0PIJA6I543Z/Ij
50+
WOVyC/0+9/tPuVqviIWNDn9nO1FSyt8yCeq9JkHzuRrRmUTwAdc1r7MqFDy4bJdp
51+
l13clraYPRSKiRkOzvaoluatfBYfgVRuhCshE6yDlMjdBCo3ZMBL4Sh6CUtmLUuI
52+
r5Wc4+/Voh6V49vMBnRlt2XAdZIWU6Se3l7ii51GTMU6PJmif5qvOfRQxyp5XOkK
53+
OlgE0CwnvNMb6LwqsqyMdsabo5Y/+fewer2XUf/1bt9Q93mMDN5r/Usjz9d4jFsW
54+
LEcbDlVQ2CM7jexULQmHmIHMaTrWgnbGMBy4vKXgAr3l0VvFxez7C/ldCv/PNKSO
55+
FvqBWeJb/QRP9HuZ2KcrjPZm/QiegWmkKXuUVbSZ5mZH1g5QKSGcTjIGH2c6Uxar
56+
i2TGVnYpf+YZjghK9IOx2cwc76r2f3fp4fBNgUGUHmoId5M3DNYL1b+bPtarcsCF
57+
z6tiKRk1bLRmSF2dwzm0jO0S3Lp4pNzXWbGNuVIkXh30wTZe0/UQmvR8uHjRbgVy
58+
l7gHMBWTaFvFZwXCjidxzK6QeB2Xbja5SNfvRCHI/K9LB1TTrPV1cAZYtzqaO5qF
59+
ezQneNKRLmFyPAZimQE09BPV+JmK+UzOOUZ3SJeCKSXAPBJzo0t8RWTtpPBgVwJM
60+
r/K2ll68CVk+VeHOoG6XbN01BQIDAQABo4GsMIGpMBIGA1UdEwEB/wQIMAYBAf8C
61+
AQEwHQYDVR0OBBYEFEExMVazRjdT5VvsDkfvI+pOjeYQMB8GA1UdIwQYMBaAFEPt
62+
p67ZZHVM+Fh0tz8llxbMdDp5MAsGA1UdDwQEAwIBBjATBgNVHSUEDDAKBggrBgEF
63+
BQcDAjARBglghkgBhvhCAQEEBAMCAAcwHgYJYIZIAYb4QgENBBEWD3hjYSBjZXJ0
64+
aWZpY2F0ZTAFBgMrZXADQQCzEr3m4hDVAkPAtDgh76cRLxFw987XGN0mfT0ZDurK
65+
SF0S51g6g/v7rrHHiCxALLf6s70TihkLPVDeaIL9ik4M
66+
-----END CERTIFICATE-----
67+
-----BEGIN CERTIFICATE-----
68+
MIIBezCCAS2gAwIBAgIIb2eiAYNfDJswBQYDK2VwMCcxFDASBgNVBAoTC0xpYlRv
69+
bUNyeXB0MQ8wDQYDVQQDEwZMVEMgUjAwIBcNMjUwOTAzMDgxNDAwWhgPNzAyNTA5
70+
MDMwODE0MDBaMCcxFDASBgNVBAoTC0xpYlRvbUNyeXB0MQ8wDQYDVQQDEwZMVEMg
71+
UjAwKjAFBgMrZXADIQDVj/MS930omIOasHjkoGSoueCZn8mcZUz1xQKqXHDk3KN1
72+
MHMwEgYDVR0TAQH/BAgwBgEB/wIBAjAdBgNVHQ4EFgQUQ+2nrtlkdUz4WHS3PyWX
73+
Fsx0OnkwCwYDVR0PBAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAeBglghkgBhvhC
74+
AQ0EERYPeGNhIGNlcnRpZmljYXRlMAUGAytlcANBAAYBDKvYaZ35dk0HDuQeGq06
75+
R9LtgUnsD9GgjXbzC2fathjli91Ff3u7vlWLH6aXi8dd87e1Mq6XJGfIjMHn4Q4=
76+
-----END CERTIFICATE-----

tests/x509/invalid/secp224r1.pem

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICazCCAdSgAwIBAgIIHPS2iA70NUowDQYJKoZIhvcNAQELBQAwKTEUMBIGA1UE
3+
ChMLTGliVG9tQ3J5cHQxETAPBgNVBAMTCExUQyBTU1MwMCAXDTI1MDkwMzA4MzQw
4+
MFoYDzMwMjUwOTAzMDgyNjAwWjBBMRQwEgYDVQQKEwtMaWJUb21DcnlwdDEpMCcG
5+
A1UEAxMgc2VjcDIyNHIxLmxpYnRvbWNyeXB0LmV4YW1wZS5jb20wTjAQBgcqhkjO
6+
PQIBBgUrgQQAIQM6AAQpOBS4/xWqs42CirgBo3cTbteHsvwmQ9m546tlJgv536sJ
7+
1y1VNNV77bDfBKGa/hdQjrsbaqtSHaOB0zCB0DAMBgNVHRMBAf8EAjAAMB0GA1Ud
8+
DgQWBBQhck2OpsCLYdgbd4SPm1aWppeRxjAfBgNVHSMEGDAWgBQPcAyfJAWr3MNi
9+
CVYNhkj//bs9fDALBgNVHQ8EBAMCA+gwEwYDVR0lBAwwCgYIKwYBBQUHAwEwKwYD
10+
VR0RBCQwIoIgc2VjcDIyNHIxLmxpYnRvbWNyeXB0LmV4YW1wZS5jb20wEQYJYIZI
11+
AYb4QgEBBAQDAgZAMB4GCWCGSAGG+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwDQYJ
12+
KoZIhvcNAQELBQADgYEAYzxdgs0W9+UqSvtclZHz1Aa4kMlImQeggCZyFs7uw9zX
13+
ye5TF5+4JF0z5q4YCHlLezRzn9GmucL1lPNi8B6UKd2nxwczYs+Y7hR7UPlQ91My
14+
hCBRYlsPvgEbQxPOwGrrn/WRun0C7xktEnigmQ62iNlhMAGuNWCxjFvkxwYqSvA=
15+
-----END CERTIFICATE-----
16+
-----BEGIN CERTIFICATE-----
17+
MIIC6TCCAdGgAwIBAgIIWKbGS7FFfFEwDQYJKoZIhvcNAQELBQAwKDEUMBIGA1UE
18+
ChMLTGliVG9tQ3J5cHQxEDAOBgNVBAMTB0xUQyBTUzAwIBcNMjUwOTAzMDgyNjAw
19+
WhgPMzAyNTA5MDMwODI2MDBaMCkxFDASBgNVBAoTC0xpYlRvbUNyeXB0MREwDwYD
20+
VQQDEwhMVEMgU1NTMDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV1mgbza
21+
UGhF3rnjDRJhMoPpcvWbfuM8wE3SjRU+kVv4HnMFzKa7rpOCL/9wUYotKUymdpDg
22+
5XD5tCcwbrZqBSs8BuBYEcfPCgkI+NBzXffiDY1Z60kwa5NIvByPcePxRE4bE8De
23+
zJGKyS06llz8j6dQUoMcMinS4cqhpaof1TcCAwEAAaOBlzCBlDASBgNVHRMBAf8E
24+
CDAGAQH/AgEAMB0GA1UdDgQWBBQPcAyfJAWr3MNiCVYNhkj//bs9fDAfBgNVHSME
25+
GDAWgBTY1GXwayUXgPCc4HQiKu4XXayoSjALBgNVHQ8EBAMCAQYwEQYJYIZIAYb4
26+
QgEBBAQDAgAHMB4GCWCGSAGG+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwDQYJKoZI
27+
hvcNAQELBQADggEBAKZDiqriGnJVwVu2zdZnjTySLtXEGlUd4A8hT3rZ1EgP3rQ0
28+
4j4zhATb1fH++2XdHX6IMDtdduWSjKxTF6rmPfDl0znbg3mnbUC2nP6Nw3UsD1DC
29+
/k1cI0a9S1ocXCJsPIp89lBXuGWUwk5Ml7B/BKNhqOCJqD8CFpejAXovMhpwJ8zk
30+
2U542RVW+qXUJE36KCzwrxldqU9zuqSCdllJ53oSnt4YQ7ODuUVCTm7gObaU71Uu
31+
qO3hNalAYNckKi9qrUNdH4dir2zGUkHw41hDcQ/Qd7kNvIo8e/OLJPtWpYUO0gOS
32+
L4s9V2ZO9BhQJM2KW67Xz/O8byg9CgyXR4LgJ58=
33+
-----END CERTIFICATE-----
34+
-----BEGIN CERTIFICATE-----
35+
MIIEazCCAlOgAwIBAgIIaxPLdClfRLwwDQYJKoZIhvcNAQELBQAwJzEUMBIGA1UE
36+
ChMLTGliVG9tQ3J5cHQxDzANBgNVBAMTBkxUQyBTMDAgFw0yNTA5MDMwODIyMDBa
37+
GA81MDI1MDkwMzA4MjIwMFowKDEUMBIGA1UEChMLTGliVG9tQ3J5cHQxEDAOBgNV
38+
BAMTB0xUQyBTUzAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC0lSWq
39+
0cFHUL5qqkKvFm453nLj/1dPyxsQ2sM2bjUarj25jhHg/C93e+GDaD/uXJR4I87c
40+
hUHzoHusC3glfqVFQCtIP2M8jOD57zpdegueElWoCdsj7JnETekVSZ/jdAq0PNKP
41+
jiMxcF5sa3i2UaN1ab+cjs2HLur458xqc27H/+NVeTA6NOI11MqkQc+ScaIC1gV2
42+
jlhWmik88bxprBbhm/YrUdi/cmGfL34borcNx31k4Q3tDBxuLz4lohacdpRcLdCC
43+
i4GS70Mciy9nwt+/juLKT9uLLtyluaG970nMO2pqTTpwhrGLNdM08Q6gddNA+FhO
44+
Tv818DyMloJ+FIXZAgMBAAGjgZcwgZQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNV
45+
HQ4EFgQU2NRl8GslF4DwnOB0IiruF12sqEowHwYDVR0jBBgwFoAUQTExVrNGN1Pl
46+
W+wOR+8j6k6N5hAwCwYDVR0PBAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAeBglg
47+
hkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMA0GCSqGSIb3DQEBCwUAA4ICAQAt
48+
y+dHcKWYp+MNt3r3aFO1toi9VJ4L9ySwntV0PHbvONLgFEp8zoTzKOC+OkdcbLU+
49+
J9mgpQ1JxwFmYaZATPTDvCi7/bfCekjDdPsyeXRdUcMhq8wu3K0P40xF1R1j7WWR
50+
ZqdtMlvD1k2LJSU6Bwt6uROZA2kGVx+TpVb3KttMoqRzjz2KNdyx/kXTdKFmL9Ip
51+
3icyhLXPEiT5o8wdgRDOwuQwWWxEKaXl0IvAJykG8dBXEDcF4mcmFcp9my9dudRX
52+
NBI7n0t1/ItA6mQ7hOL1Xflgqo4kmm5/oZzQcYLTapW0LGSC39rPvNTY5Sf6P7TN
53+
KYgTUgW6WaUgobZjpwuQxgcrohjdXcx03745g2e9eY5eJTRVlbDlLmwdxg7a/joO
54+
2PXpUg79FixMdmt8LARrLbDEVlfB5N5HilB+3J7riWU33nZRymE8w7AR/HMIV+9i
55+
T9Ue0+6lAL+Mz9zLTviQfdz5xOqo0ngEeWTs8HOpjiwdGkB5uUEkwhhnXZJlNICN
56+
ebo7IG0OpfPKhO82i2xFA6uZzJvTv+3G1ih/LwL+MzJVfLxnuuL7DBbv7d9lB4cO
57+
ooMOOZMH9okthuKLk20a0VdmPAQ9xF8KhIgutajEXAGWhayXoGugMNRjWrJm6lUX
58+
d8kK4AEM2eDZWo11GxAdU1XqIOWCLdV95eWfkZo7gg==
59+
-----END CERTIFICATE-----
60+
-----BEGIN CERTIFICATE-----
61+
MIIDrTCCA1+gAwIBAgIIdmUTeeSNp0gwBQYDK2VwMCcxFDASBgNVBAoTC0xpYlRv
62+
bUNyeXB0MQ8wDQYDVQQDEwZMVEMgUjAwIBcNMjUwOTAzMDgxODAwWhgPNjAyNTA5
63+
MDMwODE4MDBaMCcxFDASBgNVBAoTC0xpYlRvbUNyeXB0MQ8wDQYDVQQDEwZMVEMg
64+
UzAwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCMlz0PIJA6I543Z/Ij
65+
WOVyC/0+9/tPuVqviIWNDn9nO1FSyt8yCeq9JkHzuRrRmUTwAdc1r7MqFDy4bJdp
66+
l13clraYPRSKiRkOzvaoluatfBYfgVRuhCshE6yDlMjdBCo3ZMBL4Sh6CUtmLUuI
67+
r5Wc4+/Voh6V49vMBnRlt2XAdZIWU6Se3l7ii51GTMU6PJmif5qvOfRQxyp5XOkK
68+
OlgE0CwnvNMb6LwqsqyMdsabo5Y/+fewer2XUf/1bt9Q93mMDN5r/Usjz9d4jFsW
69+
LEcbDlVQ2CM7jexULQmHmIHMaTrWgnbGMBy4vKXgAr3l0VvFxez7C/ldCv/PNKSO
70+
FvqBWeJb/QRP9HuZ2KcrjPZm/QiegWmkKXuUVbSZ5mZH1g5QKSGcTjIGH2c6Uxar
71+
i2TGVnYpf+YZjghK9IOx2cwc76r2f3fp4fBNgUGUHmoId5M3DNYL1b+bPtarcsCF
72+
z6tiKRk1bLRmSF2dwzm0jO0S3Lp4pNzXWbGNuVIkXh30wTZe0/UQmvR8uHjRbgVy
73+
l7gHMBWTaFvFZwXCjidxzK6QeB2Xbja5SNfvRCHI/K9LB1TTrPV1cAZYtzqaO5qF
74+
ezQneNKRLmFyPAZimQE09BPV+JmK+UzOOUZ3SJeCKSXAPBJzo0t8RWTtpPBgVwJM
75+
r/K2ll68CVk+VeHOoG6XbN01BQIDAQABo4GsMIGpMBIGA1UdEwEB/wQIMAYBAf8C
76+
AQEwHQYDVR0OBBYEFEExMVazRjdT5VvsDkfvI+pOjeYQMB8GA1UdIwQYMBaAFEPt
77+
p67ZZHVM+Fh0tz8llxbMdDp5MAsGA1UdDwQEAwIBBjATBgNVHSUEDDAKBggrBgEF
78+
BQcDAjARBglghkgBhvhCAQEEBAMCAAcwHgYJYIZIAYb4QgENBBEWD3hjYSBjZXJ0
79+
aWZpY2F0ZTAFBgMrZXADQQCzEr3m4hDVAkPAtDgh76cRLxFw987XGN0mfT0ZDurK
80+
SF0S51g6g/v7rrHHiCxALLf6s70TihkLPVDeaIL9ik4M
81+
-----END CERTIFICATE-----
82+
-----BEGIN CERTIFICATE-----
83+
MIIBezCCAS2gAwIBAgIIb2eiAYNfDJswBQYDK2VwMCcxFDASBgNVBAoTC0xpYlRv
84+
bUNyeXB0MQ8wDQYDVQQDEwZMVEMgUjAwIBcNMjUwOTAzMDgxNDAwWhgPNzAyNTA5
85+
MDMwODE0MDBaMCcxFDASBgNVBAoTC0xpYlRvbUNyeXB0MQ8wDQYDVQQDEwZMVEMg
86+
UjAwKjAFBgMrZXADIQDVj/MS930omIOasHjkoGSoueCZn8mcZUz1xQKqXHDk3KN1
87+
MHMwEgYDVR0TAQH/BAgwBgEB/wIBAjAdBgNVHQ4EFgQUQ+2nrtlkdUz4WHS3PyWX
88+
Fsx0OnkwCwYDVR0PBAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAeBglghkgBhvhC
89+
AQ0EERYPeGNhIGNlcnRpZmljYXRlMAUGAytlcANBAAYBDKvYaZ35dk0HDuQeGq06
90+
R9LtgUnsD9GgjXbzC2fathjli91Ff3u7vlWLH6aXi8dd87e1Mq6XJGfIjMHn4Q4=
91+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)