Commit 7d92d226 authored by davidben's avatar davidben Committed by Commit bot

Tidy up ssl_platform_key_android_unittest.cc.

Use the same test files as other client cert tests. While I'm here, use
the new BoringSSL scopers. This is done in preparation for to make
our ECDSA client certs logic for TLS 1.3. (Having certificates with the
keys will be convenient)

Also check in client_root_ca.pem so the inputs are all available.

BUG=630150

Review-Url: https://codereview.chromium.org/2390493002
Cr-Commit-Position: refs/heads/master@{#423029}
parent c301bd5c
......@@ -225,6 +225,11 @@ unit tests.
- client_3.key
- client_3.pk8
- client_3_ca.pem
- client_4.pem
- client_4.key
- client_4.pk8
- client_4_ca.pem
- client_root_ca.pem
This is a set of files used to unit test SSL client certificate
authentication.
- client_1_ca.pem and client_2_ca.pem are the certificates of
......@@ -239,17 +244,9 @@ unit tests.
to test wifi EAP-TLS authentication so it uses a different set
of X509v3 extensions. Specifically it includes two Subject
Alternative Name fields recognized by Chrome OS.
===== From net/data/ssl/scripts/generate-android-test-key.sh
- android-test-key-rsa.pem
- android-test-key-dsa.pem
- android-test-key-dsa-public.pem
- android-test-key-ecdsa.pem
- android-test-key-ecdsa-public.pem
This is a set of test RSA/DSA/ECDSA keys used by the Android-specific
unit test in net/android/keystore_unittest.c. They are used to verify
that the OpenSSL-specific wrapper for platform PrivateKey objects
works properly. See the generate-android-test-keys.sh script.
- client_4.pem is similar to client_2.pem but is a P-256 ECDSA key rather
than RSA.
- client_root_ca.pem is the CA certificate which signed client_*_ca.pem.
===== From net/data/ssl/scripts/generate-bad-eku-certs.sh
- eku-test-root.pem
......
-----BEGIN PUBLIC KEY-----
MIIDRjCCAjkGByqGSM44BAEwggIsAoIBAQDaJruwQmE1uMS2WnGl6L2UQy8iHmcs
74gWjym/8HVVdLXsC3wGoXGj0vj3Zr7DpgzrXBAWj2JILVApJgbFIbEFLAHcv6Bd
/3PjbRrva4PMQypul1o+j9IiFn2oemeVoCz77mz5aczfq7AoiMnMpdP501qcAOF2
gDR61r1BO8QRV9gkbOLpZHX101NB9GW+PKR7C+SJBN5rVVX2YgtxPe/Km5jFgIuS
P76eSvxGh1kUApFDhqEDh7Gck5Slt6lJDPj399MZC74XrrdbjrZbO/jt5TsLxRac
SvI0waX+49+UnHYb3cjPynMkBgLDl7itMluTm3nS8IkgKKgYPiEAXlKbAiEAu0Ip
TvTF7SfYMd5me26T40Fa2mAWYzWQLF10WvqheOcCggEAarH6R0LvhcWInCB1Yr4U
FA3QjynYWfxZZ6g+Tf/NxPQmVj720SEm+QfiZnrtSReTctBHJPkcrzHVU53LNVPx
CxvoVJUEdUhxWUV0o0PXBUfJZB3JdVXLGEu4MlXkwFh87+S3Y/+9yeMog3SaaqDA
cISNUQSWd+q5oiAeFdYiaTjY+qD+UGBChL/w8QSrr0BRiHF1EskKI3bFmqQzDjD7
9xm4wEGUiMvF+dHa50rjIzD+EyWvbkq3HonB7N7DDciVQ1V/qGmI6dvP5yf/Ml90
YDL8QIrXWP2p81FlvfU3QE9tjI6Bo5cjTavRU7WORN0it9B3pmvyL++E1EGd6hBr
qwOCAQUAAoIBAFR3VCzbhpt1iR/LpAlN2QIeQ4r2vkng6CJaxSQZBKBc1CjFHAXy
4QIThVpagyH+QM4I5pPIxkcXpFwEPHzuZow8/4DMA6IlPJ6R8ih1IgWGqzASzXYv
ZrlasBUjTS4no54L9PueAfZ2G0Rc9ePZ8snH9zsQVu5Rd2+zUkAUzR0jCT/zveeQ
t9c/px8356C4beEUAFoiXbSNMDruVdFemEwC5oCIwMBamPUxf//Og74Wg0W/0DNW
j8ffKNht51i+537vjBjVlLd/ETXARhAZg83jcqKKG0I4hECFZE5xBl0flU82pQAf
eKk0vNRiuAXKgxNor+pnpXC3qqMkxuwQBls=
-----END PUBLIC KEY-----
-----BEGIN DSA PRIVATE KEY-----
MIIDVQIBAAKCAQEA2ia7sEJhNbjEtlpxpei9lEMvIh5nLO+IFo8pv/B1VXS17At8
BqFxo9L492a+w6YM61wQFo9iSC1QKSYGxSGxBSwB3L+gXf9z420a72uDzEMqbpda
Po/SIhZ9qHpnlaAs++5s+WnM36uwKIjJzKXT+dNanADhdoA0eta9QTvEEVfYJGzi
6WR19dNTQfRlvjykewvkiQTea1VV9mILcT3vypuYxYCLkj++nkr8RodZFAKRQ4ah
A4exnJOUpbepSQz49/fTGQu+F663W462Wzv47eU7C8UWnEryNMGl/uPflJx2G93I
z8pzJAYCw5e4rTJbk5t50vCJICioGD4hAF5SmwIhALtCKU70xe0n2DHeZntuk+NB
WtpgFmM1kCxddFr6oXjnAoIBAGqx+kdC74XFiJwgdWK+FBQN0I8p2Fn8WWeoPk3/
zcT0JlY+9tEhJvkH4mZ67UkXk3LQRyT5HK8x1VOdyzVT8Qsb6FSVBHVIcVlFdKND
1wVHyWQdyXVVyxhLuDJV5MBYfO/kt2P/vcnjKIN0mmqgwHCEjVEElnfquaIgHhXW
Imk42Pqg/lBgQoS/8PEEq69AUYhxdRLJCiN2xZqkMw4w+/cZuMBBlIjLxfnR2udK
4yMw/hMlr25Ktx6Jwezeww3IlUNVf6hpiOnbz+cn/zJfdGAy/ECK11j9qfNRZb31
N0BPbYyOgaOXI02r0VO1jkTdIrfQd6Zr8i/vhNRBneoQa6sCggEAVHdULNuGm3WJ
H8ukCU3ZAh5Diva+SeDoIlrFJBkEoFzUKMUcBfLhAhOFWlqDIf5Azgjmk8jGRxek
XAQ8fO5mjDz/gMwDoiU8npHyKHUiBYarMBLNdi9muVqwFSNNLiejngv0+54B9nYb
RFz149nyycf3OxBW7lF3b7NSQBTNHSMJP/O955C31z+nHzfnoLht4RQAWiJdtI0w
Ou5V0V6YTALmgIjAwFqY9TF//86DvhaDRb/QM1aPx98o2G3nWL7nfu+MGNWUt38R
NcBGEBmDzeNyooobQjiEQIVkTnEGXR+VTzalAB94qTS81GK4BcqDE2iv6melcLeq
oyTG7BAGWwIgUF1cgjzMuvW665RmAumSL2vvkRuNm54i8cHSq53ZVq8=
-----END DSA PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJH4uX5l3CYLPIQ7tXxBjtPZN7HVf
l4uyPAs6VCPitxLjEcKq3w/wwnPAbhbXN7bnC6lq1Yro/5vlpa1RGB46yQ==
-----END PUBLIC KEY-----
-----BEGIN EC PARAMETERS-----
BggqhkjOPQMBBw==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIFb6/5kje8LB6bKDjQbfr2d4wfvLjy+SNs7j4J1eEF+FoAoGCCqGSM49
AwEHoUQDQgAEJH4uX5l3CYLPIQ7tXxBjtPZN7HVfl4uyPAs6VCPitxLjEcKq3w/w
wnPAbhbXN7bnC6lq1Yro/5vlpa1RGB46yQ==
-----END EC PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAtGeaaS0gTqtgxhVXHEvwq04nAj8G0VCC8QjJW1ULVA576lhy
3IfdP3CxSLUYaJ4QNlXswDkbV8U8VPwresHqd1OTcCII774hLNFw7QtTmi1dM3rL
kOHApeCUa32VzZSuzCyu9f2/T4HvEH367GDTIxk1NEoXKSuehjMUFiqmtJEZjHSK
agq3p8NLTP/WpMm1WfEg5QRBQaQ82hOYN8CDaRSOW2GuHw+qZAtA7n033yX8cu3H
khPT5INk04/byZVDMNK1hbf90y+0XeZRZAKZ9rklMnz3jPJvLLsVwSMexJnRbe/G
cQyE9V1jHN9aGeBlm+9xvv3VjddNhaxhYLDYuQIDAQABAoIBAF5MCRoQzGJSkjL3
1KCl0Ra5swoph5bBTrBOt3FV8qXtLDhCI0fCfJM8hG5MuoV0mWTNZQLU1sX6Ap8p
cFCqK7RTqy1hnOozp4OVtkExOnHMZHsUJHOGjPwnd2z4J+VdYkC22n0aNXWJpTwp
nY8QzUv7USQT1ide9W2QJV+wy5J1pQt4U/TH44FD6ceYXzEKCwHb1FXK4YOS0xgR
mW3gKFdHAYwk6OTyJOTLoa8zRL+8w7cTx2uNbf5EXeSMPjVl6SsVqJxOoBxVhi6M
Hj/pV4xs2sF2iqRlRZLpR5nOeJEwiELCymDgSzvSh0PZKAQzEvdYbH91vSEu6d+Q
gSGgkAECgYEA1wepPWDJyYPXPfemqeNrq7uVMwO3EI9IwlI+ouZ1sPHDEcQ3dNGw
5/QK7mgG++Wn+EfDkD1U26qGaGiWlCHTC/YlQ1tyrw3KqqV4QT+AIHJnr52PMUTu
vpSUJEfLMEboa8nsdHRHvScqqhijgI5fY4RJa20EVAjA0DRB/BSyEuECgYEA1scO
Q7s0jXWIfK/Y0z8WFfcHd1+xdIEueGqfI/Qx57Gsaen6mOKC6nESzq2GOiiXdX4X
NzdqPhZ1TWt+8FtSjDx61xFYldVf/0mSMn0skUSshKkBxZoKT65mmH2aRn9Mh1W7
PaIN/JCi20kaZqhbaNhPi/Dd6SK2CIJco9Dx2NkCgYEAjHYqrTdeWM5QeeAd9Hfk
S4f7TBmvKZgPVTBYThzw4Cbs39wmxZ58Suh1g4pclYtND7gBHWWS2vMnXWiEhDsc
G4IskTVZUtRVgOcaCLUsQwW4iVUIxoxa0A9KPfDP37dR96ctWFzkx8Cf9ACoPT/D
O8ScGRpba3FUUizwtXPnZsECgYA7ltjPU/ZdtRlcNtG6sosnJvWsWiF7CIhjInnq
2Mqr1PDYJfHAT0AxWZP1QdG2+yIimAxK5pYUidib1VJPz5aUkAco+ogQcjYDN19X
oMEnwNz4pYd3Uqi/uMyATIDsRE9wUQn1LKwiweJdYufvSZCrAzD2y6pWD6pfrAOV
89fV6QKBgQDADTt1uVUPm2XpAkRAgKT7hncHnMcVqXvQsrqbHlbC7SARTbX0lUga
eO18L/k3h5XGXSQbVeVHdo5EZOEqQkiGcQbOgtRosMp/+6XtPMyvMMxWRhjIcyAJ
5czOAcXm8iVv7m89w+QnK+zMsLkY0j0X70lDXq7Tui+VH9lXa4wjtw==
-----END RSA PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
......@@ -5,31 +5,31 @@ Certificate:
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=B CA
Validity
Not Before: Feb 28 20:27:03 2016 GMT
Not After : Feb 25 20:27:03 2026 GMT
Not Before: Oct 4 18:53:24 2016 GMT
Not After : Oct 2 18:53:24 2026 GMT
Subject: CN=Client Cert A
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:d1:bd:ac:fc:08:2f:dc:b2:1a:42:69:f2:68:e2:
32:e4:1c:4a:01:a8:32:e1:76:01:5e:94:9a:00:89:
05:32:22:ac:96:97:63:bb:60:73:e7:a4:91:fe:4e:
04:7b:a1:e9:73:37:3b:7f:90:b4:5c:1f:cf:4c:fd:
3b:33:07:ac:ea:c8:b4:c2:e1:aa:a6:bf:32:8b:d2:
97:83:fe:32:f6:2d:60:6e:71:1d:16:5c:8b:e3:03:
7c:e8:46:e1:7f:c7:ce:be:ad:81:f7:b4:76:fe:c6:
cd:8f:4a:cf:04:18:bf:c4:bf:eb:2c:fa:a4:f3:4c:
61:27:db:a7:ee:18:d1:e4:37:0e:ad:3b:03:e9:73:
ea:3c:fb:05:2d:cd:ff:e4:02:d8:5a:9a:8f:9c:20:
3b:36:ad:0f:a5:3f:bf:9a:2d:94:cb:79:4f:ea:e2:
07:0b:ba:d9:73:70:ae:62:99:ec:79:c7:2d:a3:3e:
4c:1e:ab:8f:24:8a:32:b4:90:8c:e5:d5:c3:e5:03:
97:75:cf:b0:bc:8d:4e:74:3e:3f:57:f6:c4:03:25:
33:77:da:3e:d4:61:18:ac:25:e7:98:40:5f:06:69:
a3:7c:49:ba:c3:23:ac:c7:80:ac:eb:44:bc:b1:0e:
df:ca:41:af:55:88:b7:97:00:d8:19:8b:e5:f1:f4:
a8:1f
00:9b:a6:17:82:7e:c4:ce:c9:02:25:ac:0d:b3:27:
df:1f:3e:4f:ff:08:32:2f:d2:e4:91:80:f3:c8:55:
ea:48:69:76:46:ce:ba:62:53:e4:7c:14:15:1c:02:
57:5d:c4:4c:64:be:86:27:4a:a2:df:67:29:5a:01:
2c:6d:74:a4:d7:30:22:c9:25:43:6b:23:5e:8f:e8:
d7:36:c4:11:a1:af:47:13:59:46:e9:2b:c7:e6:88:
e5:1a:18:91:57:da:fd:73:66:b9:e4:be:87:78:f9:
c6:dc:1f:41:4d:4d:67:3d:3d:35:7c:6a:a7:62:96:
94:c5:50:f1:ab:03:07:78:6d:71:75:fb:f1:48:4b:
eb:0e:c2:96:8d:83:92:c5:58:1b:5c:61:83:4f:08:
4c:84:0d:6b:17:55:fe:7b:dc:a2:99:a8:34:53:1b:
01:d4:88:4d:c5:de:58:08:95:51:c9:a5:53:9f:13:
3e:2a:65:1e:d0:e5:18:01:7b:8a:30:61:46:79:3d:
16:f7:d3:3b:60:0d:ef:ea:8d:99:6c:fc:b7:2d:9d:
3b:97:0b:8f:f3:0e:9e:82:4e:69:8c:3a:3c:bf:cd:
45:09:46:67:56:1b:ff:c4:75:6b:ff:52:47:f7:c5:
fe:85:e1:3a:78:2a:b8:c8:2f:8d:5e:b7:4b:88:b1:
b3:cb
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints: critical
......@@ -37,36 +37,36 @@ Certificate:
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
Signature Algorithm: sha256WithRSAEncryption
45:11:56:e6:62:5f:b6:46:d3:70:ac:37:ed:44:31:75:bf:64:
14:6d:c3:76:a2:e4:a7:40:31:f1:78:34:1d:4a:06:ac:2f:34:
f7:ba:2f:22:62:ed:11:c3:65:96:71:9d:03:57:97:b4:ce:d1:
8f:85:6a:bb:00:ed:01:d7:6d:1a:15:13:0e:63:ee:3e:6f:3b:
bd:43:61:45:91:0a:9c:ef:f7:ca:4e:f4:c3:cc:82:48:e7:0a:
cc:9c:5b:d4:7f:3c:ef:c6:1d:ce:1d:63:18:4a:cf:f0:82:2a:
b7:de:14:ca:78:71:2a:e8:9c:a4:dd:bb:42:9f:2d:18:71:e7:
32:73:7c:86:5c:7d:74:b2:2c:d4:7e:21:e5:86:f8:82:90:3b:
84:4a:4f:26:14:3c:03:0f:3a:96:64:5d:08:8a:9c:c5:6c:40:
c7:a0:8c:4b:96:6d:c6:43:1a:62:2e:81:15:e2:4f:0a:60:9a:
77:47:92:81:2c:5c:b1:33:a5:06:3f:3f:21:ef:69:88:3c:22:
69:d9:1b:8a:31:88:05:f7:55:03:bd:5c:ef:9d:89:ba:4d:fb:
1e:33:6f:9e:c0:a8:ab:0b:4d:06:3a:b6:7b:ac:47:05:be:dc:
67:29:2a:98:7f:87:24:a9:f3:5d:49:4d:58:f9:14:42:d6:78:
16:67:b2:21
19:9b:41:39:61:cf:f8:0f:62:98:43:1a:a4:fb:0b:71:f2:f0:
c4:b5:39:bb:dc:d1:d7:33:44:89:66:13:ff:0a:5a:66:02:74:
6a:8d:8a:dc:a0:e0:d0:cc:8d:5f:1c:c0:34:c6:58:02:76:3b:
b5:1a:81:a5:a7:a1:c5:81:14:52:0f:21:37:06:2d:dc:dc:9c:
d0:d1:98:03:ac:d3:b5:12:0b:f8:b4:84:d8:bc:be:4d:27:fa:
df:16:6e:dd:0a:33:b7:87:50:7e:fe:c6:8d:84:b2:2d:7f:58:
88:21:af:09:64:5e:4a:2d:f0:56:d4:3e:a3:dc:4c:aa:92:41:
04:c1:6e:56:46:d5:36:69:0d:2a:f6:f0:29:d3:7c:ac:b7:cf:
7f:18:bc:76:fa:8c:5a:76:81:67:db:b2:91:97:05:7d:14:da:
26:d5:67:fe:c5:d2:6a:2c:5f:f4:96:3a:e4:0e:f5:15:95:05:
57:de:b5:e5:96:b2:10:99:4a:b2:3a:ac:d2:ae:64:30:31:54:
f0:b9:9f:1d:56:e8:da:e9:4e:42:e3:26:3d:f7:8c:3e:9c:dd:
42:77:9d:0c:67:52:73:94:c4:73:42:c2:b7:96:a4:44:4a:d5:
e9:3d:b1:46:aa:38:0b:1f:7f:ae:01:c6:07:da:40:3b:c0:22:
61:c4:cb:80
-----BEGIN CERTIFICATE-----
MIIC0jCCAbqgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEQiBD
QTAeFw0xNjAyMjgyMDI3MDNaFw0yNjAyMjUyMDI3MDNaMBgxFjAUBgNVBAMMDUNs
aWVudCBDZXJ0IEEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDRvaz8
CC/cshpCafJo4jLkHEoBqDLhdgFelJoAiQUyIqyWl2O7YHPnpJH+TgR7oelzNzt/
kLRcH89M/TszB6zqyLTC4aqmvzKL0peD/jL2LWBucR0WXIvjA3zoRuF/x86+rYH3
tHb+xs2PSs8EGL/Ev+ss+qTzTGEn26fuGNHkNw6tOwPpc+o8+wUtzf/kAthamo+c
IDs2rQ+lP7+aLZTLeU/q4gcLutlzcK5imex5xy2jPkweq48kijK0kIzl1cPlA5d1
z7C8jU50Pj9X9sQDJTN32j7UYRisJeeYQF8GaaN8SbrDI6zHgKzrRLyxDt/KQa9V
iLeXANgZi+Xx9KgfAgMBAAGjLzAtMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYI
KwYBBQUHAwEGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQBFEVbmYl+2RtNw
rDftRDF1v2QUbcN2ouSnQDHxeDQdSgasLzT3ui8iYu0Rw2WWcZ0DV5e0ztGPhWq7
AO0B120aFRMOY+4+bzu9Q2FFkQqc7/fKTvTDzIJI5wrMnFvUfzzvxh3OHWMYSs/w
giq33hTKeHEq6Jyk3btCny0Ycecyc3yGXH10sizUfiHlhviCkDuESk8mFDwDDzqW
ZF0IipzFbEDHoIxLlm3GQxpiLoEV4k8KYJp3R5KBLFyxM6UGPz8h72mIPCJp2RuK
MYgF91UDvVzvnYm6TfseM2+ewKirC00GOrZ7rEcFvtxnKSqYf4ckqfNdSU1Y+RRC
1ngWZ7Ih
QTAeFw0xNjEwMDQxODUzMjRaFw0yNjEwMDIxODUzMjRaMBgxFjAUBgNVBAMMDUNs
aWVudCBDZXJ0IEEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbpheC
fsTOyQIlrA2zJ98fPk//CDIv0uSRgPPIVepIaXZGzrpiU+R8FBUcAlddxExkvoYn
SqLfZylaASxtdKTXMCLJJUNrI16P6Nc2xBGhr0cTWUbpK8fmiOUaGJFX2v1zZrnk
vod4+cbcH0FNTWc9PTV8aqdilpTFUPGrAwd4bXF1+/FIS+sOwpaNg5LFWBtcYYNP
CEyEDWsXVf573KKZqDRTGwHUiE3F3lgIlVHJpVOfEz4qZR7Q5RgBe4owYUZ5PRb3
0ztgDe/qjZls/LctnTuXC4/zDp6CTmmMOjy/zUUJRmdWG//EdWv/Ukf3xf6F4Tp4
KrjIL41et0uIsbPLAgMBAAGjLzAtMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYI
KwYBBQUHAwEGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQAZm0E5Yc/4D2KY
Qxqk+wtx8vDEtTm73NHXM0SJZhP/ClpmAnRqjYrcoODQzI1fHMA0xlgCdju1GoGl
p6HFgRRSDyE3Bi3c3JzQ0ZgDrNO1Egv4tITYvL5NJ/rfFm7dCjO3h1B+/saNhLIt
f1iIIa8JZF5KLfBW1D6j3EyqkkEEwW5WRtU2aQ0q9vAp03yst89/GLx2+oxadoFn
27KRlwV9FNom1Wf+xdJqLF/0ljrkDvUVlQVX3rXllrIQmUqyOqzSrmQwMVTwuZ8d
Vuja6U5C4yY994w+nN1Cd50MZ1JzlMRzQsK3lqREStXpPbFGqjgLH3+uAcYH2kA7
wCJhxMuA
-----END CERTIFICATE-----
......@@ -5,31 +5,31 @@ Certificate:
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=C Root CA
Validity
Not Before: Feb 28 20:27:03 2016 GMT
Not After : Feb 25 20:27:03 2026 GMT
Not Before: Oct 4 18:53:24 2016 GMT
Not After : Oct 2 18:53:24 2026 GMT
Subject: CN=B CA
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:bb:12:09:89:83:8a:9d:83:1a:48:c5:c7:0e:f2:
93:3d:ba:25:28:c4:2e:49:7a:02:b9:58:8c:52:77:
69:3f:d2:0a:1f:2a:6d:2e:20:96:7e:d1:1f:c0:8f:
05:de:fc:a0:57:5f:84:82:90:af:0b:59:df:fa:b6:
d7:29:03:f4:10:12:de:a1:de:d9:87:5c:25:f9:bc:
fe:45:80:cb:90:ef:5e:4e:8d:5d:4e:2a:5f:7d:f8:
2a:87:c1:00:4a:60:74:0f:e2:80:41:6a:d4:fd:65:
1c:0b:88:7d:90:a9:31:17:d3:fa:2e:56:a2:15:6c:
1a:2f:1f:fc:d8:29:46:f5:5a:30:e3:4b:35:f8:30:
e7:b9:b3:d6:56:ed:15:e0:44:21:29:97:d2:46:ec:
b8:9c:45:42:3f:c1:c2:18:b9:ff:41:c0:11:71:bc:
7b:bc:cd:e1:c1:31:d3:23:d1:be:63:80:4d:17:55:
6f:ff:1d:5b:6a:70:38:74:49:ab:d4:79:33:43:54:
90:8b:13:4a:72:fb:e8:df:f3:f2:14:40:1c:cb:15:
dc:8b:9d:0b:96:1d:ec:65:d6:d4:01:ae:f5:af:a2:
29:4f:90:e3:17:19:0a:88:f4:0c:2f:7d:b4:be:15:
2a:e8:eb:57:59:00:7a:ab:0c:73:3e:7f:74:ac:e2:
eb:e7
00:a5:56:c7:9d:32:e7:3d:17:ac:59:ca:f4:07:65:
25:3e:65:7c:d9:3d:f4:0e:73:eb:b9:0b:a1:7b:4b:
69:ab:ee:a3:50:49:2f:25:33:4d:2d:ac:00:32:17:
34:0d:c9:bf:83:7d:b4:e5:d5:82:89:6f:ad:41:78:
56:1d:05:bc:48:cc:0c:43:95:81:e3:e8:12:2d:67:
74:68:12:61:8e:03:24:88:2c:57:28:8e:3d:10:77:
da:dc:78:b6:b4:72:92:56:0e:4a:0c:c6:f7:0a:44:
f5:56:5d:72:7a:a8:1d:bc:16:e8:95:25:4d:50:b6:
2e:22:05:fd:d5:20:47:a4:32:37:52:38:61:90:9a:
aa:40:a8:db:91:80:00:89:e6:2c:17:5d:7c:5f:6f:
2d:b2:b7:cf:71:a1:55:11:d8:fd:3b:9b:61:8f:1c:
80:dd:da:90:8c:82:04:63:36:7c:b1:28:38:56:bc:
6e:c0:b3:b9:4e:96:2b:3f:62:2a:e5:5f:f1:73:3c:
53:a8:5f:03:d0:63:31:36:ac:00:61:30:ab:ad:d9:
aa:ab:5d:22:83:28:cc:f1:f7:88:f5:9a:be:57:c5:
e1:46:da:a3:88:55:a7:3c:f9:1c:17:bb:72:01:1d:
dd:8e:a0:b0:a3:d1:91:74:ae:94:58:c0:f5:30:63:
5c:91
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints: critical
......@@ -37,35 +37,35 @@ Certificate:
X509v3 Key Usage: critical
Certificate Sign, CRL Sign
Signature Algorithm: sha256WithRSAEncryption
82:1e:66:21:1e:36:15:96:43:c6:38:0f:e0:06:0f:0a:94:51:
e1:bc:36:30:9b:2a:b5:d0:06:51:e0:e7:06:7c:c5:fb:45:6a:
23:f5:0e:9f:d4:01:ec:e6:c7:62:cd:6b:37:66:bb:0a:d8:07:
c9:66:dc:55:53:c9:a3:c3:4c:a1:06:20:f4:b8:c0:92:87:82:
a1:f5:40:f0:e1:a8:d9:bc:e5:ec:bb:4c:4b:48:f6:86:23:b0:
d8:a6:fd:16:fe:88:69:08:00:c5:da:c6:de:7c:4b:3c:5b:8e:
f3:f4:90:ca:f5:25:f2:48:65:b8:9c:f6:fc:9e:37:02:2c:a4:
c1:48:a4:fd:c5:07:cc:b0:ca:ed:13:d2:15:ad:09:08:0b:e0:
9e:3b:9e:28:02:1e:93:ae:e7:c7:5e:3f:cf:1f:4b:f3:72:cf:
f7:f2:19:55:8e:67:be:9b:5a:15:b0:80:cd:cf:dd:7f:79:7d:
0d:dd:ee:81:4f:47:f6:d5:87:46:15:f8:27:fc:eb:52:0d:c2:
99:68:91:78:17:43:7f:d3:09:0f:87:35:77:80:31:69:f7:24:
b5:af:5c:5c:24:f2:8c:24:f5:da:bf:91:01:9d:9d:d1:a0:cb:
72:93:11:6e:1c:b4:f5:f9:18:d8:5f:dc:b2:7d:43:b7:4b:8e:
2e:11:79:0e
41:1f:59:af:b3:83:87:87:bc:b3:2d:62:66:35:76:21:f2:bb:
e5:d4:87:23:a3:ab:4f:2b:ef:d0:ee:53:6f:17:b0:d4:6a:93:
8e:74:71:7b:c5:36:f4:7b:87:3a:ab:84:b0:40:c5:3b:a0:e7:
a1:18:e6:3f:8d:8d:a8:49:b5:da:c7:4b:26:e4:ea:b9:2d:85:
b2:1d:01:70:bb:78:08:a6:c7:11:6b:0a:6f:5d:b0:d7:b5:72:
ec:51:46:26:bc:7e:e1:bd:1e:5e:d6:44:cf:d0:1b:55:ef:a9:
5e:16:73:05:59:9f:ff:00:2e:5b:4e:29:7b:c4:2e:5c:46:9c:
56:0a:78:d9:0b:10:83:9e:ff:8a:e3:57:ec:f1:d1:a3:85:26:
2f:97:e6:d0:6f:5e:c8:cb:53:e7:28:64:ab:27:14:f4:b2:4b:
52:80:e2:d1:ef:50:ba:db:34:5c:95:a4:3f:ac:5b:eb:15:c5:
d6:cb:4b:76:fb:f6:cd:2f:d9:ef:d4:cb:1c:85:52:8b:f2:2b:
1b:ce:e3:0f:ed:07:44:11:8b:d8:b8:5c:41:ab:e1:36:0d:7e:
3f:86:ff:0c:0f:f5:5e:ff:f6:b8:0a:ac:f0:3b:5d:c5:b7:ef:
f1:80:7c:26:b9:a2:ee:17:a8:e7:cb:c4:f4:5c:51:ff:57:53:
ee:a2:d3:66
-----BEGIN CERTIFICATE-----
MIICwjCCAaqgAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwFDESMBAGA1UEAwwJQyBS
b290IENBMB4XDTE2MDIyODIwMjcwM1oXDTI2MDIyNTIwMjcwM1owDzENMAsGA1UE
AwwEQiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALsSCYmDip2D
GkjFxw7ykz26JSjELkl6ArlYjFJ3aT/SCh8qbS4gln7RH8CPBd78oFdfhIKQrwtZ
3/q21ykD9BAS3qHe2YdcJfm8/kWAy5DvXk6NXU4qX334KofBAEpgdA/igEFq1P1l
HAuIfZCpMRfT+i5WohVsGi8f/NgpRvVaMONLNfgw57mz1lbtFeBEISmX0kbsuJxF
Qj/Bwhi5/0HAEXG8e7zN4cEx0yPRvmOATRdVb/8dW2pwOHRJq9R5M0NUkIsTSnL7
6N/z8hRAHMsV3IudC5Yd7GXW1AGu9a+iKU+Q4xcZCoj0DC99tL4VKujrV1kAeqsM
cz5/dKzi6+cCAwEAAaMjMCEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AQYwDQYJKoZIhvcNAQELBQADggEBAIIeZiEeNhWWQ8Y4D+AGDwqUUeG8NjCbKrXQ
BlHg5wZ8xftFaiP1Dp/UAezmx2LNazdmuwrYB8lm3FVTyaPDTKEGIPS4wJKHgqH1
QPDhqNm85ey7TEtI9oYjsNim/Rb+iGkIAMXaxt58SzxbjvP0kMr1JfJIZbic9vye
NwIspMFIpP3FB8ywyu0T0hWtCQgL4J47nigCHpOu58deP88fS/Nyz/fyGVWOZ76b
WhWwgM3P3X95fQ3d7oFPR/bVh0YV+Cf861INwplokXgXQ3/TCQ+HNXeAMWn3JLWv
XFwk8owk9dq/kQGdndGgy3KTEW4ctPX5GNhf3LJ9Q7dLji4ReQ4=
b290IENBMB4XDTE2MTAwNDE4NTMyNFoXDTI2MTAwMjE4NTMyNFowDzENMAsGA1UE
AwwEQiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKVWx50y5z0X
rFnK9AdlJT5lfNk99A5z67kLoXtLaavuo1BJLyUzTS2sADIXNA3Jv4N9tOXVgolv
rUF4Vh0FvEjMDEOVgePoEi1ndGgSYY4DJIgsVyiOPRB32tx4trRyklYOSgzG9wpE
9VZdcnqoHbwW6JUlTVC2LiIF/dUgR6QyN1I4YZCaqkCo25GAAInmLBddfF9vLbK3
z3GhVRHY/TubYY8cgN3akIyCBGM2fLEoOFa8bsCzuU6WKz9iKuVf8XM8U6hfA9Bj
MTasAGEwq63ZqqtdIoMozPH3iPWavlfF4Ubao4hVpzz5HBe7cgEd3Y6gsKPRkXSu
lFjA9TBjXJECAwEAAaMjMCEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AQYwDQYJKoZIhvcNAQELBQADggEBAEEfWa+zg4eHvLMtYmY1diHyu+XUhyOjq08r
79DuU28XsNRqk450cXvFNvR7hzqrhLBAxTug56EY5j+NjahJtdrHSybk6rkthbId
AXC7eAimxxFrCm9dsNe1cuxRRia8fuG9Hl7WRM/QG1XvqV4WcwVZn/8ALltOKXvE
LlxGnFYKeNkLEIOe/4rjV+zx0aOFJi+X5tBvXsjLU+coZKsnFPSyS1KA4tHvULrb
NFyVpD+sW+sVxdbLS3b79s0v2e/UyxyFUovyKxvO4w/tB0QRi9i4XEGr4TYNfj+G
/wwP9V7/9rgKrPA7XcW37/GAfCa5ou4XqOfLxPRcUf9XU+6i02Y=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAzCwk5vzkVe8k+mJANot7xnoPsDl6LrCua/6yW3Zub4gORzVg
85JV5hniNGixW+rRKpd4FYG0rUDmZA/lXa2Paw94PqWIU9+xg7C6i2iSR6uEHMo7
E/Fa0wasup8Ja13LlT/CPPVYhGlb/6fbiZfWWBAMAonnVIGtV6S6R/QTNb9Nl/Z8
u45JWjGeopWyHHt6FB2fZFmZAALl2CHYM5CsbZUY+NIkrm5F0eTin0xc4t2L/zuB
iYRom+vPA8vlfVAAOtyVplC3+PSkVJqXn8YQ31QkYrfpaefm6i3hfJnVkCYlpbBm
9Aux4+WcLTh5MMsYXCh42pv2lBA6ho+TG75uMwIDAQABAoIBAB18rqOxmGSU0jlb
ITz/bhPfIw7nbi76E2bDdQzikNaIxs8f9W2YD9HYoSPCjwLgae8FyzEH94kiG2QO
K6kY3OKwbERX8dVzNBb52icyJhY1vjHOPzQFIoHhr+aP+3NHK5TVjX7yTCNrd/73
RiycAjfbsXBYbFF3HQrQXprvtCqJwVeH2YP33uznn6zjxfNcpVmv2D8EE431M7S7
3eC9TT5q3b78hJcm6N4nbVFAA1E/zZuVTqJ5xuiBKPG03FqwpVmmOeKX3BU57EXy
iDxXFxdiAen/eEwEoUuBuTGWtTUpUfvv8JyibM6FYuQYxggP7szgnvkDVriK1vZ0
krMskhkCgYEA7xxeT2+qd1BpEBOUcGVMPJlSlFNmyH5vg/GSfbY8BWYKU6YQ2wca
dkhk9q+OGgMUMZjdxMtrFFhICxn4QUmpPPGX2QRKALgthkSZc7B0PacgL45SHa10
2mJbeX3e7zjUtjb0Jk6CIFQ1CRE9TS+0/+3ZlakSfm6tuIcaqIGxB8UCgYEA2pgE
AxunlvJRnY5KICxxusCfja4VOtql6zFpHpdRaELMkl7kWiJZyZyx8iOVWc2Nt+QV
PtFKi1nzn3wTQR0YHaRtq+w5HPl7UXSSDabMOmsMda53o47gjcjXqVUKLhmw03/i
ng0uOAmBGJLA76qy+MqAAkfJy1iK5wKwF1E8BZcCgYA+Jfd1WibKgEHuhchNNmcM
USWfm9XZQtOlTcKvnhAXrx/8AevbogsEt2hWneanaCl1grARmHWqgg+nowZdodG1
H25CX9UEPtrGTUo9QZ3U8H1zHuDFCfKXWH1CJK8vKmxPOBVZZ4p28KwgQTTXvRCk
fKPTPHCsIARTM/p/1cW3qQKBgGuGLSsONmCkr4rNzB6JXiQbziAWCnFZzhWjx255
xlx/xzsUnETN8taeUlWmNTfoSZa0BdNRhdaIF7NSh/IWip9CG4Re/TUIbyWBLrqy
WnE96PIWMNluVXzI13R+1TQaBQX0ORe/qgV8f1kEDw2VLNX+XftBLrzsv96kTtQZ
bGnfAoGAHrVqcFGCpO/0tVOm6sy6jOahQhKkN0Qz8V5pbGt87M0WX1CtkrXgk6zh
k3Ej9wRLvsyWuJfcLl7b7j6T234Y9GcfCO11ohd9T+3201ixMyjKnRkJOFM/s7VJ
9Y7EWGHTwQJBIrRBcMeCujTQDKCLzYLghsYo738O/edxDQwVHck=
MIIEowIBAAKCAQEA68lLXfm1qfzrGYiXtXmYfa/gwbcSGLTcu3VTD9Cow2A465PP
wp6bs6Qu3eFgwr7mceQ72pU410+zEwxo1bqHorcc1qhemDBLEaL5cu1KEyw3GN97
kJTxOMR4zahR8IvDpnYRzjTtmZOuLUpZ7Lo3oOouLDQ6OpoOw9mLu2I7RtVc8cQC
iyOnQVWKeSbDQ/+or/m3DUbQq+Wyg9TTjDWAAbqxu3mP5Jf8nd8I/xAbRxe0jBSW
8hiZ++Yxjo/kLVkI+s4TBFVV3dau2b5oHGMsFoBFCaTIyE+4KZAKZAdptvxuh1ic
F/GhSZy3+H1w122uYmq7KA7pG32sBaQUl0iwnQIDAQABAoIBAGNOKlHwI9TuUs40
O0ERb2owMwcjZZnGQtko9szIYuu2kQKXBH/BcW5djeehTrF22XPKXnMXOhNk29T/
+v9ZSlr7qEe4Le8HF/bbnxgKXJJqouH07gPc1yPDi+WCKNCY7NQlEia5IAD4s/kb
QXh0jY1WVBAGByg7TlCqRTGsk66myy3qA7Ii65Y1upiGFfDczpQL5mUKaBTjz3HC
/DMr4GRuFOw5NkhELu9SOENZGSwuzpk6gNDVYDXJ+uo9bvH9EIB9S1KIoAoa+yr2
L9LUcG9vwOuMNh7qN66nAGxGzoI8qh6kHVgfyTcF11NwaFutSIsGQTRKeANxiq2I
IkbT3EECgYEA/QGxkv9iC/oJfe9gWlUeEFJsqlmLp2ii0HrH9KnywT5sgicd0//3
eCU1KI8LygABbHb3hmFQRAwf2gFq0u1MBqXQQ4nVsrNtPVzNGGOkfk5T9DIu4vBN
L9Qw29ULYDbaHaC1BFymwnMsOOsKctiMmsiklhyCWBczcHmE+gn+6ykCgYEA7pNx
on/qgrCp9P8mMdBqjOmc5740Pbqu5JShYJkja1fv7IVLhGEuifdwGWge6ZfjaXPV
wq7P7mbXa2Dreqc0LkxUrdAffZitsXckhNswSDToZzf7JB9GAnkcMKlLcJHbO0Kf
jJALGpPknLg8XbpqsT+/GAS1GBNbL4Rz/MovPFUCgYBkJEt494SDYRBovFrS5mXj
5/wC4TaZqJzpD/AdMzdWrbKdQYZY5zO4ZmHID/aGmcH2gJAwrEvs4y+oRm9V1X8G
EpOAaAohlUtjwlubj7UIGVC5kzNjt+GVUNOV75l1F8D1gSqk81c+GAAk90NHedcN
XOVoVRhybZx6pF6x6UrxIQKBgDc8EbIClYO+bQrYy7n6u8B2Eaqhoays/PLU6mvX
6Jhgmp6S2cIDUegFToHDVmzUioUOmW3iVSenzbYBkWMrNOyHJY+8QJ4ubABLSjws
FwiQn0HOdymMyAOokHs/psSgMDaPHStI6hk0JliWWvuEPlFdJdvksxyo1pKwwr3C
/Z6lAoGBAIr0S/O5rYrEHchJ6yr+YtJa6vIowOSUvijG2L4ghVY63v/Ke5vzwmOZ
wuPh0D6atpKPIq5p3eGlgq12cJHGwaybVP9C3C9vD+MlhMttOy7Ez9aVFILE9nt/
hSrOTRwYYXLs0txl7K40Ja2hjIRXw1TQU37V4wADNa+GhPpUfg9y
-----END RSA PRIVATE KEY-----
......@@ -5,31 +5,31 @@ Certificate:
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=E CA
Validity
Not Before: Feb 28 20:27:03 2016 GMT
Not After : Feb 25 20:27:03 2026 GMT
Not Before: Oct 4 18:53:24 2016 GMT
Not After : Oct 2 18:53:24 2026 GMT
Subject: CN=Client Cert D
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:cc:2c:24:e6:fc:e4:55:ef:24:fa:62:40:36:8b:
7b:c6:7a:0f:b0:39:7a:2e:b0:ae:6b:fe:b2:5b:76:
6e:6f:88:0e:47:35:60:f3:92:55:e6:19:e2:34:68:
b1:5b:ea:d1:2a:97:78:15:81:b4:ad:40:e6:64:0f:
e5:5d:ad:8f:6b:0f:78:3e:a5:88:53:df:b1:83:b0:
ba:8b:68:92:47:ab:84:1c:ca:3b:13:f1:5a:d3:06:
ac:ba:9f:09:6b:5d:cb:95:3f:c2:3c:f5:58:84:69:
5b:ff:a7:db:89:97:d6:58:10:0c:02:89:e7:54:81:
ad:57:a4:ba:47:f4:13:35:bf:4d:97:f6:7c:bb:8e:
49:5a:31:9e:a2:95:b2:1c:7b:7a:14:1d:9f:64:59:
99:00:02:e5:d8:21:d8:33:90:ac:6d:95:18:f8:d2:
24:ae:6e:45:d1:e4:e2:9f:4c:5c:e2:dd:8b:ff:3b:
81:89:84:68:9b:eb:cf:03:cb:e5:7d:50:00:3a:dc:
95:a6:50:b7:f8:f4:a4:54:9a:97:9f:c6:10:df:54:
24:62:b7:e9:69:e7:e6:ea:2d:e1:7c:99:d5:90:26:
25:a5:b0:66:f4:0b:b1:e3:e5:9c:2d:38:79:30:cb:
18:5c:28:78:da:9b:f6:94:10:3a:86:8f:93:1b:be:
6e:33
00:eb:c9:4b:5d:f9:b5:a9:fc:eb:19:88:97:b5:79:
98:7d:af:e0:c1:b7:12:18:b4:dc:bb:75:53:0f:d0:
a8:c3:60:38:eb:93:cf:c2:9e:9b:b3:a4:2e:dd:e1:
60:c2:be:e6:71:e4:3b:da:95:38:d7:4f:b3:13:0c:
68:d5:ba:87:a2:b7:1c:d6:a8:5e:98:30:4b:11:a2:
f9:72:ed:4a:13:2c:37:18:df:7b:90:94:f1:38:c4:
78:cd:a8:51:f0:8b:c3:a6:76:11:ce:34:ed:99:93:
ae:2d:4a:59:ec:ba:37:a0:ea:2e:2c:34:3a:3a:9a:
0e:c3:d9:8b:bb:62:3b:46:d5:5c:f1:c4:02:8b:23:
a7:41:55:8a:79:26:c3:43:ff:a8:af:f9:b7:0d:46:
d0:ab:e5:b2:83:d4:d3:8c:35:80:01:ba:b1:bb:79:
8f:e4:97:fc:9d:df:08:ff:10:1b:47:17:b4:8c:14:
96:f2:18:99:fb:e6:31:8e:8f:e4:2d:59:08:fa:ce:
13:04:55:55:dd:d6:ae:d9:be:68:1c:63:2c:16:80:
45:09:a4:c8:c8:4f:b8:29:90:0a:64:07:69:b6:fc:
6e:87:58:9c:17:f1:a1:49:9c:b7:f8:7d:70:d7:6d:
ae:62:6a:bb:28:0e:e9:1b:7d:ac:05:a4:14:97:48:
b0:9d
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints: critical
......@@ -37,36 +37,36 @@ Certificate:
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
Signature Algorithm: sha256WithRSAEncryption
a0:17:a0:22:a1:59:44:4f:64:6f:0a:1a:f3:a9:69:82:50:60:
24:94:46:56:88:88:72:82:5f:d9:aa:bc:78:36:85:a2:90:d9:
38:d3:32:26:93:f3:82:ca:9b:b6:f9:2d:1b:ef:8d:d2:5b:84:
68:73:9e:ef:d2:03:71:ff:90:ac:47:e5:9b:e2:a4:12:20:f5:
69:29:7d:90:4a:80:93:b6:38:66:dd:93:51:ac:29:13:96:3c:
5d:3d:84:70:46:81:2f:ab:90:ec:e1:1c:23:a3:45:dc:95:71:
73:6e:33:08:fb:02:05:a3:7e:d4:bd:a1:b7:06:07:a3:19:0a:
35:b7:a2:a9:e1:45:56:9f:e0:23:35:34:f4:bb:e7:78:f7:be:
1b:07:cb:58:c7:8d:f5:16:41:d9:66:07:a2:16:29:a1:e7:ed:
7b:dd:38:9b:74:2f:3a:44:d4:df:46:ef:59:ef:1f:15:43:78:
6f:36:fb:a4:3d:88:0b:e4:db:af:f7:ec:3a:66:4c:72:9e:f3:
d1:e4:27:a5:a9:ba:19:69:26:d6:2f:97:f0:35:0b:75:14:70:
19:53:a4:c3:19:31:0b:19:ad:36:59:d0:51:26:2c:f9:88:a2:
82:9b:ad:67:bd:94:f8:af:50:f1:56:47:df:c9:27:dc:bf:af:
77:b8:de:75
9f:d0:6e:8b:08:58:16:b5:78:3f:05:bb:59:bc:cf:74:1c:88:
b0:7e:10:c5:71:9d:b5:08:05:59:ca:f0:c8:64:49:96:82:8b:
14:0c:da:9d:be:a2:8b:37:df:e1:69:bc:8e:f4:be:80:3f:f9:
8a:1d:7a:70:37:3c:18:a0:92:27:10:e3:74:ca:fa:b8:db:f2:
c6:a5:32:66:85:88:29:3a:4e:64:95:85:b4:43:37:8a:6d:48:
f4:12:2f:b2:d0:66:c9:b7:88:ad:b8:a7:1f:97:59:bf:d9:0d:
d6:ce:ff:5f:75:2f:d2:e0:69:c8:d6:17:b9:fd:3c:ed:fd:1f:
47:14:f8:ef:0b:33:2a:1c:14:25:d1:82:90:d3:67:1b:ea:b0:
f7:5b:78:a9:9d:28:1b:d3:cd:8d:bd:30:c2:7e:12:32:dd:83:
cc:57:47:b3:e7:0c:79:b5:f8:a0:f4:f0:d8:29:1b:9b:fb:2f:
a9:1c:cb:a9:84:14:29:c7:23:b8:85:88:d9:78:5f:c7:a4:c6:
1b:bd:6e:70:2e:a2:be:31:98:c7:9c:35:1d:44:59:f8:31:83:
87:ee:a9:c7:ab:f5:6f:e6:8a:cc:49:5f:23:fd:7c:a4:61:01:
9b:51:d8:b0:85:9a:bf:1d:9d:62:3e:b0:7c:e0:5e:57:ed:69:
3c:f3:8c:54
-----BEGIN CERTIFICATE-----
MIIC0jCCAbqgAwIBAgICEAIwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwERSBD
QTAeFw0xNjAyMjgyMDI3MDNaFw0yNjAyMjUyMDI3MDNaMBgxFjAUBgNVBAMMDUNs
aWVudCBDZXJ0IEQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMLCTm
/ORV7yT6YkA2i3vGeg+wOXousK5r/rJbdm5viA5HNWDzklXmGeI0aLFb6tEql3gV
gbStQOZkD+VdrY9rD3g+pYhT37GDsLqLaJJHq4QcyjsT8VrTBqy6nwlrXcuVP8I8
9ViEaVv/p9uJl9ZYEAwCiedUga1XpLpH9BM1v02X9ny7jklaMZ6ilbIce3oUHZ9k
WZkAAuXYIdgzkKxtlRj40iSubkXR5OKfTFzi3Yv/O4GJhGib688Dy+V9UAA63JWm
ULf49KRUmpefxhDfVCRit+lp5+bqLeF8mdWQJiWlsGb0C7Hj5ZwtOHkwyxhcKHja
m/aUEDqGj5Mbvm4zAgMBAAGjLzAtMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYI
KwYBBQUHAwEGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQCgF6AioVlET2Rv
ChrzqWmCUGAklEZWiIhygl/Zqrx4NoWikNk40zImk/OCypu2+S0b743SW4Roc57v
0gNx/5CsR+Wb4qQSIPVpKX2QSoCTtjhm3ZNRrCkTljxdPYRwRoEvq5Ds4Rwjo0Xc
lXFzbjMI+wIFo37UvaG3BgejGQo1t6Kp4UVWn+AjNTT0u+d4974bB8tYx431FkHZ
ZgeiFimh5+173TibdC86RNTfRu9Z7x8VQ3hvNvukPYgL5Nuv9+w6ZkxynvPR5Cel
qboZaSbWL5fwNQt1FHAZU6TDGTELGa02WdBRJiz5iKKCm61nvZT4r1DxVkffySfc
v693uN51
QTAeFw0xNjEwMDQxODUzMjRaFw0yNjEwMDIxODUzMjRaMBgxFjAUBgNVBAMMDUNs
aWVudCBDZXJ0IEQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDryUtd
+bWp/OsZiJe1eZh9r+DBtxIYtNy7dVMP0KjDYDjrk8/CnpuzpC7d4WDCvuZx5Dva
lTjXT7MTDGjVuoeitxzWqF6YMEsRovly7UoTLDcY33uQlPE4xHjNqFHwi8OmdhHO
NO2Zk64tSlnsujeg6i4sNDo6mg7D2Yu7YjtG1VzxxAKLI6dBVYp5JsND/6iv+bcN
RtCr5bKD1NOMNYABurG7eY/kl/yd3wj/EBtHF7SMFJbyGJn75jGOj+QtWQj6zhME
VVXd1q7ZvmgcYywWgEUJpMjIT7gpkApkB2m2/G6HWJwX8aFJnLf4fXDXba5iarso
DukbfawFpBSXSLCdAgMBAAGjLzAtMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYI
KwYBBQUHAwEGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQCf0G6LCFgWtXg/
BbtZvM90HIiwfhDFcZ21CAVZyvDIZEmWgosUDNqdvqKLN9/habyO9L6AP/mKHXpw
NzwYoJInEON0yvq42/LGpTJmhYgpOk5klYW0QzeKbUj0Ei+y0GbJt4ituKcfl1m/
2Q3Wzv9fdS/S4GnI1he5/Tzt/R9HFPjvCzMqHBQl0YKQ02cb6rD3W3ipnSgb082N
vTDCfhIy3YPMV0ez5wx5tfig9PDYKRub+y+pHMuphBQpxyO4hYjZeF/HpMYbvW5w
LqK+MZjHnDUdRFn4MYOH7qnHq/Vv5orMSV8j/XykYQGbUdiwhZq/HZ1iPrB84F5X
7Wk884xU
-----END CERTIFICATE-----
......@@ -5,31 +5,31 @@ Certificate:
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=C Root CA
Validity
Not Before: Feb 28 20:27:03 2016 GMT
Not After : Feb 25 20:27:03 2026 GMT
Not Before: Oct 4 18:53:24 2016 GMT
Not After : Oct 2 18:53:24 2026 GMT
Subject: CN=E CA
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:ba:41:e9:51:55:de:d0:9a:a9:ef:4c:fc:04:a4:
26:76:de:1d:5a:fa:84:f9:a4:37:91:85:0b:92:d5:
53:de:bd:77:ec:8b:b7:20:d1:db:26:63:4b:91:4a:
d3:93:3a:1a:1e:50:eb:02:fd:6a:c8:6d:14:72:b8:
c4:de:5c:4a:74:93:0e:ac:06:d3:5b:f8:f9:19:cd:
0a:6f:3c:90:ec:7d:f8:43:9d:66:35:9a:58:e6:c2:
8d:10:6c:94:79:e5:b3:fa:f6:98:de:50:8e:c0:b7:
01:33:12:43:4c:52:57:ad:c8:0c:b1:62:e0:ae:89:
d8:ad:d4:94:d9:78:f3:b5:0d:13:3e:64:55:73:83:
8b:2c:f6:6c:8c:9a:51:85:9e:cc:33:5d:aa:b0:1d:
94:29:d7:7b:ed:b7:77:2c:53:a3:05:83:c2:69:c9:
2d:ad:ce:76:62:d6:df:4e:e7:75:cb:19:2d:a8:e2:
18:75:08:57:d1:a9:2a:29:68:70:02:8c:03:a3:00:
22:37:d5:c0:7d:a2:a7:40:ce:2c:79:58:52:06:1f:
7a:61:b7:ce:e7:c2:83:dd:6d:cc:0a:64:17:27:cb:
21:56:38:c2:db:a0:ac:fd:18:b5:15:01:f5:50:25:
96:b7:91:ab:51:42:47:8c:fc:df:6a:54:f9:ea:49:
a6:75
00:a2:7e:a3:fd:c1:d7:78:cd:57:ac:67:54:37:69:
fb:72:6f:1d:8f:d0:47:0f:11:14:ab:42:d8:3d:6a:
34:2b:d6:38:07:df:16:1d:c6:62:eb:d7:12:e1:86:
83:f2:dd:8f:97:09:94:8f:1b:ff:3b:84:9b:48:e5:
0d:43:6b:ae:bb:75:88:1c:c6:3a:7f:d8:12:d9:7c:
12:18:6d:e2:f0:88:d4:3e:5a:93:b3:af:c1:79:a1:
b6:a3:f7:56:46:21:e6:7d:6e:36:ea:ba:4b:52:f7:
a9:45:0b:83:09:2c:09:22:8a:67:5a:8f:88:60:b0:
11:07:25:9b:c2:6a:3c:63:4c:0e:69:45:ce:9d:ba:
c9:d4:01:fb:78:56:38:08:8f:e5:d6:ff:ac:e4:04:
fa:26:cf:d2:05:33:57:a3:8e:80:c0:b6:40:d5:d3:
ca:85:17:30:b2:24:f4:19:af:c5:48:a4:ed:c0:49:
c1:a4:b7:89:29:ba:e5:2d:37:78:1c:d6:3e:9b:03:
fa:bc:7b:e2:76:a6:70:f3:1b:9d:b2:4b:fc:72:7b:
77:89:50:bb:88:2f:b5:b6:a2:c7:33:27:b7:d1:1a:
7c:d4:58:e3:5e:88:ca:f8:49:c3:cd:cc:0f:93:4b:
3c:fd:75:c3:7b:6f:bf:d3:db:ba:2e:31:7b:a7:a5:
42:c5
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints: critical
......@@ -37,35 +37,35 @@ Certificate:
X509v3 Key Usage: critical
Certificate Sign, CRL Sign
Signature Algorithm: sha256WithRSAEncryption
63:37:df:42:58:b0:4e:d1:0e:88:99:d0:c8:a0:9f:21:f6:13:
6a:c1:bb:8b:59:01:76:6e:01:1d:37:cb:b9:12:de:0d:78:49:
b8:26:26:6b:9c:32:83:7d:39:bc:e3:f8:55:6b:cc:12:59:b0:
11:b4:70:4c:14:99:34:e5:19:ab:d2:ff:5a:41:14:99:f6:d1:
03:f7:28:1c:22:56:06:ef:10:ac:e0:be:45:47:c1:f5:6b:d1:
e9:78:3a:88:4f:37:db:c5:2d:a6:95:3a:ff:84:9f:78:fc:2f:
b8:7e:b8:e4:94:69:c9:9c:26:f5:29:2f:81:9a:a0:26:82:65:
50:93:63:54:71:fe:d6:d0:90:47:1d:f3:28:bc:8f:5a:e7:6e:
54:8a:2f:5f:e8:4a:40:77:e6:cf:46:e9:4a:da:d2:7f:70:86:
56:6f:10:17:7b:f1:d0:1d:d2:3d:b1:de:7c:5f:bd:fe:50:3d:
13:cf:5f:43:c7:d0:10:60:b9:eb:cb:55:de:60:1a:c7:b6:50:
37:ea:9e:cf:18:28:b0:df:c7:0e:ae:08:5a:21:25:02:c3:08:
ca:1c:3e:b1:9f:bb:72:15:f6:5e:0a:32:bf:03:c7:05:e6:20:
5c:82:df:9f:9e:39:dc:86:45:f3:65:cc:f7:8c:48:08:53:a2:
73:b3:e7:5d
92:8b:93:94:03:04:91:3f:4d:8b:f3:90:53:ee:73:b5:33:c7:
61:ea:0f:a5:59:9b:f0:0d:4f:7d:48:0d:5a:58:e7:1f:68:f6:
d6:58:75:33:a5:d2:b7:65:6a:28:40:bc:0e:1e:78:ee:9a:13:
3c:b0:8b:8f:98:72:86:50:3a:a3:bf:6d:f0:21:95:a8:73:d0:
dd:e5:0e:25:b1:62:76:65:69:1f:ee:26:82:ab:be:a4:a8:30:
a7:41:34:07:57:2f:8b:ab:25:af:cb:23:a5:79:cf:b2:a2:17:
02:a7:aa:50:92:6e:0d:9b:ff:c9:22:38:b4:0f:47:94:d2:80:
7f:92:30:00:ec:5b:22:e2:a6:71:5e:e8:8f:0d:2f:38:2c:29:
47:6a:7f:20:0a:e2:42:cb:b7:6e:2b:29:0f:03:55:94:84:5f:
e7:47:bf:ae:75:88:05:4e:42:ac:78:57:9d:9c:e2:77:d2:17:
42:55:ba:f8:77:ee:61:d6:e8:ec:aa:e0:7a:a6:65:c6:35:80:
08:3d:39:a6:70:8c:9e:6d:7a:ee:e7:cf:36:46:98:00:c8:7b:
b8:84:7f:9d:9f:bd:31:4f:99:25:6e:76:9a:5d:46:3e:40:70:
c6:a8:03:f3:98:9c:be:fb:f6:ad:c2:8d:e3:f9:7d:93:3a:78:
da:b3:d7:dc
-----BEGIN CERTIFICATE-----
MIICwjCCAaqgAwIBAgICEAIwDQYJKoZIhvcNAQELBQAwFDESMBAGA1UEAwwJQyBS
b290IENBMB4XDTE2MDIyODIwMjcwM1oXDTI2MDIyNTIwMjcwM1owDzENMAsGA1UE
AwwERSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALpB6VFV3tCa
qe9M/ASkJnbeHVr6hPmkN5GFC5LVU969d+yLtyDR2yZjS5FK05M6Gh5Q6wL9asht
FHK4xN5cSnSTDqwG01v4+RnNCm88kOx9+EOdZjWaWObCjRBslHnls/r2mN5QjsC3
ATMSQ0xSV63IDLFi4K6J2K3UlNl487UNEz5kVXODiyz2bIyaUYWezDNdqrAdlCnX
e+23dyxTowWDwmnJLa3OdmLW307ndcsZLajiGHUIV9GpKilocAKMA6MAIjfVwH2i
p0DOLHlYUgYfemG3zufCg91tzApkFyfLIVY4wtugrP0YtRUB9VAllreRq1FCR4z8
32pU+epJpnUCAwEAAaMjMCEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AQYwDQYJKoZIhvcNAQELBQADggEBAGM330JYsE7RDoiZ0MignyH2E2rBu4tZAXZu
AR03y7kS3g14SbgmJmucMoN9Obzj+FVrzBJZsBG0cEwUmTTlGavS/1pBFJn20QP3
KBwiVgbvEKzgvkVHwfVr0el4OohPN9vFLaaVOv+En3j8L7h+uOSUacmcJvUpL4Ga
oCaCZVCTY1Rx/tbQkEcd8yi8j1rnblSKL1/oSkB35s9G6Ura0n9whlZvEBd78dAd
0j2x3nxfvf5QPRPPX0PH0BBguevLVd5gGse2UDfqns8YKLDfxw6uCFohJQLDCMoc
PrGfu3IV9l4KMr8DxwXmIFyC35+eOdyGRfNlzPeMSAhTonOz510=
b290IENBMB4XDTE2MTAwNDE4NTMyNFoXDTI2MTAwMjE4NTMyNFowDzENMAsGA1UE
AwwERSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKJ+o/3B13jN
V6xnVDdp+3JvHY/QRw8RFKtC2D1qNCvWOAffFh3GYuvXEuGGg/Ldj5cJlI8b/zuE
m0jlDUNrrrt1iBzGOn/YEtl8Ehht4vCI1D5ak7OvwXmhtqP3VkYh5n1uNuq6S1L3
qUULgwksCSKKZ1qPiGCwEQclm8JqPGNMDmlFzp26ydQB+3hWOAiP5db/rOQE+ibP
0gUzV6OOgMC2QNXTyoUXMLIk9BmvxUik7cBJwaS3iSm65S03eBzWPpsD+rx74nam
cPMbnbJL/HJ7d4lQu4gvtbaixzMnt9EafNRY416IyvhJw83MD5NLPP11w3tvv9Pb
ui4xe6elQsUCAwEAAaMjMCEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AQYwDQYJKoZIhvcNAQELBQADggEBAJKLk5QDBJE/TYvzkFPuc7Uzx2HqD6VZm/AN
T31IDVpY5x9o9tZYdTOl0rdlaihAvA4eeO6aEzywi4+YcoZQOqO/bfAhlahz0N3l
DiWxYnZlaR/uJoKrvqSoMKdBNAdXL4urJa/LI6V5z7KiFwKnqlCSbg2b/8kiOLQP
R5TSgH+SMADsWyLipnFe6I8NLzgsKUdqfyAK4kLLt24rKQ8DVZSEX+dHv651iAVO
Qqx4V52c4nfSF0JVuvh37mHW6Oyq4HqmZcY1gAg9OaZwjJ5teu7nzzZGmADIe7iE
f52fvTFPmSVudppdRj5AcMaoA/OYnL779q3CjeP5fZM6eNqz19w=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
......@@ -5,66 +5,66 @@ Certificate:
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=E CA
Validity
Not Before: Feb 28 20:27:03 2016 GMT
Not After : Feb 25 20:27:03 2026 GMT
Not Before: Oct 4 18:53:24 2016 GMT
Not After : Oct 2 18:53:24 2026 GMT
Subject: CN=Client Cert F
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:eb:3f:66:b3:55:6f:61:68:23:db:4d:20:4e:97:
4a:0f:db:9f:8c:f8:cd:a7:e2:9d:76:c3:40:51:14:
33:28:a5:e5:8b:55:9b:45:eb:47:43:93:51:95:91:
61:05:55:8a:bd:8d:01:34:2a:6b:97:5d:85:61:99:
b8:6b:d8:6e:c5:86:cc:e2:79:5f:50:91:4c:0d:3b:
71:81:40:19:6e:93:e6:68:43:de:bb:eb:4d:46:da:
4b:25:9d:e1:85:57:68:92:85:e2:3e:24:bc:30:d1:
79:8d:e6:3e:a2:e6:4a:d6:4a:49:07:28:eb:ed:2f:
b9:37:f0:c3:b2:c0:64:4a:e1:55:8c:45:16:f0:6c:
bb:73:11:0f:b1:30:03:90:0b:de:7f:dd:96:fc:b0:
d6:c0:c1:fd:70:f5:e6:73:46:81:4d:9b:86:d9:e8:
ac:c9:91:9b:dc:e7:c4:43:b7:0e:e3:c8:12:87:16:
87:79:1b:a2:d1:73:fc:fc:5e:f3:36:40:45:a3:cd:
fa:0c:40:74:8f:75:15:02:8e:27:8c:41:b9:24:d4:
80:01:70:31:f8:d5:55:24:8f:46:e1:82:27:72:1f:
66:6e:8a:66:8d:1f:6e:4e:cf:ca:05:fb:7d:49:38:
30:2f:ef:5e:23:ff:a0:20:e3:58:84:59:a4:9a:e5:
18:ff
00:a9:b9:61:4f:52:fe:64:34:53:67:47:d8:58:22:
23:82:97:6f:d0:82:e7:f7:0b:3d:db:4e:15:15:38:
df:de:35:3e:eb:ac:19:9b:d8:8d:db:e8:fa:db:2f:
fa:f2:20:45:92:df:f5:d3:b6:2a:03:6b:28:de:8d:
24:4b:aa:3b:23:3b:7e:11:08:3e:a3:96:6f:bc:73:
37:7d:54:91:fc:81:9e:8c:76:ed:d5:f6:e4:f6:8e:
e8:6e:56:e2:90:eb:51:a5:f3:90:d8:45:d9:fa:1d:
91:01:21:3a:61:31:3a:ea:5a:c4:e9:1a:ee:00:e6:
96:62:ca:0b:a7:37:a9:1c:39:4e:12:3e:ad:ab:ed:
b8:2c:86:a5:72:4c:ca:39:03:4d:61:fc:29:b8:bc:
db:32:89:95:0a:62:1a:28:d6:8e:6d:eb:06:33:9a:
5b:8f:e8:73:e1:2f:1e:84:21:fb:0b:38:27:b1:83:
a0:c7:fe:ed:79:cc:ab:57:a5:cf:5b:b3:84:0c:b9:
b8:1a:8c:90:22:59:f1:be:4d:46:0c:85:63:7b:a7:
1a:49:6f:8e:ce:a2:fa:e5:29:64:03:02:dc:68:df:
79:b6:6b:9b:22:07:59:af:a1:ff:ba:9c:e6:5d:d4:
61:de:40:81:2e:02:96:02:aa:54:24:d4:b3:c4:18:
e3:ff
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
email:santest@example.com, othername:<unsupported>
Signature Algorithm: sha256WithRSAEncryption
3f:63:47:b1:7f:67:6d:14:c9:b0:84:e8:c1:67:4e:a1:18:a5:
a6:d9:15:03:c3:5b:ec:f1:c3:ee:3d:f2:ea:01:f1:9c:07:da:
29:b5:62:ae:0e:6b:8e:dc:fd:67:d7:d9:b0:9f:c8:81:ce:85:
27:8d:80:cf:5b:ab:e6:c3:8c:37:1e:29:42:26:51:90:cf:31:
e0:4d:49:9f:04:6d:8d:f9:ac:c4:76:1e:3f:0e:f3:70:34:79:
c8:8e:a9:1e:06:e1:e1:4d:c3:9a:6c:fd:1a:41:66:79:ec:8c:
78:52:ed:74:6b:90:f1:99:d3:1e:d7:cc:c8:74:d0:72:36:25:
2e:fc:91:b0:13:6f:4a:53:2e:e9:72:57:f9:dd:f0:b4:60:f4:
a4:15:57:06:e5:38:be:19:3b:a8:1a:5a:73:42:88:3e:59:ab:
9b:46:43:38:53:4a:1e:c7:9c:1a:4e:df:88:af:a6:92:17:81:
28:e1:ad:a5:43:0d:ae:f7:c1:cd:6f:e5:55:2c:c0:9a:ac:18:
1f:05:2f:52:f7:6c:a9:94:eb:1d:9a:a3:9f:db:44:cc:b2:e0:
9e:3a:d5:0a:92:70:d8:89:5e:a9:5b:43:60:69:e4:ba:fb:2f:
37:83:aa:27:a6:d9:b9:11:fa:58:a8:ac:23:6f:c2:a2:c5:c7:
51:ec:94:f0
5f:d8:99:71:11:d1:1f:ae:7e:4a:fa:85:ff:f6:18:60:e0:c3:
e8:8c:8d:7b:51:b9:ed:ea:26:e8:2b:ff:d8:5c:1e:98:cb:c6:
a5:e8:ef:21:af:e5:a8:f2:47:93:5e:36:66:21:7d:84:c7:b2:
2c:70:31:71:67:88:c4:a9:45:c1:20:1b:e1:47:df:75:d6:83:
a2:db:45:27:ca:fa:b1:11:b0:c2:33:bc:a7:2c:fb:bd:2b:06:
68:0d:95:4c:d4:2f:ab:2a:5b:f8:92:4e:9b:74:30:f2:8d:7c:
26:c7:f1:0f:0e:f7:f1:28:b6:84:90:db:ac:a0:1a:84:4c:3e:
0b:14:39:de:90:ca:58:2c:f8:16:a4:0e:4d:cd:ba:c5:1d:bb:
91:69:a6:55:83:96:20:ee:1f:33:58:8f:da:44:32:9b:84:1e:
99:d3:74:60:c9:10:67:5c:a9:03:11:74:e3:82:85:99:4c:aa:
4e:3d:ee:ac:91:7c:e8:b9:b1:64:08:45:48:6f:34:f4:52:8a:
68:f9:80:6b:5b:b2:af:83:cb:fc:77:fd:9f:d0:aa:69:3e:bd:
f7:ca:05:17:f8:f4:39:d3:58:9a:04:81:43:a8:b3:66:90:9e:
b6:27:b3:1c:25:ad:8f:8c:c6:45:a4:f6:02:60:3a:0b:5e:6f:
6b:e6:1b:3f
-----BEGIN CERTIFICATE-----
MIIC8jCCAdqgAwIBAgICEAMwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwERSBD
QTAeFw0xNjAyMjgyMDI3MDNaFw0yNjAyMjUyMDI3MDNaMBgxFjAUBgNVBAMMDUNs
aWVudCBDZXJ0IEYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDrP2az
VW9haCPbTSBOl0oP25+M+M2n4p12w0BRFDMopeWLVZtF60dDk1GVkWEFVYq9jQE0
KmuXXYVhmbhr2G7FhszieV9QkUwNO3GBQBluk+ZoQ967601G2kslneGFV2iSheI+
JLww0XmN5j6i5krWSkkHKOvtL7k38MOywGRK4VWMRRbwbLtzEQ+xMAOQC95/3Zb8
sNbAwf1w9eZzRoFNm4bZ6KzJkZvc58RDtw7jyBKHFod5G6LRc/z8XvM2QEWjzfoM
QHSPdRUCjieMQbkk1IABcDH41VUkj0bhgidyH2ZuimaNH25Oz8oF+31JODAv714j
/6Ag41iEWaSa5Rj/AgMBAAGjTzBNMEsGA1UdEQREMEKBE3NhbnRlc3RAZXhhbXBs
QTAeFw0xNjEwMDQxODUzMjRaFw0yNjEwMDIxODUzMjRaMBgxFjAUBgNVBAMMDUNs
aWVudCBDZXJ0IEYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpuWFP
Uv5kNFNnR9hYIiOCl2/Qguf3Cz3bThUVON/eNT7rrBmb2I3b6PrbL/ryIEWS3/XT
tioDayjejSRLqjsjO34RCD6jlm+8czd9VJH8gZ6Mdu3V9uT2juhuVuKQ61Gl85DY
Rdn6HZEBITphMTrqWsTpGu4A5pZiygunN6kcOU4SPq2r7bgshqVyTMo5A01h/Cm4
vNsyiZUKYhoo1o5t6wYzmluP6HPhLx6EIfsLOCexg6DH/u15zKtXpc9bs4QMubga
jJAiWfG+TUYMhWN7pxpJb47OovrlKWQDAtxo33m2a5siB1mvof+6nOZd1GHeQIEu
ApYCqlQk1LPEGOP/AgMBAAGjTzBNMEsGA1UdEQREMEKBE3NhbnRlc3RAZXhhbXBs
ZS5jb22gKwYKKwYBBAGCNxQCA6AdDBtzYW50ZXN0QGFkLmNvcnAuZXhhbXBsZS5j
b20wDQYJKoZIhvcNAQELBQADggEBAD9jR7F/Z20UybCE6MFnTqEYpabZFQPDW+zx
w+498uoB8ZwH2im1Yq4Oa47c/WfX2bCfyIHOhSeNgM9bq+bDjDceKUImUZDPMeBN
SZ8EbY35rMR2Hj8O83A0eciOqR4G4eFNw5ps/RpBZnnsjHhS7XRrkPGZ0x7XzMh0
0HI2JS78kbATb0pTLulyV/nd8LRg9KQVVwblOL4ZO6gaWnNCiD5Zq5tGQzhTSh7H
nBpO34ivppIXgSjhraVDDa73wc1v5VUswJqsGB8FL1L3bKmU6x2ao5/bRMyy4J46
1QqScNiJXqlbQ2Bp5Lr7LzeDqiem2bkR+liorCNvwqLFx1HslPA=
b20wDQYJKoZIhvcNAQELBQADggEBAF/YmXER0R+ufkr6hf/2GGDgw+iMjXtRue3q
Jugr/9hcHpjLxqXo7yGv5ajyR5NeNmYhfYTHsixwMXFniMSpRcEgG+FH33XWg6Lb
RSfK+rERsMIzvKcs+70rBmgNlUzUL6sqW/iSTpt0MPKNfCbH8Q8O9/EotoSQ26yg
GoRMPgsUOd6Qylgs+BakDk3NusUdu5FpplWDliDuHzNYj9pEMpuEHpnTdGDJEGdc
qQMRdOOChZlMqk497qyRfOi5sWQIRUhvNPRSimj5gGtbsq+Dy/x3/Z/Qqmk+vffK
BRf49DnTWJoEgUOos2aQnrYnsxwlrY+MxkWk9gJgOgteb2vmGz8=
-----END CERTIFICATE-----
......@@ -5,31 +5,31 @@ Certificate:
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=C Root CA
Validity
Not Before: Feb 28 20:27:03 2016 GMT
Not After : Feb 25 20:27:03 2026 GMT
Not Before: Oct 4 18:53:24 2016 GMT
Not After : Oct 2 18:53:24 2026 GMT
Subject: CN=E CA
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:ba:41:e9:51:55:de:d0:9a:a9:ef:4c:fc:04:a4:
26:76:de:1d:5a:fa:84:f9:a4:37:91:85:0b:92:d5:
53:de:bd:77:ec:8b:b7:20:d1:db:26:63:4b:91:4a:
d3:93:3a:1a:1e:50:eb:02:fd:6a:c8:6d:14:72:b8:
c4:de:5c:4a:74:93:0e:ac:06:d3:5b:f8:f9:19:cd:
0a:6f:3c:90:ec:7d:f8:43:9d:66:35:9a:58:e6:c2:
8d:10:6c:94:79:e5:b3:fa:f6:98:de:50:8e:c0:b7:
01:33:12:43:4c:52:57:ad:c8:0c:b1:62:e0:ae:89:
d8:ad:d4:94:d9:78:f3:b5:0d:13:3e:64:55:73:83:
8b:2c:f6:6c:8c:9a:51:85:9e:cc:33:5d:aa:b0:1d:
94:29:d7:7b:ed:b7:77:2c:53:a3:05:83:c2:69:c9:
2d:ad:ce:76:62:d6:df:4e:e7:75:cb:19:2d:a8:e2:
18:75:08:57:d1:a9:2a:29:68:70:02:8c:03:a3:00:
22:37:d5:c0:7d:a2:a7:40:ce:2c:79:58:52:06:1f:
7a:61:b7:ce:e7:c2:83:dd:6d:cc:0a:64:17:27:cb:
21:56:38:c2:db:a0:ac:fd:18:b5:15:01:f5:50:25:
96:b7:91:ab:51:42:47:8c:fc:df:6a:54:f9:ea:49:
a6:75
00:a2:7e:a3:fd:c1:d7:78:cd:57:ac:67:54:37:69:
fb:72:6f:1d:8f:d0:47:0f:11:14:ab:42:d8:3d:6a:
34:2b:d6:38:07:df:16:1d:c6:62:eb:d7:12:e1:86:
83:f2:dd:8f:97:09:94:8f:1b:ff:3b:84:9b:48:e5:
0d:43:6b:ae:bb:75:88:1c:c6:3a:7f:d8:12:d9:7c:
12:18:6d:e2:f0:88:d4:3e:5a:93:b3:af:c1:79:a1:
b6:a3:f7:56:46:21:e6:7d:6e:36:ea:ba:4b:52:f7:
a9:45:0b:83:09:2c:09:22:8a:67:5a:8f:88:60:b0:
11:07:25:9b:c2:6a:3c:63:4c:0e:69:45:ce:9d:ba:
c9:d4:01:fb:78:56:38:08:8f:e5:d6:ff:ac:e4:04:
fa:26:cf:d2:05:33:57:a3:8e:80:c0:b6:40:d5:d3:
ca:85:17:30:b2:24:f4:19:af:c5:48:a4:ed:c0:49:
c1:a4:b7:89:29:ba:e5:2d:37:78:1c:d6:3e:9b:03:
fa:bc:7b:e2:76:a6:70:f3:1b:9d:b2:4b:fc:72:7b:
77:89:50:bb:88:2f:b5:b6:a2:c7:33:27:b7:d1:1a:
7c:d4:58:e3:5e:88:ca:f8:49:c3:cd:cc:0f:93:4b:
3c:fd:75:c3:7b:6f:bf:d3:db:ba:2e:31:7b:a7:a5:
42:c5
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints: critical
......@@ -37,35 +37,35 @@ Certificate:
X509v3 Key Usage: critical
Certificate Sign, CRL Sign
Signature Algorithm: sha256WithRSAEncryption
63:37:df:42:58:b0:4e:d1:0e:88:99:d0:c8:a0:9f:21:f6:13:
6a:c1:bb:8b:59:01:76:6e:01:1d:37:cb:b9:12:de:0d:78:49:
b8:26:26:6b:9c:32:83:7d:39:bc:e3:f8:55:6b:cc:12:59:b0:
11:b4:70:4c:14:99:34:e5:19:ab:d2:ff:5a:41:14:99:f6:d1:
03:f7:28:1c:22:56:06:ef:10:ac:e0:be:45:47:c1:f5:6b:d1:
e9:78:3a:88:4f:37:db:c5:2d:a6:95:3a:ff:84:9f:78:fc:2f:
b8:7e:b8:e4:94:69:c9:9c:26:f5:29:2f:81:9a:a0:26:82:65:
50:93:63:54:71:fe:d6:d0:90:47:1d:f3:28:bc:8f:5a:e7:6e:
54:8a:2f:5f:e8:4a:40:77:e6:cf:46:e9:4a:da:d2:7f:70:86:
56:6f:10:17:7b:f1:d0:1d:d2:3d:b1:de:7c:5f:bd:fe:50:3d:
13:cf:5f:43:c7:d0:10:60:b9:eb:cb:55:de:60:1a:c7:b6:50:
37:ea:9e:cf:18:28:b0:df:c7:0e:ae:08:5a:21:25:02:c3:08:
ca:1c:3e:b1:9f:bb:72:15:f6:5e:0a:32:bf:03:c7:05:e6:20:
5c:82:df:9f:9e:39:dc:86:45:f3:65:cc:f7:8c:48:08:53:a2:
73:b3:e7:5d
92:8b:93:94:03:04:91:3f:4d:8b:f3:90:53:ee:73:b5:33:c7:
61:ea:0f:a5:59:9b:f0:0d:4f:7d:48:0d:5a:58:e7:1f:68:f6:
d6:58:75:33:a5:d2:b7:65:6a:28:40:bc:0e:1e:78:ee:9a:13:
3c:b0:8b:8f:98:72:86:50:3a:a3:bf:6d:f0:21:95:a8:73:d0:
dd:e5:0e:25:b1:62:76:65:69:1f:ee:26:82:ab:be:a4:a8:30:
a7:41:34:07:57:2f:8b:ab:25:af:cb:23:a5:79:cf:b2:a2:17:
02:a7:aa:50:92:6e:0d:9b:ff:c9:22:38:b4:0f:47:94:d2:80:
7f:92:30:00:ec:5b:22:e2:a6:71:5e:e8:8f:0d:2f:38:2c:29:
47:6a:7f:20:0a:e2:42:cb:b7:6e:2b:29:0f:03:55:94:84:5f:
e7:47:bf:ae:75:88:05:4e:42:ac:78:57:9d:9c:e2:77:d2:17:
42:55:ba:f8:77:ee:61:d6:e8:ec:aa:e0:7a:a6:65:c6:35:80:
08:3d:39:a6:70:8c:9e:6d:7a:ee:e7:cf:36:46:98:00:c8:7b:
b8:84:7f:9d:9f:bd:31:4f:99:25:6e:76:9a:5d:46:3e:40:70:
c6:a8:03:f3:98:9c:be:fb:f6:ad:c2:8d:e3:f9:7d:93:3a:78:
da:b3:d7:dc
-----BEGIN CERTIFICATE-----
MIICwjCCAaqgAwIBAgICEAIwDQYJKoZIhvcNAQELBQAwFDESMBAGA1UEAwwJQyBS
b290IENBMB4XDTE2MDIyODIwMjcwM1oXDTI2MDIyNTIwMjcwM1owDzENMAsGA1UE
AwwERSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALpB6VFV3tCa
qe9M/ASkJnbeHVr6hPmkN5GFC5LVU969d+yLtyDR2yZjS5FK05M6Gh5Q6wL9asht
FHK4xN5cSnSTDqwG01v4+RnNCm88kOx9+EOdZjWaWObCjRBslHnls/r2mN5QjsC3
ATMSQ0xSV63IDLFi4K6J2K3UlNl487UNEz5kVXODiyz2bIyaUYWezDNdqrAdlCnX
e+23dyxTowWDwmnJLa3OdmLW307ndcsZLajiGHUIV9GpKilocAKMA6MAIjfVwH2i
p0DOLHlYUgYfemG3zufCg91tzApkFyfLIVY4wtugrP0YtRUB9VAllreRq1FCR4z8
32pU+epJpnUCAwEAAaMjMCEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AQYwDQYJKoZIhvcNAQELBQADggEBAGM330JYsE7RDoiZ0MignyH2E2rBu4tZAXZu
AR03y7kS3g14SbgmJmucMoN9Obzj+FVrzBJZsBG0cEwUmTTlGavS/1pBFJn20QP3
KBwiVgbvEKzgvkVHwfVr0el4OohPN9vFLaaVOv+En3j8L7h+uOSUacmcJvUpL4Ga
oCaCZVCTY1Rx/tbQkEcd8yi8j1rnblSKL1/oSkB35s9G6Ura0n9whlZvEBd78dAd
0j2x3nxfvf5QPRPPX0PH0BBguevLVd5gGse2UDfqns8YKLDfxw6uCFohJQLDCMoc
PrGfu3IV9l4KMr8DxwXmIFyC35+eOdyGRfNlzPeMSAhTonOz510=
b290IENBMB4XDTE2MTAwNDE4NTMyNFoXDTI2MTAwMjE4NTMyNFowDzENMAsGA1UE
AwwERSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKJ+o/3B13jN
V6xnVDdp+3JvHY/QRw8RFKtC2D1qNCvWOAffFh3GYuvXEuGGg/Ldj5cJlI8b/zuE
m0jlDUNrrrt1iBzGOn/YEtl8Ehht4vCI1D5ak7OvwXmhtqP3VkYh5n1uNuq6S1L3
qUULgwksCSKKZ1qPiGCwEQclm8JqPGNMDmlFzp26ydQB+3hWOAiP5db/rOQE+ibP
0gUzV6OOgMC2QNXTyoUXMLIk9BmvxUik7cBJwaS3iSm65S03eBzWPpsD+rx74nam
cPMbnbJL/HJ7d4lQu4gvtbaixzMnt9EafNRY416IyvhJw83MD5NLPP11w3tvv9Pb
ui4xe6elQsUCAwEAAaMjMCEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AQYwDQYJKoZIhvcNAQELBQADggEBAJKLk5QDBJE/TYvzkFPuc7Uzx2HqD6VZm/AN
T31IDVpY5x9o9tZYdTOl0rdlaihAvA4eeO6aEzywi4+YcoZQOqO/bfAhlahz0N3l
DiWxYnZlaR/uJoKrvqSoMKdBNAdXL4urJa/LI6V5z7KiFwKnqlCSbg2b/8kiOLQP
R5TSgH+SMADsWyLipnFe6I8NLzgsKUdqfyAK4kLLt24rKQ8DVZSEX+dHv651iAVO
Qqx4V52c4nfSF0JVuvh37mHW6Oyq4HqmZcY1gAg9OaZwjJ5teu7nzzZGmADIe7iE
f52fvTFPmSVudppdRj5AcMaoA/OYnL779q3CjeP5fZM6eNqz19w=
-----END CERTIFICATE-----
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEILP75xbRvuB3x6CmLmO6dnAz4SzWM52MjX/ENrMfZWSEoAoGCCqGSM49
AwEHoUQDQgAEeS7h2cVpnREfhVilcTyRzlg4kE1IhGT3MUl1BkvR5e1EgvkLapKA
8lLte3NLOoH/gPKnhLDPmN5N2uTCEZhpzw==
-----END EC PRIVATE KEY-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4100 (0x1004)
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=E CA
Validity
Not Before: Oct 4 18:53:24 2016 GMT
Not After : Oct 2 18:53:24 2026 GMT
Subject: CN=Client Cert G
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:79:2e:e1:d9:c5:69:9d:11:1f:85:58:a5:71:3c:
91:ce:58:38:90:4d:48:84:64:f7:31:49:75:06:4b:
d1:e5:ed:44:82:f9:0b:6a:92:80:f2:52:ed:7b:73:
4b:3a:81:ff:80:f2:a7:84:b0:cf:98:de:4d:da:e4:
c2:11:98:69:cf
ASN1 OID: prime256v1
X509v3 extensions:
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
Signature Algorithm: sha256WithRSAEncryption
70:44:30:40:b7:d6:5b:09:e6:81:a1:a7:80:cd:bc:12:5d:e1:
45:7d:fb:04:5f:5f:21:b9:e5:a9:e0:79:52:5a:50:21:11:bb:
8c:25:08:e1:6d:19:e3:ba:e7:69:74:db:a6:b2:41:a4:f5:39:
63:18:e6:bc:ce:db:d8:3f:17:e1:90:9f:62:3a:d3:52:f4:c4:
01:4d:db:ad:16:ad:8b:31:51:fe:82:68:fd:34:c4:58:dc:4d:
6b:72:74:30:98:a6:03:4b:21:dd:54:1b:ed:e0:a5:3f:a9:5e:
1d:e6:57:3f:13:f4:e0:dc:d0:bf:90:68:dc:e1:e7:b5:81:b4:
f8:d5:45:96:95:b9:cd:83:15:c8:32:a6:20:2c:fc:b5:05:42:
1a:7e:26:4c:a1:9a:8b:26:2b:1b:72:c7:a5:38:f3:57:4c:b4:
7f:8e:dc:d9:52:0a:52:ac:e5:d9:18:0b:ae:91:b9:c5:e0:13:
cb:15:8d:19:3b:e9:60:1b:6b:31:0a:c7:22:4a:5a:ed:49:cf:
72:e1:dd:93:1e:43:a8:e0:3e:02:b6:06:ee:b9:a9:d3:d9:88:
2d:81:f6:96:cb:13:07:a8:51:81:89:8c:6b:28:d3:0c:22:8f:
e9:d7:92:1d:5a:2a:d6:c0:55:6b:86:2b:a7:f9:9e:35:88:5d:
bb:42:eb:b8
-----BEGIN CERTIFICATE-----
MIICBjCB76ADAgECAgIQBDANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDDARFIENB
MB4XDTE2MTAwNDE4NTMyNFoXDTI2MTAwMjE4NTMyNFowGDEWMBQGA1UEAwwNQ2xp
ZW50IENlcnQgRzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHku4dnFaZ0RH4VY
pXE8kc5YOJBNSIRk9zFJdQZL0eXtRIL5C2qSgPJS7XtzSzqB/4Dyp4Swz5jeTdrk
whGYac+jLzAtMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsG
AQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQBwRDBAt9ZbCeaBoaeAzbwSXeFFffsE
X18hueWp4HlSWlAhEbuMJQjhbRnjuudpdNumskGk9TljGOa8ztvYPxfhkJ9iOtNS
9MQBTdutFq2LMVH+gmj9NMRY3E1rcnQwmKYDSyHdVBvt4KU/qV4d5lc/E/Tg3NC/
kGjc4ee1gbT41UWWlbnNgxXIMqYgLPy1BUIafiZMoZqLJisbcselOPNXTLR/jtzZ
UgpSrOXZGAuukbnF4BPLFY0ZO+lgG2sxCsciSlrtSc9y4d2THkOo4D4CtgbuuanT
2YgtgfaWyxMHqFGBiYxrKNMMIo/p15IdWirWwFVrhiun+Z41iF27Quu4
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4098 (0x1002)
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=C Root CA
Validity
Not Before: Oct 4 18:53:24 2016 GMT
Not After : Oct 2 18:53:24 2026 GMT
Subject: CN=E CA
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:a2:7e:a3:fd:c1:d7:78:cd:57:ac:67:54:37:69:
fb:72:6f:1d:8f:d0:47:0f:11:14:ab:42:d8:3d:6a:
34:2b:d6:38:07:df:16:1d:c6:62:eb:d7:12:e1:86:
83:f2:dd:8f:97:09:94:8f:1b:ff:3b:84:9b:48:e5:
0d:43:6b:ae:bb:75:88:1c:c6:3a:7f:d8:12:d9:7c:
12:18:6d:e2:f0:88:d4:3e:5a:93:b3:af:c1:79:a1:
b6:a3:f7:56:46:21:e6:7d:6e:36:ea:ba:4b:52:f7:
a9:45:0b:83:09:2c:09:22:8a:67:5a:8f:88:60:b0:
11:07:25:9b:c2:6a:3c:63:4c:0e:69:45:ce:9d:ba:
c9:d4:01:fb:78:56:38:08:8f:e5:d6:ff:ac:e4:04:
fa:26:cf:d2:05:33:57:a3:8e:80:c0:b6:40:d5:d3:
ca:85:17:30:b2:24:f4:19:af:c5:48:a4:ed:c0:49:
c1:a4:b7:89:29:ba:e5:2d:37:78:1c:d6:3e:9b:03:
fa:bc:7b:e2:76:a6:70:f3:1b:9d:b2:4b:fc:72:7b:
77:89:50:bb:88:2f:b5:b6:a2:c7:33:27:b7:d1:1a:
7c:d4:58:e3:5e:88:ca:f8:49:c3:cd:cc:0f:93:4b:
3c:fd:75:c3:7b:6f:bf:d3:db:ba:2e:31:7b:a7:a5:
42:c5
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Key Usage: critical
Certificate Sign, CRL Sign
Signature Algorithm: sha256WithRSAEncryption
92:8b:93:94:03:04:91:3f:4d:8b:f3:90:53:ee:73:b5:33:c7:
61:ea:0f:a5:59:9b:f0:0d:4f:7d:48:0d:5a:58:e7:1f:68:f6:
d6:58:75:33:a5:d2:b7:65:6a:28:40:bc:0e:1e:78:ee:9a:13:
3c:b0:8b:8f:98:72:86:50:3a:a3:bf:6d:f0:21:95:a8:73:d0:
dd:e5:0e:25:b1:62:76:65:69:1f:ee:26:82:ab:be:a4:a8:30:
a7:41:34:07:57:2f:8b:ab:25:af:cb:23:a5:79:cf:b2:a2:17:
02:a7:aa:50:92:6e:0d:9b:ff:c9:22:38:b4:0f:47:94:d2:80:
7f:92:30:00:ec:5b:22:e2:a6:71:5e:e8:8f:0d:2f:38:2c:29:
47:6a:7f:20:0a:e2:42:cb:b7:6e:2b:29:0f:03:55:94:84:5f:
e7:47:bf:ae:75:88:05:4e:42:ac:78:57:9d:9c:e2:77:d2:17:
42:55:ba:f8:77:ee:61:d6:e8:ec:aa:e0:7a:a6:65:c6:35:80:
08:3d:39:a6:70:8c:9e:6d:7a:ee:e7:cf:36:46:98:00:c8:7b:
b8:84:7f:9d:9f:bd:31:4f:99:25:6e:76:9a:5d:46:3e:40:70:
c6:a8:03:f3:98:9c:be:fb:f6:ad:c2:8d:e3:f9:7d:93:3a:78:
da:b3:d7:dc
-----BEGIN CERTIFICATE-----
MIICwjCCAaqgAwIBAgICEAIwDQYJKoZIhvcNAQELBQAwFDESMBAGA1UEAwwJQyBS
b290IENBMB4XDTE2MTAwNDE4NTMyNFoXDTI2MTAwMjE4NTMyNFowDzENMAsGA1UE
AwwERSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKJ+o/3B13jN
V6xnVDdp+3JvHY/QRw8RFKtC2D1qNCvWOAffFh3GYuvXEuGGg/Ldj5cJlI8b/zuE
m0jlDUNrrrt1iBzGOn/YEtl8Ehht4vCI1D5ak7OvwXmhtqP3VkYh5n1uNuq6S1L3
qUULgwksCSKKZ1qPiGCwEQclm8JqPGNMDmlFzp26ydQB+3hWOAiP5db/rOQE+ibP
0gUzV6OOgMC2QNXTyoUXMLIk9BmvxUik7cBJwaS3iSm65S03eBzWPpsD+rx74nam
cPMbnbJL/HJ7d4lQu4gvtbaixzMnt9EafNRY416IyvhJw83MD5NLPP11w3tvv9Pb
ui4xe6elQsUCAwEAAaMjMCEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AQYwDQYJKoZIhvcNAQELBQADggEBAJKLk5QDBJE/TYvzkFPuc7Uzx2HqD6VZm/AN
T31IDVpY5x9o9tZYdTOl0rdlaihAvA4eeO6aEzywi4+YcoZQOqO/bfAhlahz0N3l
DiWxYnZlaR/uJoKrvqSoMKdBNAdXL4urJa/LI6V5z7KiFwKnqlCSbg2b/8kiOLQP
R5TSgH+SMADsWyLipnFe6I8NLzgsKUdqfyAK4kLLt24rKQ8DVZSEX+dHv651iAVO
Qqx4V52c4nfSF0JVuvh37mHW6Oyq4HqmZcY1gAg9OaZwjJ5teu7nzzZGmADIe7iE
f52fvTFPmSVudppdRj5AcMaoA/OYnL779q3CjeP5fZM6eNqz19w=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICzjCCAbagAwIBAgIJAO+K/Ai3YiytMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV
BAMMCUMgUm9vdCBDQTAeFw0xNjEwMDQxODUzMjRaFw0yNjEwMDIxODUzMjRaMBQx
EjAQBgNVBAMMCUMgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBALKU+gX11E3vQ6CHy5bNfePr5uiJMHX+P97/I8y8DCk117+0gGxlO4adwImE
dgA6jFmMcphJU+BPfi1eDwO2WHQVa31NALMy3CbEzv4qV1gqTAfNJdICKZk7S87E
GbZUBauHe8q443UwD3c+R49XTsGvUSoMjh3N7K0/kNeoLi4RLW6WOZvJh954Rj+I
EHmCibJENDfzdYWfQtLZJEYrzJv01ZdWcigvOR7qQqLdX6f2WTBaWpjgSnP5QzO/
8gkX+rVRRUpbD/lMNdXqO9AoBcSG07tWMx1MDRnDG8SzrCQ4sScSbcPnHQDEbdDv
suCnGXzSerruQXCqVwcCHIEHRSMCAwEAAaMjMCEwDwYDVR0TAQH/BAUwAwEB/zAO
BgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAHL9wuInYSfItXwoO2jG
W08CPjcPMN1Q7yulKFtND6jU4cWB/m2xQmpMjhrahrF1hYwwiOXfwB+bxHOoekmK
Uf+WmsiFXUQ5q9IeBMnxrrKOqZ9X2S+WaTi9GosJ52IEX4JJT7w3JDEcNTh3h66g
FHB9cXao0EDx5fkEvSCKhcSy+tWjWzUB+GszG3ApCe0ZxbcehUSRSZTcLYvlNlXF
NMNvEH5C1BVzCQWAZlgT4gp4miEPCFTc4Vr90pgDzJ3eFWu4V0s6snyDOip0PD9A
N6wOvSix25wUYni46xGHFc9ZZn3x35HdhW9+IMAgJI14hMsoIHQwAgzqF4neRYvY
RT4=
-----END CERTIFICATE-----
#!/bin/sh
# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# This script is used to generate the test keys for the unit test in
# android/keystore_unittest.c.
#
# These are test RSA / DSA / ECDSA private keys in PKCS#8 format, as well
# as the corresponding DSA / ECDSA public keys.
#
# Exit script as soon a something fails.
set -e
mkdir -p out
rm -rf out/*
# Generate a single 2048-bits RSA private key in PKCS#8 format.
KEY=android-test-key-rsa
openssl genrsa \
-out out/$KEY.pem \
2048
# Generate a 2048-bits DSA private key in PKCS#8 format,
# as well as its public key in X.509 DER format.
KEY=android-test-key-dsa
openssl dsaparam \
-out out/$KEY.param.pem \
2048
openssl gendsa \
-out out/$KEY.pem \
out/$KEY.param.pem
openssl dsa \
-in out/$KEY.pem \
-outform PEM \
-out out/$KEY-public.pem \
-pubout
rm out/$KEY.param.pem
# Generate an ECDSA private key, in PKCS#8 format,
# as well as its public key in X.509 DER format.
KEY=android-test-key-ecdsa
openssl ecparam -genkey -name prime256v1 -out out/$KEY.pem
openssl ec \
-in out/$KEY.pem \
-outform PEM \
-out out/$KEY-public.pem \
-pubout
# We're done here.
......@@ -8,12 +8,14 @@
# authentication. Outputs for automated tests are stored in
# net/data/ssl/certificates, but may be re-generated for manual testing.
#
# This script generates two chains of test client certificates:
# This script generates several chains of test client certificates:
#
# 1. A (end-entity) -> B -> C (self-signed root)
# 2. D (end-entity) -> E -> C (self-signed root)
# 3. F (end-entity) -> E -> C (self-signed root)
# 4. G (end-entity, P-256) -> E -> C (self-signed root)
#
# In which A, B, C, D, and E all have distinct keypairs. Both client
# In which the certificates all have distinct keypairs. The client
# certificates share the same root, but are issued by different
# intermediates. The names of these intermediates are hardcoded within
# unit tests, and thus should not be changed.
......@@ -42,6 +44,8 @@ do
try openssl genrsa -out out/$i.key 2048
done
try openssl ecparam -name prime256v1 -genkey -noout -out out/G.key
echo Generate the C CSR
COMMON_NAME="C Root CA" \
CA_DIR=out \
......@@ -104,7 +108,7 @@ COMMON_NAME="C CA" \
-config client-certs.cnf
echo Generate the leaf certs
for id in A D F
for id in A D F G
do
COMMON_NAME="Client Cert $id" \
ID=$id \
......@@ -154,11 +158,23 @@ COMMON_NAME="E CA" \
-out out/F.pem \
-config client-certs.cnf
echo E signs G
COMMON_NAME="E CA" \
CA_DIR=out \
ID=E \
try openssl ca \
-batch \
-extensions user_cert \
-in out/G.csr \
-out out/G.pem \
-config client-certs.cnf
echo Package the client certs and private keys into PKCS12 files
# This is done for easily importing all of the certs needed for clients.
try /bin/sh -c "cat out/A.pem out/A.key out/B.pem out/C.pem > out/A-chain.pem"
try /bin/sh -c "cat out/D.pem out/D.key out/E.pem out/C.pem > out/D-chain.pem"
try /bin/sh -c "cat out/F.pem out/F.key out/E.pem out/C.pem > out/F-chain.pem"
try /bin/sh -c "cat out/G.pem out/G.key out/E.pem out/C.pem > out/G-chain.pem"
try openssl pkcs12 \
-in out/A-chain.pem \
......@@ -178,6 +194,12 @@ try openssl pkcs12 \
-export \
-passout pass:chrome
try openssl pkcs12 \
-in out/G-chain.pem \
-out client_4.p12 \
-export \
-passout pass:chrome
echo Package the client certs for unit tests
try cp out/A.pem ../certificates/client_1.pem
try cp out/A.key ../certificates/client_1.key
......@@ -193,3 +215,10 @@ try cp out/F.pem ../certificates/client_3.pem
try cp out/F.key ../certificates/client_3.key
try cp out/F.pk8 ../certificates/client_3.pk8
try cp out/E.pem ../certificates/client_3_ca.pem
try cp out/G.pem ../certificates/client_4.pem
try cp out/G.key ../certificates/client_4.key
try cp out/G.pk8 ../certificates/client_4.pk8
try cp out/E.pem ../certificates/client_4_ca.pem
try cp out/C.pem ../certificates/client_root_ca.pem
......@@ -2145,11 +2145,6 @@
'data/ssl/certificates/aia-cert.pem',
'data/ssl/certificates/aia-intermediate.der',
'data/ssl/certificates/aia-root.pem',
'data/ssl/certificates/android-test-key-dsa-public.pem',
'data/ssl/certificates/android-test-key-dsa.pem',
'data/ssl/certificates/android-test-key-ecdsa-public.pem',
'data/ssl/certificates/android-test-key-ecdsa.pem',
'data/ssl/certificates/android-test-key-rsa.pem',
'data/ssl/certificates/bad_validity.pem',
'data/ssl/certificates/client-nokey.p12',
'data/ssl/certificates/client.p12',
......@@ -2165,6 +2160,11 @@
'data/ssl/certificates/client_3.pem',
'data/ssl/certificates/client_3.pk8',
'data/ssl/certificates/client_3_ca.pem',
'data/ssl/certificates/client_4.key',
'data/ssl/certificates/client_4.pem',
'data/ssl/certificates/client_4.pk8',
'data/ssl/certificates/client_4_ca.pem',
'data/ssl/certificates/client_root_ca.pem',
'data/ssl/certificates/comodo.chain.pem',
'data/ssl/certificates/crit-codeSigning-chain.pem',
'data/ssl/certificates/crlset_by_intermediate_serial.raw',
......
......@@ -2,33 +2,30 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <openssl/bytestring.h>
#include <openssl/digest.h>
#include <openssl/ecdsa.h>
#include <openssl/err.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/rsa.h>
#include <openssl/x509.h>
#include "base/android/build_info.h"
#include "base/android/jni_android.h"
#include "base/android/jni_array.h"
#include "base/android/scoped_java_ref.h"
#include "base/bind.h"
#include "base/callback.h"
#include "base/compiler_specific.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/files/scoped_file.h"
#include "base/run_loop.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "crypto/auto_cbb.h"
#include "crypto/openssl_util.h"
#include "crypto/scoped_openssl_types.h"
#include "net/android/keystore.h"
#include "net/ssl/scoped_openssl_types.h"
#include "net/cert/x509_certificate.h"
#include "net/ssl/ssl_platform_key_android.h"
#include "net/ssl/ssl_private_key.h"
#include "net/test/cert_test_util.h"
#include "net/test/jni/AndroidKeyStoreTestUtil_jni.h"
#include "net/test/test_data_directory.h"
#include "testing/gtest/include/gtest/gtest.h"
......@@ -49,72 +46,50 @@ unsigned char* OpenSSLWriteInto(std::string* str, size_t size) {
return reinterpret_cast<unsigned char*>(base::WriteInto(str, size + 1));
}
bool ReadTestFile(const char* filename, std::string* pkcs8) {
base::FilePath certs_dir = GetTestCertsDirectory();
base::FilePath file_path = certs_dir.AppendASCII(filename);
return base::ReadFileToString(file_path, pkcs8);
}
// Load a given private key file into an EVP_PKEY.
// |filename| is the key file path.
// Returns a new EVP_PKEY on success, NULL on failure.
EVP_PKEY* ImportPrivateKeyFile(const char* filename) {
crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE);
bssl::UniquePtr<EVP_PKEY> ImportPrivateKeyFile(const char* filename) {
std::string pkcs8;
if (!ReadTestFile(filename, &pkcs8))
return nullptr;
// Load file in memory.
base::FilePath certs_dir = GetTestCertsDirectory();
base::FilePath file_path = certs_dir.AppendASCII(filename);
base::ScopedFILE handle(base::OpenFile(file_path, "rb"));
if (!handle) {
LOG(ERROR) << "Could not open private key file: " << filename;
return NULL;
}
// Assume it is PEM_encoded. Load it as an EVP_PKEY.
EVP_PKEY* pkey = PEM_read_PrivateKey(handle.get(), NULL, NULL, NULL);
crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE);
CBS cbs;
CBS_init(&cbs, reinterpret_cast<const uint8_t*>(pkcs8.data()), pkcs8.size());
bssl::UniquePtr<EVP_PKEY> pkey(EVP_parse_private_key(&cbs));
if (!pkey) {
LOG(ERROR) << "Could not load public key file: " << filename;
return NULL;
LOG(ERROR) << "Could not load private key file: " << filename;
return nullptr;
}
return pkey;
}
// Convert a private key into its PKCS#8 encoded representation.
// |pkey| is the EVP_PKEY handle for the private key.
// |pkcs8| will receive the PKCS#8 bytes.
// Returns true on success, false otherwise.
bool GetPrivateKeyPkcs8Bytes(const crypto::ScopedEVP_PKEY& pkey,
std::string* pkcs8) {
uint8_t* der;
size_t der_len;
crypto::AutoCBB cbb;
if (!CBB_init(cbb.get(), 0) ||
!EVP_marshal_private_key(cbb.get(), pkey.get()) ||
!CBB_finish(cbb.get(), &der, &der_len)) {
return false;
}
pkcs8->assign(reinterpret_cast<const char*>(der), der_len);
OPENSSL_free(der);
return true;
}
bool ImportPrivateKeyFileAsPkcs8(const char* filename, std::string* pkcs8) {
crypto::ScopedEVP_PKEY pkey(ImportPrivateKeyFile(filename));
if (!pkey)
return false;
return GetPrivateKeyPkcs8Bytes(pkey, pkcs8);
return pkey;
}
// Same as ImportPrivateKey, but for public ones.
EVP_PKEY* ImportPublicKeyFile(const char* filename) {
// Imports the public key from the specified test certificate.
bssl::UniquePtr<EVP_PKEY> ImportPublicKeyFromCertificateFile(
const char* filename) {
crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE);
// Load file as PEM data.
base::FilePath certs_dir = GetTestCertsDirectory();
base::FilePath file_path = certs_dir.AppendASCII(filename);
base::ScopedFILE handle(base::OpenFile(file_path, "rb"));
if (!handle) {
LOG(ERROR) << "Could not open public key file: " << filename;
return NULL;
scoped_refptr<X509Certificate> cert =
ImportCertFromFile(GetTestCertsDirectory(), filename);
if (!cert) {
LOG(ERROR) << "Could not open certificate file: " << filename;
return nullptr;
}
EVP_PKEY* pkey = PEM_read_PUBKEY(handle.get(), NULL, NULL, NULL);
bssl::UniquePtr<EVP_PKEY> pkey(X509_get_pubkey(cert->os_cert_handle()));
if (!pkey) {
LOG(ERROR) << "Could not load public key file: " << filename;
return NULL;
LOG(ERROR) << "Could not load public key from certificate: " << filename;
return nullptr;
}
return pkey;
}
......@@ -133,23 +108,23 @@ ScopedJava GetPKCS8PrivateKeyJava(android::PrivateKeyType key_type,
return key;
}
const char kTestRsaKeyFile[] = "android-test-key-rsa.pem";
const char kTestRsaKeyFile[] = "client_1.pk8";
// Retrieve a JNI local ref for our test RSA key.
ScopedJava GetRSATestKeyJava() {
std::string key;
if (!ImportPrivateKeyFileAsPkcs8(kTestRsaKeyFile, &key))
if (!ReadTestFile(kTestRsaKeyFile, &key))
return ScopedJava();
return GetPKCS8PrivateKeyJava(android::PRIVATE_KEY_TYPE_RSA, key);
}
const char kTestEcdsaKeyFile[] = "android-test-key-ecdsa.pem";
const char kTestEcdsaPublicKeyFile[] = "android-test-key-ecdsa-public.pem";
const char kTestEcdsaKeyFile[] = "client_4.pk8";
const char kTestEcdsaCertificateFile[] = "client_4.pem";
// Retrieve a JNI local ref for our test ECDSA key.
ScopedJava GetECDSATestKeyJava() {
std::string key;
if (!ImportPrivateKeyFileAsPkcs8(kTestEcdsaKeyFile, &key))
if (!ReadTestFile(kTestEcdsaKeyFile, &key))
return ScopedJava();
return GetPKCS8PrivateKeyJava(android::PRIVATE_KEY_TYPE_ECDSA, key);
}
......@@ -163,10 +138,12 @@ bool VerifyTestECDSASignature(const base::StringPiece& message,
const base::StringPiece& signature) {
crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE);
crypto::ScopedEVP_PKEY pkey(ImportPublicKeyFile(kTestEcdsaPublicKeyFile));
bssl::UniquePtr<EVP_PKEY> pkey =
ImportPublicKeyFromCertificateFile(kTestEcdsaCertificateFile);
if (!pkey)
return false;
crypto::ScopedEC_KEY pub_key(EVP_PKEY_get1_EC_KEY(pkey.get()));
EC_KEY* pub_key = EVP_PKEY_get0_EC_KEY(pkey.get());
if (!pub_key) {
LOG(ERROR) << "Could not get ECDSA public key";
return false;
......@@ -179,8 +156,7 @@ bool VerifyTestECDSASignature(const base::StringPiece& message,
reinterpret_cast<const unsigned char*>(signature.data());
int siglen = static_cast<int>(signature.size());
int ret = ECDSA_verify(0, digest, digest_len, sigbuf, siglen, pub_key.get());
if (ret != 1) {
if (!ECDSA_verify(0, digest, digest_len, sigbuf, siglen, pub_key)) {
LOG(ERROR) << "ECDSA_verify() failed";
return false;
}
......@@ -197,37 +173,28 @@ bool SignWithOpenSSL(int hash_nid,
EVP_PKEY* openssl_key,
std::string* result) {
crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE);
RSA* rsa = EVP_PKEY_get0_RSA(openssl_key);
if (!rsa) {
LOG(ERROR) << "Could not get RSA from EVP_PKEY";
return false;
}
const unsigned char* digest =
reinterpret_cast<const unsigned char*>(message.data());
unsigned int digest_len = static_cast<unsigned int>(message.size());
// With RSA, the signature will always be RSA_size() bytes.
size_t max_signature_size = static_cast<size_t>(RSA_size(rsa));
std::string signature;
size_t signature_size;
size_t max_signature_size;
int key_type = EVP_PKEY_id(openssl_key);
switch (key_type) {
case EVP_PKEY_RSA: {
crypto::ScopedRSA rsa(EVP_PKEY_get1_RSA(openssl_key));
if (!rsa) {
LOG(ERROR) << "Could not get RSA from EVP_PKEY";
return false;
}
// With RSA, the signature will always be RSA_size() bytes.
max_signature_size = static_cast<size_t>(RSA_size(rsa.get()));
unsigned char* p = OpenSSLWriteInto(&signature, max_signature_size);
unsigned int p_len = 0;
int ret = RSA_sign(hash_nid, digest, digest_len, p, &p_len, rsa.get());
if (ret != 1) {
LOG(ERROR) << "RSA_sign() failed";
return false;
}
signature_size = static_cast<size_t>(p_len);
break;
}
default:
LOG(WARNING) << "Invalid OpenSSL key type: " << key_type;
return false;
unsigned char* p = OpenSSLWriteInto(&signature, max_signature_size);
unsigned int p_len = 0;
if (!RSA_sign(hash_nid, digest, digest_len, p, &p_len, rsa)) {
LOG(ERROR) << "RSA_sign() failed";
return false;
}
size_t signature_size = static_cast<size_t>(p_len);
if (signature_size == 0) {
LOG(ERROR) << "Signature is empty!";
return false;
......@@ -326,7 +293,7 @@ TEST(SSLPlatformKeyAndroid, RSA) {
scoped_refptr<SSLPrivateKey> wrapper_key = WrapJavaPrivateKey(rsa_key);
ASSERT_TRUE(wrapper_key);
crypto::ScopedEVP_PKEY openssl_key(ImportPrivateKeyFile(kTestRsaKeyFile));
bssl::UniquePtr<EVP_PKEY> openssl_key = ImportPrivateKeyFile(kTestRsaKeyFile);
ASSERT_TRUE(openssl_key);
// Check that the wrapper key returns the correct length and type.
......@@ -358,7 +325,8 @@ TEST(SSLPlatformKeyAndroid, ECDSA) {
scoped_refptr<SSLPrivateKey> wrapper_key = WrapJavaPrivateKey(ecdsa_key);
ASSERT_TRUE(wrapper_key);
crypto::ScopedEVP_PKEY openssl_key(ImportPrivateKeyFile(kTestEcdsaKeyFile));
bssl::UniquePtr<EVP_PKEY> openssl_key =
ImportPrivateKeyFile(kTestEcdsaKeyFile);
ASSERT_TRUE(openssl_key);
// Check that the wrapper key returns the correct length and type.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment