Skip to content

Commit 6464935

Browse files
committed
Add EC key support (closes #1080)
1 parent 487c765 commit 6464935

8 files changed

+160
-105
lines changed

src/config.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,9 @@ impl MiniserveConfig {
199199
.context("Reading private key file")?
200200
.into_iter()
201201
.find_map(|item| match item {
202-
pemfile::Item::RSAKey(key) | pemfile::Item::PKCS8Key(key) => Some(key),
202+
pemfile::Item::RSAKey(key)
203+
| pemfile::Item::PKCS8Key(key)
204+
| pemfile::Item::ECKey(key) => Some(key),
203205
_ => None,
204206
})
205207
.ok_or_else(|| anyhow!("No supported private key in file"))?;

tests/data/cert_ec.pem

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIBujCCAUCgAwIBAgIUd5MqZqnOPFxMKaYipL6S6B3D3cswCgYIKoZIzj0EAwIw
3+
FDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTIzMDQxNjEzNDUxNVoXDTMzMDQxMzEz
4+
NDUxNVowFDESMBAGA1UEAwwJbG9jYWxob3N0MHYwEAYHKoZIzj0CAQYFK4EEACID
5+
YgAEPcNbYA4vrYfVtR1EZgRZ9/iRvRXtpx9ww3avV9echQj80xZ3KpCTA0T1gQ35
6+
0pCHpd9gMTnDZdHqWfSpBYrFBll26q8rRvSwSTqRQv5YdgrI/yAgZb+CXmjxAZWf
7+
GoHso1MwUTAdBgNVHQ4EFgQU301zfi7+pUOUzs1ObVTwxNHM908wHwYDVR0jBBgw
8+
FoAU301zfi7+pUOUzs1ObVTwxNHM908wDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjO
9+
PQQDAgNoADBlAjEAxoOsn/1Kj1sfc3DhoA/UGetA+porz5dSHJOuuHVl5jS5nuAO
10+
IrQmVvINVuVV3oQyAjBd8HoemembnGCz78Y40v7vLbd2yqWZt8sKX90f/Mj2hGsn
11+
KjraTX2m52X4W8KLhMU=
12+
-----END CERTIFICATE-----

tests/data/cert_rsa.pem

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIFCTCCAvGgAwIBAgIUTUIU8j6S7RXbFFhW/yFftSQvUCYwDQYJKoZIhvcNAQEL
3+
BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTIzMDQxNjEzNDUxNVoXDTMzMDQx
4+
MzEzNDUxNVowFDESMBAGA1UEAwwJbG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEF
5+
AAOCAg8AMIICCgKCAgEArVsX/kqzqJAvuTiXiJZUAyYy3rxo1krwBY4KejzKw3JY
6+
UFP63utA8EgGwXjnABua8bA1WKbl+MZwSOz2QOytuR6kkqwKWWdFeCzhOZDAAudd
7+
LTqkkAxPX56Iv7y/v0emYfc0XNYjSaoq6yhvELVfeWabZ+WuZF9fisJ+Up1NvnLQ
8+
6K5c+NB++gVHS+URgy0Z4jIaDnm5ofETDZSS9cjDLBMKK9X0bC+JFIXa9x5pQU2u
9+
NTnYWtvRuaqAtt0fozT3hqzjAdBf0jhmKOySy/tK0W9n2FHJrqlo68gN0uP1PhQR
10+
9EUCB4ZkElOXpBdoDub4iKVVjtdpBfppOuq+I2hSxtosP+9N0vBSBPrmDPGpdUP+
11+
lhxWEo1wKVW1AhPcOSDhKQM50SLxTk6ZmSKd0Z/obgjttVxqNlHw9GUoXZbztwZb
12+
VPDVVEGJ6OZYSm2KENb1VxhLg/6dS/WXN7J240At9yj8PDEEaIa5YTJhGa2j4fDi
13+
qsGiEx4AQEgliDUPhXhzmROMBdvynITU55au7bnadxPiGPOWj//qZL0URhCNDl2d
14+
Habm7mlgEgaP90R+il5QTe9R+Lg4bTR4f01lXVdB/GE7oent5m82zqpV1TDnCM0Q
15+
UneD6nfZjt9oqtTxr/ldcDFFtQhDD0SMtX82+wll+tzVU6lAUCgRC7+4Ob2CEVcC
16+
AwEAAaNTMFEwHQYDVR0OBBYEFExLPelY6s7HpSVKWjUL6QFbQUeKMB8GA1UdIwQY
17+
MBaAFExLPelY6s7HpSVKWjUL6QFbQUeKMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
18+
hvcNAQELBQADggIBAFzYxVXZTtsT8QAn6lCTcQ59sFRuhPKeuINHlcQRVsYDBukD
19+
/ErkamNNycXrpRvQaYj8/cmk+mPaoleOf0e0iTlOs/IIzWKNy2drlmBuRi8FU5Gg
20+
lsWt4FvEG3RRsDfTo7gjrqKpwnfkGxx7RZ74ZWg5pVXrzFV7N2XoA1Ln49+2oMJV
21+
iZYYSdWdgGxHgivUfEhjliG2CDw6Z5NlEtbu/dXA4sBrSMtP2uW04F/8N61NEhSf
22+
KNMQ2/qXkYHyYcwtsnxAjmgpQJK/yR95vLyTnuC5IT33icvXNLKCIa5gnyok2Lxj
23+
qIx1SCPp7o6onB3otKkrniZEBpTqW4y5ELW1SHLGkSXqm3cwbxK0Fm2bphF0mhIJ
24+
air31ZiENy1ICYGDPv/EetG/bkzy2Cqc9pa+/N5N/9nKh6C9Wi/OsGCn72DvW9OV
25+
6GW/W3HQwiZdTuLYvk0dpsfuFZvEaZrKsvLwkJGA1cS1IHv2V+mPxaHAMPPd+SyA
26+
naZj/1vBWxHAenQoUBRxW2qpK708ITJ/PGodi6l0Kv6NSMlSq+JB/gU/fmBJXgL8
27+
Nmc7pn5UJX74CSaBHnxjEfa3F6RPz00nNUStNl0ZjVZW3kKwQfbsCTiSXIvS/whM
28+
iQxO+l9Ae7ebWcQ4Qd38ZCMjA6e5CUaCj3oJA4VhNh4zNva8fkQ4mfKWleVv
29+
-----END CERTIFICATE-----

tests/data/generate_tls_certs.sh

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
#!/usr/bin/env bash
2-
openssl req -subj '/CN=localhost' -x509 -newkey rsa:4096 -keyout key_pkcs8.pem -out cert.pem -nodes -days 3650
2+
openssl req -subj '/CN=localhost' -x509 -newkey rsa:4096 -keyout key_pkcs8.pem -out cert_rsa.pem -nodes -days 3650
33
openssl rsa -in key_pkcs8.pem -out key_pkcs1.pem
4+
openssl req -subj '/CN=localhost' -x509 -nodes -newkey ec -pkeyopt ec_paramgen_curve:secp384r1 -keyout key_ec.pem -out cert_ec.pem -days 3650

tests/data/key_ec.pem

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDBZiwh8yRBpDgAx+Oa4
3+
qgvw0OOBiDnOHgY9+WuIA74dfGbPQDPwAVIVXfUX0a8YHa6hZANiAAQ9w1tgDi+t
4+
h9W1HURmBFn3+JG9Fe2nH3DDdq9X15yFCPzTFncqkJMDRPWBDfnSkIel32AxOcNl
5+
0epZ9KkFisUGWXbqrytG9LBJOpFC/lh2Csj/ICBlv4JeaPEBlZ8agew=
6+
-----END PRIVATE KEY-----

tests/data/key_pkcs1.pem

+52-51
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,52 @@
1-
-----BEGIN RSA PRIVATE KEY-----
2-
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
51-
-----END RSA PRIVATE KEY-----
1+
-----BEGIN PRIVATE KEY-----
2+
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
51+
u4ePzLXxbfS9k7lshmbr2ix5s1Ypjg==
52+
-----END PRIVATE KEY-----

tests/data/key_pkcs8.pem

+50-50
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,52 @@
11
-----BEGIN PRIVATE KEY-----
2-
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
51-
UbBWUEN95O4LnWFuyhEIOIEmp5JtGks=
2+
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
51+
u4ePzLXxbfS9k7lshmbr2ix5s1Ypjg==
5252
-----END PRIVATE KEY-----

tests/tls.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,17 @@ use select::{document::Document, node::Node};
1010
/// Can start the server with TLS and receive encrypted responses.
1111
#[rstest]
1212
#[case(server(&[
13-
"--tls-cert", "tests/data/cert.pem",
13+
"--tls-cert", "tests/data/cert_rsa.pem",
1414
"--tls-key", "tests/data/key_pkcs8.pem",
1515
]))]
1616
#[case(server(&[
17-
"--tls-cert", "tests/data/cert.pem",
17+
"--tls-cert", "tests/data/cert_rsa.pem",
1818
"--tls-key", "tests/data/key_pkcs1.pem",
1919
]))]
20+
#[case(server(&[
21+
"--tls-cert", "tests/data/cert_ec.pem",
22+
"--tls-key", "tests/data/key_ec.pem",
23+
]))]
2024
fn tls_works(#[case] server: TestServer) -> Result<(), Error> {
2125
let client = ClientBuilder::new()
2226
.danger_accept_invalid_certs(true)

0 commit comments

Comments
 (0)