Skip to content

Commit

Permalink
feat(cert-type): Detect if a certificate is VMC or CMC
Browse files Browse the repository at this point in the history
  • Loading branch information
andris9 committed Nov 5, 2024
1 parent 593c56a commit 6123c0e
Show file tree
Hide file tree
Showing 9 changed files with 536 additions and 191 deletions.
4 changes: 3 additions & 1 deletion .ncurc.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ module.exports = {
upgrade: true,
reject: [
// only works as ESM
'chai'
'chai',
// api changes
'eslint'
]
};
2 changes: 1 addition & 1 deletion examples/vmc.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict';

const fs = require('fs');
const pem = fs.readFileSync(__dirname + '/../test/fixtures/cnn.pem');
const pem = fs.readFileSync(__dirname + '/../test/fixtures/paypal_vmc.pem');
const { vmc } = require('..');

vmc(pem).then(logo => console.log(logo));
6 changes: 4 additions & 2 deletions lib/tools.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@
const { X509Certificate } = require('crypto');

const oids = {
'1.3.6.1.4.1.53087.1.5': 'legalEntityIdentifier',
'1.3.6.1.4.1.53087.1.3': 'trademarkCountryOrRegionName',
'1.3.6.1.4.1.53087.1.2': 'trademarkOfficeName',
'1.3.6.1.4.1.53087.1.3': 'trademarkCountryOrRegionName',
'1.3.6.1.4.1.53087.1.4': 'trademarkRegistration',
'1.3.6.1.4.1.53087.1.5': 'legalEntityIdentifier',
'1.3.6.1.4.1.53087.1.6': 'wordMark',
'1.3.6.1.4.1.53087.1.13': 'markType',
'1.3.6.1.4.1.53087.4.1': 'pilotIdentifier',
CN: 'commonName',
O: 'organizationName',
OU: 'organizationalUnitName',
Expand Down
17 changes: 16 additions & 1 deletion lib/vmc.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,22 @@ const vmc = async (pem, options) => {
}

const logo = await parseVMC(chain[0].cert.raw);
logo.certificate = certInfo(chain[0].cert);
const certificate = certInfo(chain[0].cert);

switch (certificate && certificate.subject && certificate.subject.markType) {
case 'Prior Use Mark':
case 'Modified Registered Mark':
logo.type = 'CMC';
break;

case 'Registered Mark':
case 'Government Mark':
default: // older certificates without markType
logo.type = 'VMC';
break;
}

logo.certificate = certificate;

logo.hashValue = logo.hashValue && logo.hashValue.toString('hex');
logo.logoFile = logo.logoFile && logo.logoFile.toString('base64');
Expand Down
387 changes: 207 additions & 180 deletions package-lock.json

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@
"author": "Postal Systems OÜ",
"license": "MIT",
"dependencies": {
"@peculiar/asn1-schema": "2.3.8",
"@peculiar/asn1-x509": "2.3.8",
"@peculiar/asn1-x509-logotype": "2.3.8"
"@peculiar/asn1-schema": "2.3.13",
"@peculiar/asn1-x509": "2.3.13",
"@peculiar/asn1-x509-logotype": "2.3.13"
},
"devDependencies": {
"chai": "4.4.1",
"eslint": "8.56.0",
"eslint": "8.57.0",
"eslint-config-nodemailer": "1.2.0",
"eslint-config-prettier": "9.1.0",
"mocha": "10.2.0"
"mocha": "10.8.2"
}
}
137 changes: 137 additions & 0 deletions test/fixtures/paypal_vmc.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
-----BEGIN CERTIFICATE-----
MIILPzCCCSegAwIBAgIQBJxXiRg/jmTWri85/+oyYTANBgkqhkiG9w0BAQsFADBf
MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xNzA1BgNVBAMT
LkRpZ2lDZXJ0IFZlcmlmaWVkIE1hcmsgUlNBNDA5NiBTSEEyNTYgMjAyMSBDQTEw
HhcNMjQwOTA5MDAwMDAwWhcNMjUwOTA4MjM1OTU5WjCCASoxEzARBgsrBgEEAYI3
PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVsYXdhcmUxHTAbBgNVBA8TFFBy
aXZhdGUgT3JnYW5pemF0aW9uMRAwDgYDVQQFEwczMDE0MjY3MQswCQYDVQQGEwJV
UzETMBEGA1UECBMKQ2FsaWZvcm5pYTERMA8GA1UEBxMIU2FuIEpvc2UxFjAUBgNV
BAkTDTIyMTEgTiAxc3QgU3QxFTATBgNVBAoTDFBheVBhbCwgSW5jLjEVMBMGA1UE
AxMMUGF5UGFsLCBJbmMuMR8wHQYKKwYBBAGDnl8BDRMPUmVnaXN0ZXJlZCBNYXJr
MRIwEAYKKwYBBAGDnl8BAxMCVVMxFzAVBgorBgEEAYOeXwEEEwc2Mjc1MTU2MIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt+x1st2PIrMYzo42ezaOUI3G
VsQ/EiW0VBemOjGgeknSkboeFJtkkv0106CPHwJyXFidLc6a/yHdUHd9NX+jfQkb
xa2RDTkT1T7zSEMR6Y4y3w4CEcpM3wEgeDaaeLG70ueDCEVGIUx0FWEfGcI2J0Yv
fh079dpSN8TpvIklKYbHI2tvB4Zm/vAKbwOi2HmyX8wP9kGNQHk08faW62uXfAWY
5B1nmuKH/A6Qq7SkcxaAy2GYVCl2wZowZp3k0KeoeoYpvQi5TFIcFwRkDsN7QJTu
UNeCI4Frunk65NVp+p9uMWW/iULfkMAlYCfzpFeMxp94gXN0QYxgahjBh/5LCwID
AQABo4IGKDCCBiQwHwYDVR0jBBgwFoAUvp+9jVdtlbWtY8OXTquohF06B/UwHQYD
VR0OBBYEFKd0Uk8hPmbfDjaFf4W7nSK7lofBMBUGA1UdEQQOMAyCCnBheXBhbC5j
b20wUAYDVR0gBEkwRzA3BgpghkgBhv1sAAIFMCkwJwYIKwYBBQUHAgEWG2h0dHA6
Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAMBgorBgEEAYOeXwEBMBMGA1UdJQQMMAoG
CCsGAQUFBwMfMIGlBgNVHR8EgZ0wgZowS6BJoEeGRWh0dHA6Ly9jcmwzLmRpZ2lj
ZXJ0LmNvbS9EaWdpQ2VydFZlcmlmaWVkTWFya1JTQTQwOTZTSEEyNTYyMDIxQ0Ex
LmNybDBLoEmgR4ZFaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VmVy
aWZpZWRNYXJrUlNBNDA5NlNIQTI1NjIwMjFDQTEuY3JsMGQGCCsGAQUFBwEBBFgw
VjBUBggrBgEFBQcwAoZIaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lD
ZXJ0VmVyaWZpZWRNYXJrUlNBNDA5NlNIQTI1NjIwMjFDQTEuY3J0MAwGA1UdEwEB
/wQCMAAwggO4BggrBgEFBQcBDASCA6owggOmooIDoqCCA54wggOaMIIDljCCA5IW
DWltYWdlL3N2Zyt4bWwwIzAhMAkGBSsOAwIaBQAEFLS+dP8Esdnldw7YIsM107+s
ZZcOMIIDWhaCA1ZkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LEg0c0lBQUFBQUFB
QUNvVlRTMnZiUUJDKzUxZHN0NmZDem1xZmt0WllEa2xwUXc0RlE5c2NjbE5rV1JK
c0pTUEpjZkx2Tzd0MkhUZFFpckYzM3ZOOU0rUGw5Y3N2VDU3cmNlcUd2cUNTQzBy
cXZobzJYZDhVOU9lUHI1RFQ2OVhWY25wdUNFYjJVMEhiZWQ0dGt1UndPUENENXNQ
WUpFb0lrV0FFSlUvbFZLL0hZZHY1dXFCejE3L0NicUtYNVJWcVhYMjRIVjRLS29n
Z21ZaGZ1cm9pWlBrQmdOelZmVDJXOHpBdXlNMW1lS3JKdmZmN2FZNG1vbktlY3NI
STk0Yzc4dVZsTjR3eldmdDlBL2M5NGRINGNPeTBJTmlKQzNLNzcvd0c2N3RQaEFB
Z2pibWJmYjFhbDYvcjBpK1RveFk2TitFM3ZLVGJGUFRtdVp6TGtSNXRaK3ZuYnF4
OERlK2M2QjdyYWlhSGJqTzNCUTFjU0Z0M1RUdWZGSnlGTCtqSDdYWkxrNHVrNWsx
R2JWZk9MY0VlMzJTVzhaU1pQR3VkNU5yTGpDdVFVdktjYVo2QzBseTF3aXZCTTVE
YXRoSU5lUlZVSnBoMkdHVzVaTlp5dzZUbXRoVlZTRmZjQWxZQVpiQ0U1UTYwRGZt
R0c4QWNBemFVVHJOZ0U1cnJLTGJvejNqdXdScnVtTGFPdTFZOG50a0lvWnlUbDRR
dVNhamNJUWx0RlpjZXNEZ0x1Q0Z3WVpGTDZKMHlKMXFIeUwxQ29wR05sVldxTUVa
Z2xNRW9ZN2xsRWxFN0JKYXpGQUVhSGJLUkpPUkJ3ZzVwQkcwdzZiOGZISWRnQnFH
QndSWWlqbGFvMEVNNmxKRTFrMkZVT0IybUVKTXk0V2tody9wdjFGTlJiZjdlNVNW
MUU2a3JqY1NtVTl0S0FJNVFnRHhpK0dOKy9GY0pMUVhYVE9HNGNIcHh0MkU0QVVT
Vm93T2hwN2cwM0xVeWdQaFlHdmVMb3cxY0lBMzlqMktraGFRakk4akR1azA4SFBT
Rkc0a1NMam9jMGVWcTgrcmRyU2JuWXoyTEp5RSt5L0RmWC8wR1ZxbWR3RW9FQUFB
PTCBiwYKKwYBBAHWeQIEAgR9BHsAeQB3AFVZU64wlgCAbNLrUgimyZ6TGCisEFa0
QhxVNhVMX3WsAAABkdRsfGcAAAQDAEgwRgIhAMJlxHi9EH/pSyACUSBuI/tU3uG6
dSIZ95ShUqPKXy8MAiEAtfPBOFHC43XjxQ8XMmStQVOdT8G8HHnLUL6ZLCAaRIMw
DQYJKoZIhvcNAQELBQADggIBAH4Kq+l5GGGbYc94oScshF1xHtIbsX3f3JHRkqwr
t080U94UF1409NbeiNOikPuidFfAi7raEjQGqiczJC1g+Pv2tESrIrR40dLRvXVe
HpED8ANipsPQwmcVk0rnpK6FaTc0R23O7rES8LmAwPuJi/B8nJTOH57kCSMexu6u
aYGezT2iEc+215WaBY/jQawX89TJhILFQVM5VjgXel46FM6Igc/oikkEGcf72JCe
1Kjku5WdqE7boV5oMCiLPIxOWoxpnA8xE9eZsxeLn1FWd/Flnj/IH0r8AJmsHmqy
pgYzu+GQ1D7E+rfdHCmqDRz/CqBAdVaKvHjPo7J7yenmeC4y9fHbqONprssyQKnX
fwP1FTaAJo1BmpVgLGjyfAeek7/8n/oMt+s4XWNz329d0v2CzPor9wgCLQqWjoBw
8BOXpd+bBwSLOUi0Vtqc9dvTtjRm+HZdnq7UhLKnO7rZ4m73Ie/WfDOqhjLDpyRf
rKBd+wA8PtXYTjnj31ie1fm9yYYPG/K0CELf9fdjwfVbg25mW69Fx2oY4GvBCpAn
rYS3wDQC4WHvsEWRmJenYDGLtfNSERwvPreoWSZjVfQwfnyO51+llBC5fbafo/cv
V46KrWry7sqFps+8c7TOfeQRkvUJiaBEWmdatn12zXDWr1DZoYm8CdiNAo2/DRRH
xsMH
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIHCzCCBPOgAwIBAgIQDFtvfuuz8cKs3aE6mJ29gjANBgkqhkiG9w0BAQsFADCB
iDELMAkGA1UEBhMCVVMxDTALBgNVBAgTBFV0YWgxDTALBgNVBAcTBExlaGkxFzAV
BgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29t
MScwJQYDVQQDEx5EaWdpQ2VydCBWZXJpZmllZCBNYXJrIFJvb3QgQ0EwHhcNMjEw
NzAxMDAwMDAwWhcNMzYwNjMwMjM1OTU5WjBfMQswCQYDVQQGEwJVUzEXMBUGA1UE
ChMORGlnaUNlcnQsIEluYy4xNzA1BgNVBAMTLkRpZ2lDZXJ0IFZlcmlmaWVkIE1h
cmsgUlNBNDA5NiBTSEEyNTYgMjAyMSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4IC
DwAwggIKAoICAQDcL2QJnDBab/pzEf3Yoi6mAXmKD34MOgqMouGLTT4CvWSugTi/
xjPPbFTf2zJG4Pgx34YaIGYzvnTSgpscpNf+sstiAPDrEPwuWk/ZQmo4E47crnOV
hHTHltOc8XRip1UwCPzOB2hwmnZwFTPP6kS6hp8ao9P5qa40Up03sh1QhhxvhVTX
f6DsxSjMVpCz2BICa56mW7lPeEf5BgqqdaeUoEvYdw4mw+37V5vugUF8pH1lus8J
f97DYPCC8uf14Rww8NXhOeLLyUylqP9t0WS5nlwPjiobJAm/VdhgrOzbAuUyU5uJ
2bmT4btp6aHNvmOesHvhES96fWdjsu2jdVQTa9e87PK+VzUiSdDDNHwtY/maUG0y
9AYThU9PaKEkGifmF1+88dzN+IeTsy469ikQ5nWEs7lEiW8omO2aqDcY2BYRfcUD
aP4EX5RdVwLlIf3WgsVVejgZ0adlqB+imip2DHFHD7xnCA+akDfRALgdckNtxGic
MxWCuttmuQGsf7+3OexM0qyMo3F+yvr+Hr8zrV9FjJn8R1crABvouX+9m24hj2Ql
I3OGAXSj3rrLMXZZmFeAb1iTPqpfkDAJb5tpMTqWWbEas2L76aoztFt9n4kZQfc3
DDx4L4HxUkF+GBsi/pqp50Op2taInqnTkl6cZt1JFaXJyIv/zZrXgTwN1QIDAQAB
o4IBlzCCAZMwHQYDVR0OBBYEFL6fvY1XbZW1rWPDl06rqIRdOgf1MB8GA1UdIwQY
MBaAFOxvIqSzBOLBY4fmd2PqRmlO7vzrMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUE
DDAKBggrBgEFBQcDHzASBgNVHRMBAf8ECDAGAQH/AgEAMHwGCCsGAQUFBwEBBHAw
bjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEYGCCsGAQUF
BzAChjpodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRWZXJpZmll
ZE1hcmtSb290Q0EuY3J0MEgGA1UdHwRBMD8wPaA7oDmGN2h0dHA6Ly9jcmwzLmRp
Z2ljZXJ0LmNvbS9EaWdpQ2VydFZlcmlmaWVkTWFya1Jvb3RDQS5jcmwwUAYDVR0g
BEkwRzA3BgpghkgBhv1sAAIFMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGln
aWNlcnQuY29tL0NQUzAMBgorBgEEAYOeXwEBMA0GCSqGSIb3DQEBCwUAA4ICAQCq
g+EBenB6355D4oN3WUj741u8a/McUbAWAh2jvBq9beUBpeortI0zhwo2jXQLIDjt
lJdtNwcZWmmV6ouc6cp3ZqGnk0HRnD1HNASCQ33hTw5UaqG0tuEUOq8VKNnNmVBk
XNGb66PVw6RFjQH4/WKDBqiglhiI23f5cpDalfSXX4RVJZ3XLGPVSMmq2TOHmQWF
+h1NR6pVyDdXJoouUK8WOkIksYyjlxMatVX0QasX8tepHizWBMZC0HMg3Q2gr0h4
HKCducumhbuuRnSwpYhG+OU+QAITKK29FicuGMx1i+Cg1PyQEIdmq41LgzLendaR
tewhUuFfm4FYG/b3sSklg+vesw8CbDE3gXQR7Y/b1M1jiZ6vnlnP/q72ZRUB5ApN
kA/h9fkoJNR8+R42BDfJ7o9Qu9EWnMeshNB26EIUpM20FdYfOhtWI6IQQ9kmnLwk
6yzD2nolhwuSEp32hK9X5q/jPfXstjOsQCkUkRoGkGBkSERU2xjaWhOYYJbrmg4c
1Qtqcr65mc9FyqYckZ0LdLMjd8SPQn/jQPLrQ+5PYcfI/GEZIZ4dqZ73enWRxMKq
1d/v891yZBQrmsa+f/H1uHAHmGfMzwcA6WWlXZYnjJD0qPLpUzyBwFoGd9YIy0/I
saBEzyI2AsX9Eal3wrjflZOyMzE7zYKV5YEtRDDBWA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
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
0wberd/tg3N0dJsSSznZjwYB
-----END CERTIFICATE-----
133 changes: 133 additions & 0 deletions test/fixtures/xometry_cmc.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
-----BEGIN CERTIFICATE-----
MIIKqTCCCJGgAwIBAgIQDol3si/J0+7ulq+62WNplDANBgkqhkiG9w0BAQsFADBf
MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xNzA1BgNVBAMT
LkRpZ2lDZXJ0IFZlcmlmaWVkIE1hcmsgUlNBNDA5NiBTSEEyNTYgMjAyMSBDQTEw
HhcNMjQxMDEwMDAwMDAwWhcNMjUxMDEwMjM1OTU5WjCCARoxEzARBgsrBgEEAYI3
PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVsYXdhcmUxHTAbBgNVBA8TFFBy
aXZhdGUgT3JnYW5pemF0aW9uMRAwDgYDVQQFEwc1MzQxOTI3MQswCQYDVQQGEwJV
UzERMA8GA1UECBMITWFyeWxhbmQxFzAVBgNVBAcTDk5vcnRoIEJldGhlc2RhMRAw
DgYDVQQJEwdTdGUgODAwMRwwGgYDVQQJExM2MTE2IEV4ZWN1dGl2ZSBCbHZkMRYw
FAYDVQQKEw1YT01FVFJZLCBJTkMuMRYwFAYDVQQDEw1YT01FVFJZLCBJTkMuMR4w
HAYKKwYBBAGDnl8BDRMOUHJpb3IgVXNlIE1hcmswggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQCuXviXdOKAPW9KItK9rKkuro2WoX+6WF/uINidZUClImbh
nHQm2eqyDvM+J9vGM03JBVJchs4brmtrqjhUZVUwOmYvQEQEStXw78R3G6E06D5J
uMGoZH3Tn2C4bt4MgPh7Z3XOfB3sJUlF7ny9BvoiEUAeTCDwbmLrrop1hFME+vM6
4rOiCX7wkdIi5affDUshWZfX5LFVOaReqNuZPP2dstX8obrUqcgz4m1SRBafALmT
EX5kOSrh055e7dFtRaxlBt6Cx3mlthXP0EM/o88ylGiyNON1lAjwKkCzKlp9i2Ix
MIOTsp0kbAqeUngRSjO/v8O4lrxplwq9i69BuunnAgMBAAGjggWiMIIFnjAfBgNV
HSMEGDAWgBS+n72NV22Vta1jw5dOq6iEXToH9TAdBgNVHQ4EFgQUiu2Y8tiIFvSH
kz5vLFD3IvNpF8kwFgYDVR0RBA8wDYILeG9tZXRyeS5jb20wUAYDVR0gBEkwRzA3
BgpghkgBhv1sAAIFMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGlnaWNlcnQu
Y29tL0NQUzAMBgorBgEEAYOeXwEBMBMGA1UdJQQMMAoGCCsGAQUFBwMfMIGlBgNV
HR8EgZ0wgZowS6BJoEeGRWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2Vy
dFZlcmlmaWVkTWFya1JTQTQwOTZTSEEyNTYyMDIxQ0ExLmNybDBLoEmgR4ZFaHR0
cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VmVyaWZpZWRNYXJrUlNBNDA5
NlNIQTI1NjIwMjFDQTEuY3JsMGQGCCsGAQUFBwEBBFgwVjBUBggrBgEFBQcwAoZI
aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VmVyaWZpZWRNYXJr
UlNBNDA5NlNIQTI1NjIwMjFDQTEuY3J0MAwGA1UdEwEB/wQCMAAwggMMBggrBgEF
BQcBDASCAv4wggL6ooIC9qCCAvIwggLuMIIC6jCCAuYWDWltYWdlL3N2Zyt4bWww
IzAhMAkGBSsOAwIaBQAEFEAu/hWS3t5Xckdl2VVrMu58oEPAMIICrhaCAqpkYXRh
OmltYWdlL3N2Zyt4bWw7YmFzZTY0LEg0c0lBQUFBQUFBQUNwVlRUWStiTUJDOTUx
ZE0zVk9sWW16ellZZ2dxNjdVcmxicVlhVzJxOTZxSkJoaWljVUluQ1g1OXgzYmFk
SkxWK29CKzgwdzg5NmJFVlIzcDVjZVh0VTBhelBVaEZOR1FBMTcwK2locThtUDcx
K2lndHh0VnRYODJnRldEbk5ORHRhTzZ6aGVsb1V1Q1RWVEZ3dkdXSXdWQkhiYldU
MU5wdFc5cW9uVnd6a2FaL0kzdmNCSXErWGVuR3JDZ0FIUC9FTTJzS3FzdHIzYS9E
UXZ5azduS2c3aENxQjZGMFh3b0FZMWJhMloxdkNwTVRzRmozMS9uSzFQZ1Nob1R0
bEgrUGI4QUo5UG81a3NQUFhITG5vY2dQcmtjM0N3Qm5SQUdkd2ZkZCtBWk9VSGdD
anlHcDA3M1EyNnFjblg3VmxOdnpnSlNVeFBhbThCUFVjMElYQ3VpYnNXM2RnRERv
WDI0YUIwZDdDWEFNZnZhL0srYlZzU1h4bEcwNTg3TThCbzlHQnhqVkpRQ1p3Sktp
QXJLUWN1R0UwZ1RTOGdUL0YxeVdrR3Q4SXJNMVA1dnVWdmtITXVhWTVOa2haNEZ0
U3pJam1LSlk0ZEZaT0FDcGZMRTlSQmxEbFVPaVJEenZYNlFuU0FsQ21rQWhuTEJQ
M0tERzg4c2YwU081V2I3bitZWmRuVlN3WlpnUTVrN3JRSzVDNUtEUDNiUDJWWFlw
RW1jdmZXaXJFREdjSStTM1piTEU2WTR4aUljb2N5aDVLUVM1bnp6NzBvOTh1VHps
TWV4c3Z5TUtnSW1WRGlWNEo5eFdWUE45Ri9PSzFpLzdINXEzTC96ZVkzWUFMK05J
WURBQUE9MCMGCisGAQQBg55fBAEBAf8EEgwQTWFyayBDZXJ0aWZpY2F0ZTCBiwYK
KwYBBAHWeQIEAgR9BHsAeQB3AFVZU64wlgCAbNLrUgimyZ6TGCisEFa0QhxVNhVM
X3WsAAABkniiwAAAAAQDAEgwRgIhANLGWoJQlh7LqdHbl+94lADHjB1Og1cTBs99
tYlqiyz0AiEAmvbdVvQ1XtNevFHjegeBYtY5ZgiCUF0morLb29U5x8wwDQYJKoZI
hvcNAQELBQADggIBALVrEtzO1+558+Enqi760WUdt+DvNmP7WqOP4ar/ILbCsggv
W3FKw6wcEDwPva1PrcYIPH70Z1b1weKh7lfPYMajkqvfN5j5WIhIVxSqxa36RyuN
L0nNAw+a+IDn+p+6w/r+ZT8oP2XZItxsLAxONs259afaXohYSOsP12iRy2/7Or65
kLjr9axuF+8T8WSrUOdzMwae4qGV3mHOnFMincypuKl/FiQ3+Y1FMGOZlmBqSsBi
kEQAajJRUxJT0ZaIgbundxtCZe6LRVrdnZ+U8n7/WJzYBl/yb6+/QixwU6DUIQbE
VYgEfCiexqRF7XLzf5i8XnjTcQBr/Q8cjANEccicQnfho1v1Ex17OZO2Jm2mrxfq
6ZIXG3+58JqElw7af2rwFGiOhP2B+VTX+VNQ0XUkhAehqowlUNiRxRPERU+iShSC
3KvzQHILtXNjkjbKbFsn6EcQoRKSoEnPNbTHcw3kKmzIYhwH5W3fb2+wXf3TdIhH
XSlGlwlXMT/Ny40whUVNqPZ08/tGPGJzmo778L68kYTsVa6HQwb+h8OKc+X3t5pO
b9+N4JrITjR+WQN4m3xomo392SOLdCXTfZGWRlYW0629oNEZqgMCjgzHnU3bngaD
+9C5ev9FPYMQJa12ynNKbQntB+RcLwdeDhhmHnX6exjcF8JFtZO8g1O6ZTz4
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIHCzCCBPOgAwIBAgIQDFtvfuuz8cKs3aE6mJ29gjANBgkqhkiG9w0BAQsFADCB
iDELMAkGA1UEBhMCVVMxDTALBgNVBAgTBFV0YWgxDTALBgNVBAcTBExlaGkxFzAV
BgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29t
MScwJQYDVQQDEx5EaWdpQ2VydCBWZXJpZmllZCBNYXJrIFJvb3QgQ0EwHhcNMjEw
NzAxMDAwMDAwWhcNMzYwNjMwMjM1OTU5WjBfMQswCQYDVQQGEwJVUzEXMBUGA1UE
ChMORGlnaUNlcnQsIEluYy4xNzA1BgNVBAMTLkRpZ2lDZXJ0IFZlcmlmaWVkIE1h
cmsgUlNBNDA5NiBTSEEyNTYgMjAyMSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4IC
DwAwggIKAoICAQDcL2QJnDBab/pzEf3Yoi6mAXmKD34MOgqMouGLTT4CvWSugTi/
xjPPbFTf2zJG4Pgx34YaIGYzvnTSgpscpNf+sstiAPDrEPwuWk/ZQmo4E47crnOV
hHTHltOc8XRip1UwCPzOB2hwmnZwFTPP6kS6hp8ao9P5qa40Up03sh1QhhxvhVTX
f6DsxSjMVpCz2BICa56mW7lPeEf5BgqqdaeUoEvYdw4mw+37V5vugUF8pH1lus8J
f97DYPCC8uf14Rww8NXhOeLLyUylqP9t0WS5nlwPjiobJAm/VdhgrOzbAuUyU5uJ
2bmT4btp6aHNvmOesHvhES96fWdjsu2jdVQTa9e87PK+VzUiSdDDNHwtY/maUG0y
9AYThU9PaKEkGifmF1+88dzN+IeTsy469ikQ5nWEs7lEiW8omO2aqDcY2BYRfcUD
aP4EX5RdVwLlIf3WgsVVejgZ0adlqB+imip2DHFHD7xnCA+akDfRALgdckNtxGic
MxWCuttmuQGsf7+3OexM0qyMo3F+yvr+Hr8zrV9FjJn8R1crABvouX+9m24hj2Ql
I3OGAXSj3rrLMXZZmFeAb1iTPqpfkDAJb5tpMTqWWbEas2L76aoztFt9n4kZQfc3
DDx4L4HxUkF+GBsi/pqp50Op2taInqnTkl6cZt1JFaXJyIv/zZrXgTwN1QIDAQAB
o4IBlzCCAZMwHQYDVR0OBBYEFL6fvY1XbZW1rWPDl06rqIRdOgf1MB8GA1UdIwQY
MBaAFOxvIqSzBOLBY4fmd2PqRmlO7vzrMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUE
DDAKBggrBgEFBQcDHzASBgNVHRMBAf8ECDAGAQH/AgEAMHwGCCsGAQUFBwEBBHAw
bjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEYGCCsGAQUF
BzAChjpodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRWZXJpZmll
ZE1hcmtSb290Q0EuY3J0MEgGA1UdHwRBMD8wPaA7oDmGN2h0dHA6Ly9jcmwzLmRp
Z2ljZXJ0LmNvbS9EaWdpQ2VydFZlcmlmaWVkTWFya1Jvb3RDQS5jcmwwUAYDVR0g
BEkwRzA3BgpghkgBhv1sAAIFMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGln
aWNlcnQuY29tL0NQUzAMBgorBgEEAYOeXwEBMA0GCSqGSIb3DQEBCwUAA4ICAQCq
g+EBenB6355D4oN3WUj741u8a/McUbAWAh2jvBq9beUBpeortI0zhwo2jXQLIDjt
lJdtNwcZWmmV6ouc6cp3ZqGnk0HRnD1HNASCQ33hTw5UaqG0tuEUOq8VKNnNmVBk
XNGb66PVw6RFjQH4/WKDBqiglhiI23f5cpDalfSXX4RVJZ3XLGPVSMmq2TOHmQWF
+h1NR6pVyDdXJoouUK8WOkIksYyjlxMatVX0QasX8tepHizWBMZC0HMg3Q2gr0h4
HKCducumhbuuRnSwpYhG+OU+QAITKK29FicuGMx1i+Cg1PyQEIdmq41LgzLendaR
tewhUuFfm4FYG/b3sSklg+vesw8CbDE3gXQR7Y/b1M1jiZ6vnlnP/q72ZRUB5ApN
kA/h9fkoJNR8+R42BDfJ7o9Qu9EWnMeshNB26EIUpM20FdYfOhtWI6IQQ9kmnLwk
6yzD2nolhwuSEp32hK9X5q/jPfXstjOsQCkUkRoGkGBkSERU2xjaWhOYYJbrmg4c
1Qtqcr65mc9FyqYckZ0LdLMjd8SPQn/jQPLrQ+5PYcfI/GEZIZ4dqZ73enWRxMKq
1d/v891yZBQrmsa+f/H1uHAHmGfMzwcA6WWlXZYnjJD0qPLpUzyBwFoGd9YIy0/I
saBEzyI2AsX9Eal3wrjflZOyMzE7zYKV5YEtRDDBWA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIF3jCCA8agAwIBAgIQBsFnz+v0jTXWJBAYXhHF6zANBgkqhkiG9w0BAQsFADCB
iDELMAkGA1UEBhMCVVMxDTALBgNVBAgTBFV0YWgxDTALBgNVBAcTBExlaGkxFzAV
BgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29t
MScwJQYDVQQDEx5EaWdpQ2VydCBWZXJpZmllZCBNYXJrIFJvb3QgQ0EwHhcNMTkw
OTIzMTIxMjA2WhcNNDkwOTIzMTIxMjA2WjCBiDELMAkGA1UEBhMCVVMxDTALBgNV
BAgTBFV0YWgxDTALBgNVBAcTBExlaGkxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMu
MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMScwJQYDVQQDEx5EaWdpQ2VydCBW
ZXJpZmllZCBNYXJrIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
AoICAQDawvvIO7cL04ptZxgLw/YwqDuluiFsMvGsr+vZcfq5c3hKuX0uMrslza91
OFB6SPmbkG2hLErOcaVH0nMnG0RE3AM6dpfhw7qU+n3c6XPS7HlO9ZC57GJeaOXy
b0cmcK2G96WC/VRuB1ZgjqYoq6PP4yjn/DB/Pc+7kjwJ2EDH5BFEnywVq4rH1a+Q
AbVDpxJfCfQZV1VKW+JNtO/KKKX+NlPrtHroSgKiRZ019oWptImyfgpg7j6FNNAT
R8uPsvU5zYJyCDOxKv4MqllMJmUVwGUHF61WnbiZeJsxzb5H5wMpikX4mfdKaIm0
ym2QsHVRazST1bIVvAZThcKPd2EnysQi6XpYpMcpiSRo58ENXZW47M/Ocu7mBCLP
TJEPEC9YG2aCfHxFSz/n6xZR+1rvNPUxcLZ+FNOwZRnHqcqe5TDNQewoC8/AWR0O
dKqu2WgBF40ncXmtm5QnYhlTmBcoPUWfR40bCLJsm4fV2B4hkC5ZCHV/91jpsv7j
hsGkpQpY6n9XWBABW6ZGQWM4jXxybbNmb3u21xx8rEkaIh22is08i41xeV9iLYec
Pup6npZnZbiKSOEFQ3WAwzi3TtABmRknOMybFJKSlJQXMfHqENfwKpNvMMRVO8Pl
J+Oh6AN8l75vZaFF27gqBhbmjJ2Y9ioqTI7g+Dg4qClUQqXPCQIDAQABo0IwQDAd
BgNVHQ4EFgQU7G8ipLME4sFjh+Z3Y+pGaU7u/OswDgYDVR0PAQH/BAQDAgGGMA8G
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAC832YLVevVWINnr3vWC
XNvLPtmPOPLKO5cHupQpkcug+IOli2FAxnC8JDlbOT6hiMK7MYaurag9QvDI/As0
4cNOa+4sqKCxQR3aLEyyqeLA4WdA6UFIHdMSIzLHZylzjuwciI706x83Ib17DMKO
cpO2QVB7Beqv240TWxKxH21pFZsl44OgI+HcAPDbfJe3PEzwEZKNcKRkMWa/FFu2
ckQxpTcfZABrarnuRLcSINiodSW7VfxctzegXWM4WmQeutPBOicceV3J4ZVkhthB
m784vES1DIuDTqT9/iqStBGN8eOGx9qKvjaXT8SdcrP58FpXrtm/xKgtILptxfVT
042oogQfb2cNahKRSvs0xH3jyhO944t0zMH/bEpRdU36wR1/Fo56zXy2Zv4czMwg
3Hg7mbAalJvcnBvH+NHPgucQI432XX11K29vz7HuNC7P9yKhxns+MbOQDMDPOhtS
LUpBmzRNG4+2BZJZyKGqYd+STHisEGYeYCi3MVrwSe2UqcDi9f2UAWVbkDE/YB6/
e7+C7o6UWkXSU7dzR7FwFsfBHi6EqgIb2e9pINAxdvlc/3E19Ld/GJEtlw7nSdzp
71eMp5Z48iY54fV2lM/rXogS1R4r3p2oPe9efG0XaJMd0v1gom5Da/khJA7+wjRB
0wberd/tg3N0dJsSSznZjwYB
-----END CERTIFICATE-----
Loading

0 comments on commit 6123c0e

Please sign in to comment.