mirror of https://github.com/wolfSSL/wolfssl.git
Merge pull request #3393 from dgarske/zd11104
Fix for TLS ECDH (static DH) with non-standard curvespull/3490/head
commit
d3e3b21c83
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHgCAQEEIALRjSn7gQicLnRopI92xvo14rrdLVl0IEzDB40t3Pa7oAsGCSskAwMC
|
||||
CAEBB6FEA0IABC7vJ8tXOtxiJba1QlzuKVbjqM6GbkRSIxXIQ8BiEBYeSsuI0HXg
|
||||
OGuAhGSfcKrYuzOQwduBRq7pgckDabXOres=
|
||||
-----END EC PRIVATE KEY-----
|
Binary file not shown.
|
@ -0,0 +1,57 @@
|
|||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number:
|
||||
23:c2:32:32:87:c0:20:35:77:e6:56:4b:ba:d3:ba:19:de:0e:ed:9e
|
||||
Signature Algorithm: ecdsa-with-SHA256
|
||||
Issuer: C = US, ST = Washington, L = Seattle, O = Eliptic, OU = ECC256BPR1-CLI, CN = www.wolfssl.com, emailAddress = info@wolfssl.com
|
||||
Validity
|
||||
Not Before: Oct 15 20:13:58 2020 GMT
|
||||
Not After : Oct 13 20:13:58 2030 GMT
|
||||
Subject: C = US, ST = Washington, L = Seattle, O = Eliptic, OU = ECC256BPR1-CLI, CN = www.wolfssl.com, emailAddress = info@wolfssl.com
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: id-ecPublicKey
|
||||
Public-Key: (256 bit)
|
||||
pub:
|
||||
04:2e:ef:27:cb:57:3a:dc:62:25:b6:b5:42:5c:ee:
|
||||
29:56:e3:a8:ce:86:6e:44:52:23:15:c8:43:c0:62:
|
||||
10:16:1e:4a:cb:88:d0:75:e0:38:6b:80:84:64:9f:
|
||||
70:aa:d8:bb:33:90:c1:db:81:46:ae:e9:81:c9:03:
|
||||
69:b5:ce:ad:eb
|
||||
ASN1 OID: brainpoolP256r1
|
||||
X509v3 extensions:
|
||||
X509v3 Basic Constraints:
|
||||
CA:FALSE
|
||||
Netscape Cert Type:
|
||||
SSL Client, S/MIME
|
||||
X509v3 Subject Key Identifier:
|
||||
B4:1B:3B:4F:65:F2:BF:9E:8A:8F:E3:33:96:44:1F:67:EA:B3:34:D5
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:B4:1B:3B:4F:65:F2:BF:9E:8A:8F:E3:33:96:44:1F:67:EA:B3:34:D5
|
||||
|
||||
X509v3 Key Usage: critical
|
||||
Digital Signature, Non Repudiation, Key Encipherment
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Client Authentication, E-mail Protection
|
||||
Signature Algorithm: ecdsa-with-SHA256
|
||||
30:44:02:20:28:b6:b4:eb:ae:c1:9b:71:0a:15:92:93:d6:2d:
|
||||
12:a6:ff:2d:2a:f5:23:a8:e2:df:6c:d9:33:d4:7f:e9:2e:08:
|
||||
02:20:33:eb:45:aa:c1:7c:36:c1:60:52:09:0e:2d:e4:2a:49:
|
||||
1d:d8:b2:c5:79:3e:be:d4:61:c5:14:d0:b6:f2:42:d4
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICyTCCAnCgAwIBAgIUI8IyMofAIDV35lZLutO6Gd4O7Z4wCgYIKoZIzj0EAwIw
|
||||
gZoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdT
|
||||
ZWF0dGxlMRAwDgYDVQQKDAdFbGlwdGljMRcwFQYDVQQLDA5FQ0MyNTZCUFIxLUNM
|
||||
STEYMBYGA1UEAwwPd3d3LndvbGZzc2wuY29tMR8wHQYJKoZIhvcNAQkBFhBpbmZv
|
||||
QHdvbGZzc2wuY29tMB4XDTIwMTAxNTIwMTM1OFoXDTMwMTAxMzIwMTM1OFowgZox
|
||||
CzAJBgNVBAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0
|
||||
dGxlMRAwDgYDVQQKDAdFbGlwdGljMRcwFQYDVQQLDA5FQ0MyNTZCUFIxLUNMSTEY
|
||||
MBYGA1UEAwwPd3d3LndvbGZzc2wuY29tMR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdv
|
||||
bGZzc2wuY29tMFowFAYHKoZIzj0CAQYJKyQDAwIIAQEHA0IABC7vJ8tXOtxiJba1
|
||||
QlzuKVbjqM6GbkRSIxXIQ8BiEBYeSsuI0HXgOGuAhGSfcKrYuzOQwduBRq7pgckD
|
||||
abXOreujgZAwgY0wCQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCBaAwHQYDVR0O
|
||||
BBYEFLQbO09l8r+eio/jM5ZEH2fqszTVMB8GA1UdIwQYMBaAFLQbO09l8r+eio/j
|
||||
M5ZEH2fqszTVMA4GA1UdDwEB/wQEAwIF4DAdBgNVHSUEFjAUBggrBgEFBQcDAgYI
|
||||
KwYBBQUHAwQwCgYIKoZIzj0EAwIDRwAwRAIgKLa0667Bm3EKFZKT1i0Spv8tKvUj
|
||||
qOLfbNkz1H/pLggCIDPrRarBfDbBYFIJDi3kKkkd2LLFeT6+1GHFFNC28kLU
|
||||
-----END CERTIFICATE-----
|
Binary file not shown.
|
@ -0,0 +1,57 @@
|
|||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number:
|
||||
3d:12:fd:a2:a8:15:63:d8:4e:3f:48:81:46:92:ae:65:f3:27:7f:f2
|
||||
Signature Algorithm: ecdsa-with-SHA256
|
||||
Issuer: C = US, ST = Washington, L = Seattle, O = Eliptic, OU = ECC256K1-CLI, CN = www.wolfssl.com, emailAddress = info@wolfssl.com
|
||||
Validity
|
||||
Not Before: Oct 15 20:13:49 2020 GMT
|
||||
Not After : Oct 13 20:13:49 2030 GMT
|
||||
Subject: C = US, ST = Washington, L = Seattle, O = Eliptic, OU = ECC256K1-CLI, CN = www.wolfssl.com, emailAddress = info@wolfssl.com
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: id-ecPublicKey
|
||||
Public-Key: (256 bit)
|
||||
pub:
|
||||
04:d7:0d:0b:f1:0e:22:88:fe:fb:d5:e5:e1:09:a4:
|
||||
3e:90:76:b3:29:cb:d9:13:60:b7:ea:88:82:d7:8c:
|
||||
b6:db:21:dc:93:0f:e9:58:bb:c5:f2:a2:c2:f5:23:
|
||||
36:c5:d5:eb:24:a6:24:db:ee:02:b0:05:31:a6:33:
|
||||
1f:cd:79:82:10
|
||||
ASN1 OID: secp256k1
|
||||
X509v3 extensions:
|
||||
X509v3 Basic Constraints:
|
||||
CA:FALSE
|
||||
Netscape Cert Type:
|
||||
SSL Client, S/MIME
|
||||
X509v3 Subject Key Identifier:
|
||||
44:6A:D8:71:6D:AB:62:18:21:02:27:23:90:BF:1D:77:B6:79:4B:77
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:44:6A:D8:71:6D:AB:62:18:21:02:27:23:90:BF:1D:77:B6:79:4B:77
|
||||
|
||||
X509v3 Key Usage: critical
|
||||
Digital Signature, Non Repudiation, Key Encipherment
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Client Authentication, E-mail Protection
|
||||
Signature Algorithm: ecdsa-with-SHA256
|
||||
30:45:02:20:73:08:4a:18:d1:ad:81:f6:5c:59:27:da:36:9a:
|
||||
cd:fb:4e:97:5a:58:b3:61:fe:b0:ec:7e:76:ca:0c:5a:d3:c1:
|
||||
02:21:00:a5:05:b4:f5:2f:d3:bf:71:d4:0c:fb:bf:a0:64:0b:
|
||||
cd:bb:18:ef:df:92:bc:5c:cc:6c:74:82:c8:52:5a:f6:46
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICwjCCAmigAwIBAgIUPRL9oqgVY9hOP0iBRpKuZfMnf/IwCgYIKoZIzj0EAwIw
|
||||
gZgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdT
|
||||
ZWF0dGxlMRAwDgYDVQQKDAdFbGlwdGljMRUwEwYDVQQLDAxFQ0MyNTZLMS1DTEkx
|
||||
GDAWBgNVBAMMD3d3dy53b2xmc3NsLmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3
|
||||
b2xmc3NsLmNvbTAeFw0yMDEwMTUyMDEzNDlaFw0zMDEwMTMyMDEzNDlaMIGYMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRs
|
||||
ZTEQMA4GA1UECgwHRWxpcHRpYzEVMBMGA1UECwwMRUNDMjU2SzEtQ0xJMRgwFgYD
|
||||
VQQDDA93d3cud29sZnNzbC5jb20xHzAdBgkqhkiG9w0BCQEWEGluZm9Ad29sZnNz
|
||||
bC5jb20wVjAQBgcqhkjOPQIBBgUrgQQACgNCAATXDQvxDiKI/vvV5eEJpD6QdrMp
|
||||
y9kTYLfqiILXjLbbIdyTD+lYu8XyosL1IzbF1eskpiTb7gKwBTGmMx/NeYIQo4GQ
|
||||
MIGNMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgWgMB0GA1UdDgQWBBREathx
|
||||
batiGCECJyOQvx13tnlLdzAfBgNVHSMEGDAWgBREathxbatiGCECJyOQvx13tnlL
|
||||
dzAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwME
|
||||
MAoGCCqGSM49BAMCA0gAMEUCIHMIShjRrYH2XFkn2jaazftOl1pYs2H+sOx+dsoM
|
||||
WtPBAiEApQW09S/Tv3HUDPu/oGQLzbsY79+SvFzMbHSCyFJa9kY=
|
||||
-----END CERTIFICATE-----
|
|
@ -88,6 +88,39 @@ rm ./certs/client-ecc384-req.pem
|
|||
rm ./certs/client-ecc384-key.par
|
||||
|
||||
|
||||
# Generate ECC Kerberos Keys
|
||||
if [ -f ./certs/ecc/secp256k1-key.pem ]; then
|
||||
openssl ecparam -name secp256k1 -genkey -noout -out ./certs/ecc/secp256k1-key.pem
|
||||
openssl ec -in ./certs/ecc/secp256k1-key.pem -inform PEM -out ./certs/ecc/secp256k1-key.der -outform DER
|
||||
fi
|
||||
# Create self-signed ECC Kerberos certificates
|
||||
openssl req -config ./certs/ecc/wolfssl.cnf -sha256 -new -key ./certs/ecc/secp256k1-key.pem -out ./certs/ecc/server-secp256k1-req.pem -subj "/C=US/ST=Washington/L=Seattle/O=Eliptic/OU=ECC256K1-SRV/CN=www.wolfssl.com/emailAddress=info@wolfssl.com/"
|
||||
openssl x509 -req -in ./certs/ecc/server-secp256k1-req.pem -days 3650 -extfile ./certs/ecc/wolfssl.cnf -extensions server_cert -signkey ./certs/ecc/secp256k1-key.pem -text -out ./certs/ecc/server-secp256k1-cert.pem
|
||||
openssl x509 -inform pem -in ./certs/ecc/server-secp256k1-cert.pem -outform der -out ./certs/ecc/server-secp256k1-cert.der
|
||||
rm ./certs/ecc/server-secp256k1-req.pem
|
||||
|
||||
openssl req -config ./certs/ecc/wolfssl.cnf -sha256 -new -key ./certs/ecc/secp256k1-key.pem -out ./certs/ecc/client-secp256k1-req.pem -subj "/C=US/ST=Washington/L=Seattle/O=Eliptic/OU=ECC256K1-CLI/CN=www.wolfssl.com/emailAddress=info@wolfssl.com/"
|
||||
openssl x509 -req -in ./certs/ecc/client-secp256k1-req.pem -days 3650 -extfile ./certs/ecc/wolfssl.cnf -extensions usr_cert -signkey ./certs/ecc/secp256k1-key.pem -text -out ./certs/ecc/client-secp256k1-cert.pem
|
||||
openssl x509 -inform pem -in ./certs/ecc/client-secp256k1-cert.pem -outform der -out ./certs/ecc/client-secp256k1-cert.der
|
||||
rm ./certs/ecc/client-secp256k1-req.pem
|
||||
|
||||
# Generate ECC Brainpool Keys
|
||||
if [ -f ./certs/ecc/bp256r1-key.pem ]; then
|
||||
openssl ecparam -name brainpoolP256r1 -genkey -noout -out ./certs/ecc/bp256r1-key.pem
|
||||
openssl ec -in ./certs/ecc/bp256r1-key.pem -inform PEM -out ./certs/ecc/bp256r1-key.der -outform DER
|
||||
fi
|
||||
# Create self-signed ECC Brainpool certificates
|
||||
openssl req -config ./certs/ecc/wolfssl.cnf -sha256 -new -key ./certs/ecc/bp256r1-key.pem -out ./certs/ecc/server-bp256r1-req.pem -subj "/C=US/ST=Washington/L=Seattle/O=Eliptic/OU=ECC256BPR1-SRV/CN=www.wolfssl.com/emailAddress=info@wolfssl.com/"
|
||||
openssl x509 -req -in ./certs/ecc/server-bp256r1-req.pem -days 3650 -extfile ./certs/ecc/wolfssl.cnf -extensions server_cert -signkey ./certs/ecc/bp256r1-key.pem -text -out ./certs/ecc/server-bp256r1-cert.pem
|
||||
openssl x509 -inform pem -in ./certs/ecc/server-bp256r1-cert.pem -outform der -out ./certs/ecc/server-bp256r1-cert.der
|
||||
rm ./certs/ecc/server-bp256r1-req.pem
|
||||
|
||||
openssl req -config ./certs/ecc/wolfssl.cnf -sha256 -new -key ./certs/ecc/bp256r1-key.pem -out ./certs/ecc/client-bp256r1-req.pem -subj "/C=US/ST=Washington/L=Seattle/O=Eliptic/OU=ECC256BPR1-CLI/CN=www.wolfssl.com/emailAddress=info@wolfssl.com/"
|
||||
openssl x509 -req -in ./certs/ecc/client-bp256r1-req.pem -days 3650 -extfile ./certs/ecc/wolfssl.cnf -extensions usr_cert -signkey ./certs/ecc/bp256r1-key.pem -text -out ./certs/ecc/client-bp256r1-cert.pem
|
||||
openssl x509 -inform pem -in ./certs/ecc/client-bp256r1-cert.pem -outform der -out ./certs/ecc/client-bp256r1-cert.der
|
||||
rm ./certs/ecc/client-bp256r1-req.pem
|
||||
|
||||
|
||||
# Also manually need to:
|
||||
# 1. Copy ./certs/server-ecc.der into ./certs/test/server-cert-ecc-badsig.der `cp ./certs/server-ecc.der ./certs/test/server-cert-ecc-badsig.der`
|
||||
# 2. Modify last byte so its invalidates signature in ./certs/test/server-cert-ecc-badsig.der
|
||||
|
|
|
@ -6,3 +6,21 @@ EXTRA_DIST += \
|
|||
certs/ecc/genecc.sh \
|
||||
certs/ecc/wolfssl.cnf \
|
||||
certs/ecc/wolfssl_384.cnf
|
||||
|
||||
# Koblitz Curves
|
||||
EXTRA_DIST += \
|
||||
certs/ecc/secp256k1-key.der \
|
||||
certs/ecc/secp256k1-key.pem \
|
||||
certs/ecc/client-secp256k1-cert.der \
|
||||
certs/ecc/client-secp256k1-cert.pem \
|
||||
certs/ecc/server-secp256k1-cert.der \
|
||||
certs/ecc/server-secp256k1-cert.pem
|
||||
|
||||
# Brainpool Curves
|
||||
EXTRA_DIST += \
|
||||
certs/ecc/bp256r1-key.der \
|
||||
certs/ecc/bp256r1-key.pem \
|
||||
certs/ecc/client-bp256r1-cert.der \
|
||||
certs/ecc/client-bp256r1-cert.pem \
|
||||
certs/ecc/server-bp256r1-cert.der \
|
||||
certs/ecc/server-bp256r1-cert.pem
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHQCAQEEILlFjaVww/Q8MLWZOcmS3ZCx3VCJWWoNXxRYRA3e4IApoAcGBSuBBAAK
|
||||
oUQDQgAE1w0L8Q4iiP771eXhCaQ+kHazKcvZE2C36oiC14y22yHckw/pWLvF8qLC
|
||||
9SM2xdXrJKYk2+4CsAUxpjMfzXmCEA==
|
||||
-----END EC PRIVATE KEY-----
|
Binary file not shown.
|
@ -0,0 +1,63 @@
|
|||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number:
|
||||
2f:f8:fa:8b:cf:ec:8f:2c:bc:40:fb:95:a0:3e:04:db:dd:c5:7f:08
|
||||
Signature Algorithm: ecdsa-with-SHA256
|
||||
Issuer: C = US, ST = Washington, L = Seattle, O = Eliptic, OU = ECC256BPR1-SRV, CN = www.wolfssl.com, emailAddress = info@wolfssl.com
|
||||
Validity
|
||||
Not Before: Oct 15 20:13:55 2020 GMT
|
||||
Not After : Oct 13 20:13:55 2030 GMT
|
||||
Subject: C = US, ST = Washington, L = Seattle, O = Eliptic, OU = ECC256BPR1-SRV, CN = www.wolfssl.com, emailAddress = info@wolfssl.com
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: id-ecPublicKey
|
||||
Public-Key: (256 bit)
|
||||
pub:
|
||||
04:2e:ef:27:cb:57:3a:dc:62:25:b6:b5:42:5c:ee:
|
||||
29:56:e3:a8:ce:86:6e:44:52:23:15:c8:43:c0:62:
|
||||
10:16:1e:4a:cb:88:d0:75:e0:38:6b:80:84:64:9f:
|
||||
70:aa:d8:bb:33:90:c1:db:81:46:ae:e9:81:c9:03:
|
||||
69:b5:ce:ad:eb
|
||||
ASN1 OID: brainpoolP256r1
|
||||
X509v3 extensions:
|
||||
X509v3 Basic Constraints:
|
||||
CA:FALSE
|
||||
Netscape Cert Type:
|
||||
SSL Server
|
||||
X509v3 Subject Key Identifier:
|
||||
B4:1B:3B:4F:65:F2:BF:9E:8A:8F:E3:33:96:44:1F:67:EA:B3:34:D5
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:B4:1B:3B:4F:65:F2:BF:9E:8A:8F:E3:33:96:44:1F:67:EA:B3:34:D5
|
||||
DirName:/C=US/ST=Washington/L=Seattle/O=Eliptic/OU=ECC256BPR1-SRV/CN=www.wolfssl.com/emailAddress=info@wolfssl.com
|
||||
serial:2F:F8:FA:8B:CF:EC:8F:2C:BC:40:FB:95:A0:3E:04:DB:DD:C5:7F:08
|
||||
|
||||
X509v3 Key Usage: critical
|
||||
Digital Signature, Key Encipherment, Key Agreement
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Server Authentication
|
||||
Signature Algorithm: ecdsa-with-SHA256
|
||||
30:45:02:21:00:81:37:b3:f7:a7:e7:9d:1b:62:3f:25:20:02:
|
||||
45:93:45:5c:91:23:1b:8b:bc:09:0c:f7:ef:51:29:a4:90:ec:
|
||||
91:02:20:74:dd:26:c3:eb:24:e1:33:ce:b4:c6:f8:5f:9f:99:
|
||||
6d:2b:9a:ee:ac:33:d8:08:29:19:3c:00:f1:83:de:a6:af
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDfjCCAySgAwIBAgIUL/j6i8/sjyy8QPuVoD4E293FfwgwCgYIKoZIzj0EAwIw
|
||||
gZoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdT
|
||||
ZWF0dGxlMRAwDgYDVQQKDAdFbGlwdGljMRcwFQYDVQQLDA5FQ0MyNTZCUFIxLVNS
|
||||
VjEYMBYGA1UEAwwPd3d3LndvbGZzc2wuY29tMR8wHQYJKoZIhvcNAQkBFhBpbmZv
|
||||
QHdvbGZzc2wuY29tMB4XDTIwMTAxNTIwMTM1NVoXDTMwMTAxMzIwMTM1NVowgZox
|
||||
CzAJBgNVBAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0
|
||||
dGxlMRAwDgYDVQQKDAdFbGlwdGljMRcwFQYDVQQLDA5FQ0MyNTZCUFIxLVNSVjEY
|
||||
MBYGA1UEAwwPd3d3LndvbGZzc2wuY29tMR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdv
|
||||
bGZzc2wuY29tMFowFAYHKoZIzj0CAQYJKyQDAwIIAQEHA0IABC7vJ8tXOtxiJba1
|
||||
QlzuKVbjqM6GbkRSIxXIQ8BiEBYeSsuI0HXgOGuAhGSfcKrYuzOQwduBRq7pgckD
|
||||
abXOreujggFDMIIBPzAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIGQDAdBgNV
|
||||
HQ4EFgQUtBs7T2Xyv56Kj+MzlkQfZ+qzNNUwgdoGA1UdIwSB0jCBz4AUtBs7T2Xy
|
||||
v56Kj+MzlkQfZ+qzNNWhgaCkgZ0wgZoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApX
|
||||
YXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMRAwDgYDVQQKDAdFbGlwdGljMRcw
|
||||
FQYDVQQLDA5FQ0MyNTZCUFIxLVNSVjEYMBYGA1UEAwwPd3d3LndvbGZzc2wuY29t
|
||||
MR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tghQv+PqLz+yPLLxA+5Wg
|
||||
PgTb3cV/CDAOBgNVHQ8BAf8EBAMCA6gwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCgYI
|
||||
KoZIzj0EAwIDSAAwRQIhAIE3s/en550bYj8lIAJFk0VckSMbi7wJDPfvUSmkkOyR
|
||||
AiB03SbD6yThM860xvhfn5ltK5rurDPYCCkZPADxg96mrw==
|
||||
-----END CERTIFICATE-----
|
Binary file not shown.
|
@ -0,0 +1,63 @@
|
|||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number:
|
||||
60:d5:b7:78:ff:06:14:3b:1e:c5:ba:8b:dd:5e:67:b2:16:aa:b2:c7
|
||||
Signature Algorithm: ecdsa-with-SHA256
|
||||
Issuer: C = US, ST = Washington, L = Seattle, O = Eliptic, OU = ECC256K1-SRV, CN = www.wolfssl.com, emailAddress = info@wolfssl.com
|
||||
Validity
|
||||
Not Before: Oct 15 20:13:46 2020 GMT
|
||||
Not After : Oct 13 20:13:46 2030 GMT
|
||||
Subject: C = US, ST = Washington, L = Seattle, O = Eliptic, OU = ECC256K1-SRV, CN = www.wolfssl.com, emailAddress = info@wolfssl.com
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: id-ecPublicKey
|
||||
Public-Key: (256 bit)
|
||||
pub:
|
||||
04:d7:0d:0b:f1:0e:22:88:fe:fb:d5:e5:e1:09:a4:
|
||||
3e:90:76:b3:29:cb:d9:13:60:b7:ea:88:82:d7:8c:
|
||||
b6:db:21:dc:93:0f:e9:58:bb:c5:f2:a2:c2:f5:23:
|
||||
36:c5:d5:eb:24:a6:24:db:ee:02:b0:05:31:a6:33:
|
||||
1f:cd:79:82:10
|
||||
ASN1 OID: secp256k1
|
||||
X509v3 extensions:
|
||||
X509v3 Basic Constraints:
|
||||
CA:FALSE
|
||||
Netscape Cert Type:
|
||||
SSL Server
|
||||
X509v3 Subject Key Identifier:
|
||||
44:6A:D8:71:6D:AB:62:18:21:02:27:23:90:BF:1D:77:B6:79:4B:77
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:44:6A:D8:71:6D:AB:62:18:21:02:27:23:90:BF:1D:77:B6:79:4B:77
|
||||
DirName:/C=US/ST=Washington/L=Seattle/O=Eliptic/OU=ECC256K1-SRV/CN=www.wolfssl.com/emailAddress=info@wolfssl.com
|
||||
serial:60:D5:B7:78:FF:06:14:3B:1E:C5:BA:8B:DD:5E:67:B2:16:AA:B2:C7
|
||||
|
||||
X509v3 Key Usage: critical
|
||||
Digital Signature, Key Encipherment, Key Agreement
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Server Authentication
|
||||
Signature Algorithm: ecdsa-with-SHA256
|
||||
30:44:02:20:01:71:b5:5f:e4:5b:b7:95:b4:59:9a:b0:dc:ef:
|
||||
64:01:76:ef:04:07:d8:b4:44:e5:db:86:e4:05:8c:c1:22:19:
|
||||
02:20:3e:93:fb:30:f9:4c:89:39:35:df:b3:79:d5:29:bb:2b:
|
||||
08:84:8a:f8:55:7c:f9:68:d6:2c:11:28:af:a9:33:0f
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDczCCAxqgAwIBAgIUYNW3eP8GFDsexbqL3V5nshaqsscwCgYIKoZIzj0EAwIw
|
||||
gZgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdT
|
||||
ZWF0dGxlMRAwDgYDVQQKDAdFbGlwdGljMRUwEwYDVQQLDAxFQ0MyNTZLMS1TUlYx
|
||||
GDAWBgNVBAMMD3d3dy53b2xmc3NsLmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3
|
||||
b2xmc3NsLmNvbTAeFw0yMDEwMTUyMDEzNDZaFw0zMDEwMTMyMDEzNDZaMIGYMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRs
|
||||
ZTEQMA4GA1UECgwHRWxpcHRpYzEVMBMGA1UECwwMRUNDMjU2SzEtU1JWMRgwFgYD
|
||||
VQQDDA93d3cud29sZnNzbC5jb20xHzAdBgkqhkiG9w0BCQEWEGluZm9Ad29sZnNz
|
||||
bC5jb20wVjAQBgcqhkjOPQIBBgUrgQQACgNCAATXDQvxDiKI/vvV5eEJpD6QdrMp
|
||||
y9kTYLfqiILXjLbbIdyTD+lYu8XyosL1IzbF1eskpiTb7gKwBTGmMx/NeYIQo4IB
|
||||
QTCCAT0wCQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCBkAwHQYDVR0OBBYEFERq
|
||||
2HFtq2IYIQInI5C/HXe2eUt3MIHYBgNVHSMEgdAwgc2AFERq2HFtq2IYIQInI5C/
|
||||
HXe2eUt3oYGepIGbMIGYMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv
|
||||
bjEQMA4GA1UEBwwHU2VhdHRsZTEQMA4GA1UECgwHRWxpcHRpYzEVMBMGA1UECwwM
|
||||
RUNDMjU2SzEtU1JWMRgwFgYDVQQDDA93d3cud29sZnNzbC5jb20xHzAdBgkqhkiG
|
||||
9w0BCQEWEGluZm9Ad29sZnNzbC5jb22CFGDVt3j/BhQ7HsW6i91eZ7IWqrLHMA4G
|
||||
A1UdDwEB/wQEAwIDqDATBgNVHSUEDDAKBggrBgEFBQcDATAKBggqhkjOPQQDAgNH
|
||||
ADBEAiABcbVf5Fu3lbRZmrDc72QBdu8EB9i0ROXbhuQFjMEiGQIgPpP7MPlMiTk1
|
||||
37N51Sm7KwiEivhVfPlo1iwRKK+pMw8=
|
||||
-----END CERTIFICATE-----
|
11
configure.ac
11
configure.ac
|
@ -1880,6 +1880,16 @@ then
|
|||
fi
|
||||
|
||||
|
||||
# ECC Minimum Key Size
|
||||
ENABLED_ECCMINSZ=224
|
||||
AC_ARG_WITH([eccminsz],
|
||||
[AS_HELP_STRING([--with-eccminsz=BITS],[Sets the ECC minimum key size (default: 224 bits)])],
|
||||
[
|
||||
ENABLED_ECCMINSZ=$withval
|
||||
AM_CFLAGS="$AM_CFLAGS -DECC_MIN_KEY_SZ=$withval"
|
||||
]
|
||||
)
|
||||
|
||||
# Compressed Key
|
||||
AC_ARG_ENABLE([compkey],
|
||||
[AS_HELP_STRING([--enable-compkey],[Enable compressed keys support (default: disabled)])],
|
||||
|
@ -6042,6 +6052,7 @@ echo " * DH: $ENABLED_DH"
|
|||
echo " * DH Default Parameters: $ENABLED_DHDEFAULTPARAMS"
|
||||
echo " * ECC: $ENABLED_ECC"
|
||||
echo " * ECC Custom Curves $ENABLED_ECCCUSTCURVES"
|
||||
echo " * ECC Minimum Bits $ENABLED_ECCMINSZ"
|
||||
echo " * CURVE25519: $ENABLED_CURVE25519"
|
||||
echo " * ED25519: $ENABLED_ED25519"
|
||||
echo " * CURVE448: $ENABLED_CURVE448"
|
||||
|
|
|
@ -4278,11 +4278,12 @@ int EccMakeKey(WOLFSSL* ssl, ecc_key* key, ecc_key* peer)
|
|||
#endif
|
||||
|
||||
/* get key size */
|
||||
if (peer == NULL) {
|
||||
if (peer == NULL || peer->dp == NULL) {
|
||||
keySz = ssl->eccTempKeySz;
|
||||
}
|
||||
else {
|
||||
keySz = peer->dp->size;
|
||||
ecc_curve = peer->dp->id;
|
||||
}
|
||||
|
||||
/* get curve type */
|
||||
|
@ -11513,6 +11514,10 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx,
|
|||
ret = ECC_KEY_SIZE_E;
|
||||
WOLFSSL_MSG("Peer ECC key is too small");
|
||||
}
|
||||
|
||||
/* populate curve oid - if missing */
|
||||
if (ssl->options.side == WOLFSSL_CLIENT_END && ssl->ecdhCurveOID == 0)
|
||||
ssl->ecdhCurveOID = args->dCert->pkCurveOID;
|
||||
break;
|
||||
}
|
||||
#endif /* HAVE_ECC */
|
||||
|
@ -11563,6 +11568,10 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx,
|
|||
ret = ECC_KEY_SIZE_E;
|
||||
WOLFSSL_MSG("Peer ECC key is too small");
|
||||
}
|
||||
|
||||
/* populate curve oid - if missing */
|
||||
if (ssl->options.side == WOLFSSL_CLIENT_END && ssl->ecdhCurveOID == 0)
|
||||
ssl->ecdhCurveOID = ECC_X25519_OID;
|
||||
break;
|
||||
}
|
||||
#endif /* HAVE_ED25519 */
|
||||
|
@ -11612,6 +11621,10 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx,
|
|||
ret = ECC_KEY_SIZE_E;
|
||||
WOLFSSL_MSG("Peer ECC key is too small");
|
||||
}
|
||||
|
||||
/* populate curve oid - if missing */
|
||||
if (ssl->options.side == WOLFSSL_CLIENT_END && ssl->ecdhCurveOID == 0)
|
||||
ssl->ecdhCurveOID = ECC_X448_OID;
|
||||
break;
|
||||
}
|
||||
#endif /* HAVE_ED448 */
|
||||
|
@ -21101,7 +21114,7 @@ exit_dpk:
|
|||
int ret = ECC_CURVE_ERROR;
|
||||
|
||||
switch (tlsCurveId) {
|
||||
#if defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 160
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP160R1: return ECC_SECP160R1_OID;
|
||||
#endif /* !NO_ECC_SECP */
|
||||
|
@ -21112,7 +21125,7 @@ exit_dpk:
|
|||
case WOLFSSL_ECC_SECP160K1: return ECC_SECP160K1_OID;
|
||||
#endif /* HAVE_ECC_KOBLITZ */
|
||||
#endif
|
||||
#if defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 192
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP192R1: return ECC_SECP192R1_OID;
|
||||
#endif /* !NO_ECC_SECP */
|
||||
|
@ -21120,7 +21133,7 @@ exit_dpk:
|
|||
case WOLFSSL_ECC_SECP192K1: return ECC_SECP192K1_OID;
|
||||
#endif /* HAVE_ECC_KOBLITZ */
|
||||
#endif
|
||||
#if defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 224
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP224R1: return ECC_SECP224R1_OID;
|
||||
#endif /* !NO_ECC_SECP */
|
||||
|
@ -21128,10 +21141,10 @@ exit_dpk:
|
|||
case WOLFSSL_ECC_SECP224K1: return ECC_SECP224K1_OID;
|
||||
#endif /* HAVE_ECC_KOBLITZ */
|
||||
#endif
|
||||
#ifdef HAVE_CURVE25519
|
||||
#if defined(HAVE_CURVE25519) && ECC_MIN_KEY_SZ <= 256
|
||||
case WOLFSSL_ECC_X25519: return ECC_X25519_OID;
|
||||
#endif
|
||||
#if !defined(NO_ECC256) || defined(HAVE_ALL_CURVES)
|
||||
#if (!defined(NO_ECC256) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 256
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP256R1: return ECC_SECP256R1_OID;
|
||||
#endif /* !NO_ECC_SECP */
|
||||
|
@ -21142,10 +21155,10 @@ exit_dpk:
|
|||
case WOLFSSL_ECC_BRAINPOOLP256R1: return ECC_BRAINPOOLP256R1_OID;
|
||||
#endif /* HAVE_ECC_BRAINPOOL */
|
||||
#endif
|
||||
#ifdef HAVE_CURVE448
|
||||
#if defined(HAVE_CURVE448) && ECC_MIN_KEY_SZ <= 448
|
||||
case WOLFSSL_ECC_X448: return ECC_X448_OID;
|
||||
#endif
|
||||
#if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 384
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP384R1: return ECC_SECP384R1_OID;
|
||||
#endif /* !NO_ECC_SECP */
|
||||
|
@ -21153,12 +21166,12 @@ exit_dpk:
|
|||
case WOLFSSL_ECC_BRAINPOOLP384R1: return ECC_BRAINPOOLP384R1_OID;
|
||||
#endif /* HAVE_ECC_BRAINPOOL */
|
||||
#endif
|
||||
#if defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 512
|
||||
#ifdef HAVE_ECC_BRAINPOOL
|
||||
case WOLFSSL_ECC_BRAINPOOLP512R1: return ECC_BRAINPOOLP512R1_OID;
|
||||
#endif /* HAVE_ECC_BRAINPOOL */
|
||||
#endif
|
||||
#if defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 521
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP521R1: return ECC_SECP521R1_OID;
|
||||
#endif /* !NO_ECC_SECP */
|
||||
|
@ -24750,7 +24763,7 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
|
|||
/* returns the WOLFSSL_* version of the curve from the OID sum */
|
||||
word16 GetCurveByOID(int oidSum) {
|
||||
switch(oidSum) {
|
||||
#if defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 160
|
||||
#ifndef NO_ECC_SECP
|
||||
case ECC_SECP160R1_OID:
|
||||
return WOLFSSL_ECC_SECP160R1;
|
||||
|
@ -24764,7 +24777,7 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
|
|||
return WOLFSSL_ECC_SECP160K1;
|
||||
#endif /* HAVE_ECC_KOBLITZ */
|
||||
#endif
|
||||
#if defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 192
|
||||
#ifndef NO_ECC_SECP
|
||||
case ECC_SECP192R1_OID:
|
||||
return WOLFSSL_ECC_SECP192R1;
|
||||
|
@ -24774,7 +24787,7 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
|
|||
return WOLFSSL_ECC_SECP192K1;
|
||||
#endif /* HAVE_ECC_KOBLITZ */
|
||||
#endif
|
||||
#if defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 224
|
||||
#ifndef NO_ECC_SECP
|
||||
case ECC_SECP224R1_OID:
|
||||
return WOLFSSL_ECC_SECP224R1;
|
||||
|
@ -24784,7 +24797,7 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
|
|||
return WOLFSSL_ECC_SECP224K1;
|
||||
#endif /* HAVE_ECC_KOBLITZ */
|
||||
#endif
|
||||
#if !defined(NO_ECC256) || defined(HAVE_ALL_CURVES)
|
||||
#if (!defined(NO_ECC256) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 256
|
||||
#ifndef NO_ECC_SECP
|
||||
case ECC_SECP256R1_OID:
|
||||
return WOLFSSL_ECC_SECP256R1;
|
||||
|
@ -24798,7 +24811,7 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
|
|||
return WOLFSSL_ECC_BRAINPOOLP256R1;
|
||||
#endif /* HAVE_ECC_BRAINPOOL */
|
||||
#endif
|
||||
#if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 384
|
||||
#ifndef NO_ECC_SECP
|
||||
case ECC_SECP384R1_OID:
|
||||
return WOLFSSL_ECC_SECP384R1;
|
||||
|
@ -24808,13 +24821,13 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
|
|||
return WOLFSSL_ECC_BRAINPOOLP384R1;
|
||||
#endif /* HAVE_ECC_BRAINPOOL */
|
||||
#endif
|
||||
#if defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 512
|
||||
#ifdef HAVE_ECC_BRAINPOOL
|
||||
case ECC_BRAINPOOLP512R1_OID:
|
||||
return WOLFSSL_ECC_BRAINPOOLP512R1;
|
||||
#endif /* HAVE_ECC_BRAINPOOL */
|
||||
#endif
|
||||
#if defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 521
|
||||
#ifndef NO_ECC_SECP
|
||||
case ECC_SECP521R1_OID:
|
||||
return WOLFSSL_ECC_SECP521R1;
|
||||
|
@ -29385,6 +29398,13 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
|
|||
ssl->arrays->preMasterSz = private_key->dp->size;
|
||||
|
||||
ssl->peerEccKeyPresent = 1;
|
||||
|
||||
#if defined(WOLFSSL_TLS13) || defined(HAVE_FFDHE)
|
||||
/* client_hello may have sent FFEDH2048, which sets namedGroup,
|
||||
but that is not being used, so clear it */
|
||||
/* resolves issue with server side wolfSSL_get_curve_name */
|
||||
ssl->namedGroup = 0;
|
||||
#endif
|
||||
#endif /* HAVE_ECC */
|
||||
|
||||
break;
|
||||
|
|
11
src/ssl.c
11
src/ssl.c
|
@ -10153,12 +10153,13 @@ int wolfSSL_use_certificate_chain_file_format(WOLFSSL* ssl, const char* file,
|
|||
|
||||
#ifdef HAVE_ECC
|
||||
|
||||
/* Set Temp CTX EC-DHE size in octets, should be 20 - 66 for 160 - 521 bit */
|
||||
/* Set Temp CTX EC-DHE size in octets, can be 14 - 66 (112 - 521 bit) */
|
||||
int wolfSSL_CTX_SetTmpEC_DHE_Sz(WOLFSSL_CTX* ctx, word16 sz)
|
||||
{
|
||||
if (ctx == NULL)
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
/* if 0 then get from loaded private key */
|
||||
if (sz == 0) {
|
||||
/* applies only to ECDSA */
|
||||
if (ctx->privateKeyType != ecc_dsa_sa_algo)
|
||||
|
@ -10182,10 +10183,14 @@ int wolfSSL_CTX_SetTmpEC_DHE_Sz(WOLFSSL_CTX* ctx, word16 sz)
|
|||
}
|
||||
|
||||
|
||||
/* Set Temp SSL EC-DHE size in octets, should be 20 - 66 for 160 - 521 bit */
|
||||
/* Set Temp SSL EC-DHE size in octets, can be 14 - 66 (112 - 521 bit) */
|
||||
int wolfSSL_SetTmpEC_DHE_Sz(WOLFSSL* ssl, word16 sz)
|
||||
{
|
||||
if (ssl == NULL || sz < ECC_MINSIZE || sz > ECC_MAXSIZE)
|
||||
if (ssl == NULL)
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
/* check size */
|
||||
if (sz < ECC_MINSIZE || sz > ECC_MAXSIZE)
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
ssl->eccTempKeySz = sz;
|
||||
|
|
112
src/tls.c
112
src/tls.c
|
@ -4340,7 +4340,7 @@ int TLSX_ValidateSupportedCurves(WOLFSSL* ssl, byte first, byte second) {
|
|||
/* find supported curve */
|
||||
switch (curve->name) {
|
||||
#ifdef HAVE_ECC
|
||||
#if defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 160
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP160R1:
|
||||
pkOid = oid = ECC_SECP160R1_OID;
|
||||
|
@ -4359,8 +4359,8 @@ int TLSX_ValidateSupportedCurves(WOLFSSL* ssl, byte first, byte second) {
|
|||
octets = 20;
|
||||
break;
|
||||
#endif /* HAVE_ECC_KOBLITZ */
|
||||
#endif
|
||||
#if defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)
|
||||
#endif
|
||||
#if (defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 192
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP192R1:
|
||||
pkOid = oid = ECC_SECP192R1_OID;
|
||||
|
@ -4374,7 +4374,7 @@ int TLSX_ValidateSupportedCurves(WOLFSSL* ssl, byte first, byte second) {
|
|||
break;
|
||||
#endif /* HAVE_ECC_KOBLITZ */
|
||||
#endif
|
||||
#if defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 224
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP224R1:
|
||||
pkOid = oid = ECC_SECP224R1_OID;
|
||||
|
@ -4388,7 +4388,7 @@ int TLSX_ValidateSupportedCurves(WOLFSSL* ssl, byte first, byte second) {
|
|||
break;
|
||||
#endif /* HAVE_ECC_KOBLITZ */
|
||||
#endif
|
||||
#if !defined(NO_ECC256) || defined(HAVE_ALL_CURVES)
|
||||
#if (!defined(NO_ECC256) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 256
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP256R1:
|
||||
pkOid = oid = ECC_SECP256R1_OID;
|
||||
|
@ -4397,7 +4397,7 @@ int TLSX_ValidateSupportedCurves(WOLFSSL* ssl, byte first, byte second) {
|
|||
#endif /* !NO_ECC_SECP */
|
||||
#endif /* !NO_ECC256 || HAVE_ALL_CURVES */
|
||||
#endif
|
||||
#if defined(HAVE_CURVE25519) || defined(HAVE_ED25519)
|
||||
#if (defined(HAVE_CURVE25519) || defined(HAVE_ED25519)) && ECC_MIN_KEY_SZ <= 256
|
||||
case WOLFSSL_ECC_X25519:
|
||||
oid = ECC_X25519_OID;
|
||||
#ifdef HAVE_ED25519
|
||||
|
@ -4409,7 +4409,7 @@ int TLSX_ValidateSupportedCurves(WOLFSSL* ssl, byte first, byte second) {
|
|||
break;
|
||||
#endif /* HAVE_CURVE25519 */
|
||||
#ifdef HAVE_ECC
|
||||
#if !defined(NO_ECC256) || defined(HAVE_ALL_CURVES)
|
||||
#if (!defined(NO_ECC256) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 256
|
||||
#ifdef HAVE_ECC_KOBLITZ
|
||||
case WOLFSSL_ECC_SECP256K1:
|
||||
pkOid = oid = ECC_SECP256K1_OID;
|
||||
|
@ -4423,20 +4423,7 @@ int TLSX_ValidateSupportedCurves(WOLFSSL* ssl, byte first, byte second) {
|
|||
break;
|
||||
#endif /* HAVE_ECC_BRAINPOOL */
|
||||
#endif
|
||||
#endif
|
||||
#if defined(HAVE_CURVE448) || defined(HAVE_ED448)
|
||||
case WOLFSSL_ECC_X448:
|
||||
oid = ECC_X448_OID;
|
||||
#ifdef HAVE_ED448
|
||||
pkOid = ECC_ED448_OID;
|
||||
#else
|
||||
pkOid = ECC_X448_OID;
|
||||
#endif
|
||||
octets = 57;
|
||||
break;
|
||||
#endif /* HAVE_CURVE448 */
|
||||
#ifdef HAVE_ECC
|
||||
#if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 384
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP384R1:
|
||||
pkOid = oid = ECC_SECP384R1_OID;
|
||||
|
@ -4450,7 +4437,20 @@ int TLSX_ValidateSupportedCurves(WOLFSSL* ssl, byte first, byte second) {
|
|||
break;
|
||||
#endif /* HAVE_ECC_BRAINPOOL */
|
||||
#endif
|
||||
#if defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES)
|
||||
#endif
|
||||
#if (defined(HAVE_CURVE448) || defined(HAVE_ED448)) && ECC_MIN_KEY_SZ <= 448
|
||||
case WOLFSSL_ECC_X448:
|
||||
oid = ECC_X448_OID;
|
||||
#ifdef HAVE_ED448
|
||||
pkOid = ECC_ED448_OID;
|
||||
#else
|
||||
pkOid = ECC_X448_OID;
|
||||
#endif
|
||||
octets = 57;
|
||||
break;
|
||||
#endif /* HAVE_CURVE448 */
|
||||
#ifdef HAVE_ECC
|
||||
#if (defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 512
|
||||
#ifdef HAVE_ECC_BRAINPOOL
|
||||
case WOLFSSL_ECC_BRAINPOOLP512R1:
|
||||
pkOid = oid = ECC_BRAINPOOLP512R1_OID;
|
||||
|
@ -4458,7 +4458,7 @@ int TLSX_ValidateSupportedCurves(WOLFSSL* ssl, byte first, byte second) {
|
|||
break;
|
||||
#endif /* HAVE_ECC_BRAINPOOL */
|
||||
#endif
|
||||
#if defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 521
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP521R1:
|
||||
pkOid = oid = ECC_SECP521R1_OID;
|
||||
|
@ -6919,7 +6919,7 @@ static int TLSX_KeyShare_GenEccKey(WOLFSSL *ssl, KeyShareEntry* kse)
|
|||
/* TODO: [TLS13] The key sizes should come from wolfcrypt. */
|
||||
/* Translate named group to a curve id. */
|
||||
switch (kse->group) {
|
||||
#if !defined(NO_ECC256) || defined(HAVE_ALL_CURVES)
|
||||
#if (!defined(NO_ECC256) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 256
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP256R1:
|
||||
curveId = ECC_SECP256R1;
|
||||
|
@ -6928,7 +6928,7 @@ static int TLSX_KeyShare_GenEccKey(WOLFSSL *ssl, KeyShareEntry* kse)
|
|||
break;
|
||||
#endif /* !NO_ECC_SECP */
|
||||
#endif
|
||||
#if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 384
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP384R1:
|
||||
curveId = ECC_SECP384R1;
|
||||
|
@ -6937,7 +6937,7 @@ static int TLSX_KeyShare_GenEccKey(WOLFSSL *ssl, KeyShareEntry* kse)
|
|||
break;
|
||||
#endif /* !NO_ECC_SECP */
|
||||
#endif
|
||||
#if defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 521
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP521R1:
|
||||
curveId = ECC_SECP521R1;
|
||||
|
@ -6946,7 +6946,7 @@ static int TLSX_KeyShare_GenEccKey(WOLFSSL *ssl, KeyShareEntry* kse)
|
|||
break;
|
||||
#endif /* !NO_ECC_SECP */
|
||||
#endif
|
||||
#ifdef HAVE_X448
|
||||
#if defined(HAVE_X448) && ECC_MIN_KEY_SZ <= 448
|
||||
case WOLFSSL_ECC_X448:
|
||||
curveId = ECC_X448;
|
||||
dataSize = keySize = 56;
|
||||
|
@ -7477,28 +7477,28 @@ static int TLSX_KeyShare_ProcessEcc(WOLFSSL* ssl, KeyShareEntry* keyShareEntry)
|
|||
|
||||
/* find supported curve */
|
||||
switch (keyShareEntry->group) {
|
||||
#if !defined(NO_ECC256) || defined(HAVE_ALL_CURVES)
|
||||
#if (!defined(NO_ECC256) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 256
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP256R1:
|
||||
curveId = ECC_SECP256R1;
|
||||
break;
|
||||
#endif /* !NO_ECC_SECP */
|
||||
#endif
|
||||
#if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 384
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP384R1:
|
||||
curveId = ECC_SECP384R1;
|
||||
break;
|
||||
#endif /* !NO_ECC_SECP */
|
||||
#endif
|
||||
#if defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 521
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP521R1:
|
||||
curveId = ECC_SECP521R1;
|
||||
break;
|
||||
#endif /* !NO_ECC_SECP */
|
||||
#endif
|
||||
#ifdef HAVE_X448
|
||||
#if defined(HAVE_X448) && ECC_MIN_KEY_SZ <= 448
|
||||
case WOLFSSL_ECC_X448:
|
||||
curveId = ECC_X448;
|
||||
break;
|
||||
|
@ -7973,27 +7973,27 @@ static int TLSX_KeyShare_IsSupported(int namedGroup)
|
|||
case WOLFSSL_FFDHE_8192:
|
||||
break;
|
||||
#endif
|
||||
#if !defined(NO_ECC256) || defined(HAVE_ALL_CURVES)
|
||||
#if (!defined(NO_ECC256) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 256
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP256R1:
|
||||
break;
|
||||
#endif /* !NO_ECC_SECP */
|
||||
#endif
|
||||
#ifdef HAVE_CURVE25519
|
||||
#if defined(HAVE_CURVE25519) && ECC_MIN_KEY_SZ <= 256
|
||||
case WOLFSSL_ECC_X25519:
|
||||
break;
|
||||
#endif
|
||||
#ifdef HAVE_CURVE448
|
||||
#if defined(HAVE_CURVE448) && ECC_MIN_KEY_SZ <= 448
|
||||
case WOLFSSL_ECC_X448:
|
||||
break;
|
||||
#endif
|
||||
#if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 384
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP384R1:
|
||||
break;
|
||||
#endif /* !NO_ECC_SECP */
|
||||
#endif
|
||||
#if defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 521
|
||||
#ifndef NO_ECC_SECP
|
||||
case WOLFSSL_ECC_SECP521R1:
|
||||
break;
|
||||
|
@ -8020,29 +8020,29 @@ static int TLSX_KeyShare_GroupRank(WOLFSSL* ssl, int group)
|
|||
|
||||
if (ssl->numGroups == 0) {
|
||||
#if defined(HAVE_ECC) && defined(HAVE_SUPPORTED_CURVES)
|
||||
#if !defined(NO_ECC256) || defined(HAVE_ALL_CURVES)
|
||||
#if (!defined(NO_ECC256) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 256
|
||||
#ifndef NO_ECC_SECP
|
||||
ssl->group[ssl->numGroups++] = WOLFSSL_ECC_SECP256R1;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#ifndef HAVE_FIPS
|
||||
#if defined(HAVE_CURVE25519)
|
||||
#if defined(HAVE_CURVE25519) && ECC_MIN_KEY_SZ <= 256
|
||||
ssl->group[ssl->numGroups++] = WOLFSSL_ECC_X25519;
|
||||
#endif
|
||||
#endif
|
||||
#ifndef HAVE_FIPS
|
||||
#if defined(HAVE_CURVE448)
|
||||
#if defined(HAVE_CURVE448) && ECC_MIN_KEY_SZ <= 448
|
||||
ssl->group[ssl->numGroups++] = WOLFSSL_ECC_X448;
|
||||
#endif
|
||||
#endif
|
||||
#if defined(HAVE_ECC) && defined(HAVE_SUPPORTED_CURVES)
|
||||
#if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 384
|
||||
#ifndef NO_ECC_SECP
|
||||
ssl->group[ssl->numGroups++] = WOLFSSL_ECC_SECP384R1;
|
||||
#endif
|
||||
#endif
|
||||
#if defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 521
|
||||
#ifndef NO_ECC_SECP
|
||||
ssl->group[ssl->numGroups++] = WOLFSSL_ECC_SECP521R1;
|
||||
#endif
|
||||
|
@ -9847,21 +9847,21 @@ static int TLSX_PopulateSupportedGroups(WOLFSSL* ssl, TLSX** extensions)
|
|||
|
||||
#if defined(HAVE_ECC) && defined(HAVE_SUPPORTED_CURVES)
|
||||
/* list in order by strength, since not all servers choose by strength */
|
||||
#if defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 521
|
||||
#ifndef NO_ECC_SECP
|
||||
ret = TLSX_UseSupportedCurve(extensions,
|
||||
WOLFSSL_ECC_SECP521R1, ssl->heap);
|
||||
if (ret != WOLFSSL_SUCCESS) return ret;
|
||||
#endif
|
||||
#endif
|
||||
#if defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 512
|
||||
#ifdef HAVE_ECC_BRAINPOOL
|
||||
ret = TLSX_UseSupportedCurve(extensions,
|
||||
WOLFSSL_ECC_BRAINPOOLP512R1, ssl->heap);
|
||||
if (ret != WOLFSSL_SUCCESS) return ret;
|
||||
#endif
|
||||
#endif
|
||||
#if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 384
|
||||
#ifndef NO_ECC_SECP
|
||||
ret = TLSX_UseSupportedCurve(extensions,
|
||||
WOLFSSL_ECC_SECP384R1, ssl->heap);
|
||||
|
@ -9876,7 +9876,7 @@ static int TLSX_PopulateSupportedGroups(WOLFSSL* ssl, TLSX** extensions)
|
|||
#endif /* HAVE_ECC && HAVE_SUPPORTED_CURVES */
|
||||
|
||||
#ifndef HAVE_FIPS
|
||||
#if defined(HAVE_CURVE448)
|
||||
#if defined(HAVE_CURVE448) && ECC_MIN_KEY_SZ <= 448
|
||||
ret = TLSX_UseSupportedCurve(extensions,
|
||||
WOLFSSL_ECC_X448, ssl->heap);
|
||||
if (ret != WOLFSSL_SUCCESS) return ret;
|
||||
|
@ -9884,7 +9884,7 @@ static int TLSX_PopulateSupportedGroups(WOLFSSL* ssl, TLSX** extensions)
|
|||
#endif /* HAVE_FIPS */
|
||||
|
||||
#if defined(HAVE_ECC) && defined(HAVE_SUPPORTED_CURVES)
|
||||
#if !defined(NO_ECC256) || defined(HAVE_ALL_CURVES)
|
||||
#if (!defined(NO_ECC256) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 256
|
||||
#ifndef NO_ECC_SECP
|
||||
ret = TLSX_UseSupportedCurve(extensions,
|
||||
WOLFSSL_ECC_SECP256R1, ssl->heap);
|
||||
|
@ -9904,7 +9904,7 @@ static int TLSX_PopulateSupportedGroups(WOLFSSL* ssl, TLSX** extensions)
|
|||
#endif /* HAVE_ECC && HAVE_SUPPORTED_CURVES */
|
||||
|
||||
#ifndef HAVE_FIPS
|
||||
#if defined(HAVE_CURVE25519)
|
||||
#if defined(HAVE_CURVE25519) && ECC_MIN_KEY_SZ <= 256
|
||||
ret = TLSX_UseSupportedCurve(extensions,
|
||||
WOLFSSL_ECC_X25519, ssl->heap);
|
||||
if (ret != WOLFSSL_SUCCESS) return ret;
|
||||
|
@ -9912,7 +9912,7 @@ static int TLSX_PopulateSupportedGroups(WOLFSSL* ssl, TLSX** extensions)
|
|||
#endif /* HAVE_FIPS */
|
||||
|
||||
#if defined(HAVE_ECC) && defined(HAVE_SUPPORTED_CURVES)
|
||||
#if defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 224
|
||||
#ifndef NO_ECC_SECP
|
||||
ret = TLSX_UseSupportedCurve(extensions,
|
||||
WOLFSSL_ECC_SECP224R1, ssl->heap);
|
||||
|
@ -9926,7 +9926,7 @@ static int TLSX_PopulateSupportedGroups(WOLFSSL* ssl, TLSX** extensions)
|
|||
#endif
|
||||
|
||||
#ifndef HAVE_FIPS
|
||||
#if defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 192
|
||||
#ifndef NO_ECC_SECP
|
||||
ret = TLSX_UseSupportedCurve(extensions,
|
||||
WOLFSSL_ECC_SECP192R1, ssl->heap);
|
||||
|
@ -9938,7 +9938,7 @@ static int TLSX_PopulateSupportedGroups(WOLFSSL* ssl, TLSX** extensions)
|
|||
if (ret != WOLFSSL_SUCCESS) return ret;
|
||||
#endif
|
||||
#endif
|
||||
#if defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 160
|
||||
#ifndef NO_ECC_SECP
|
||||
ret = TLSX_UseSupportedCurve(extensions,
|
||||
WOLFSSL_ECC_SECP160R1, ssl->heap);
|
||||
|
@ -9958,7 +9958,7 @@ static int TLSX_PopulateSupportedGroups(WOLFSSL* ssl, TLSX** extensions)
|
|||
#endif /* HAVE_FIPS */
|
||||
#endif /* HAVE_ECC && HAVE_SUPPORTED_CURVES */
|
||||
|
||||
/* Add FFDHE supported groups. */
|
||||
/* Add FFDHE supported groups. */
|
||||
#ifdef HAVE_FFDHE_8192
|
||||
if (8192/8 >= ssl->options.minDhKeySz &&
|
||||
8192/8 <= ssl->options.maxDhKeySz) {
|
||||
|
@ -10180,17 +10180,17 @@ int TLSX_PopulateExtensions(WOLFSSL* ssl, byte isServer)
|
|||
#endif
|
||||
{
|
||||
#if defined(HAVE_ECC) && (!defined(NO_ECC256) || \
|
||||
defined(HAVE_ALL_CURVES)) && !defined(NO_ECC_SECP)
|
||||
defined(HAVE_ALL_CURVES)) && !defined(NO_ECC_SECP) && ECC_MIN_KEY_SZ <= 256
|
||||
namedGroup = WOLFSSL_ECC_SECP256R1;
|
||||
#elif defined(HAVE_CURVE25519)
|
||||
#elif defined(HAVE_CURVE25519) && ECC_MIN_KEY_SZ <= 256
|
||||
namedGroup = WOLFSSL_ECC_X25519;
|
||||
#elif defined(HAVE_CURVE448)
|
||||
#elif defined(HAVE_CURVE448) && ECC_MIN_KEY_SZ <= 448
|
||||
namedGroup = WOLFSSL_ECC_X448;
|
||||
#elif defined(HAVE_ECC) && (!defined(NO_ECC384) || \
|
||||
defined(HAVE_ALL_CURVES)) && !defined(NO_ECC_SECP)
|
||||
defined(HAVE_ALL_CURVES)) && !defined(NO_ECC_SECP) && ECC_MIN_KEY_SZ <= 384
|
||||
namedGroup = WOLFSSL_ECC_SECP384R1;
|
||||
#elif defined(HAVE_ECC) && (!defined(NO_ECC521) || \
|
||||
defined(HAVE_ALL_CURVES)) && !defined(NO_ECC_SECP)
|
||||
defined(HAVE_ALL_CURVES)) && !defined(NO_ECC_SECP) && ECC_MIN_KEY_SZ <= 521
|
||||
namedGroup = WOLFSSL_ECC_SECP521R1;
|
||||
#elif defined(HAVE_FFDHE_2048)
|
||||
namedGroup = WOLFSSL_FFDHE_2048;
|
||||
|
|
110
tests/api.c
110
tests/api.c
|
@ -56,71 +56,55 @@
|
|||
#ifndef ECC_PRIV_KEY_BUF
|
||||
#define ECC_PRIV_KEY_BUF 66 /* For non user defined curves. */
|
||||
#endif
|
||||
#ifdef HAVE_ALL_CURVES
|
||||
/* ecc key sizes: 14, 16, 20, 24, 28, 30, 32, 40, 48, 64*/
|
||||
#ifndef KEY14
|
||||
#define KEY14 14
|
||||
#endif
|
||||
#if !defined(KEY16)
|
||||
#define KEY16 16
|
||||
#endif
|
||||
#if !defined(KEY20)
|
||||
#define KEY20 20
|
||||
#endif
|
||||
#if !defined(KEY24)
|
||||
#define KEY24 24
|
||||
#endif
|
||||
#if !defined(KEY28)
|
||||
#define KEY28 28
|
||||
#endif
|
||||
#if !defined(KEY30)
|
||||
#define KEY30 30
|
||||
#endif
|
||||
#if !defined(KEY32)
|
||||
#define KEY32 32
|
||||
#endif
|
||||
#if !defined(KEY40)
|
||||
#define KEY40 40
|
||||
#endif
|
||||
#if !defined(KEY48)
|
||||
#define KEY48 48
|
||||
#endif
|
||||
#if !defined(KEY64)
|
||||
#define KEY64 64
|
||||
#endif
|
||||
/* ecc key sizes: 14, 16, 20, 24, 28, 30, 32, 40, 48, 64 */
|
||||
/* logic to choose right key ECC size */
|
||||
#if (defined(HAVE_ECC112) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 112
|
||||
#define KEY14 14
|
||||
#else
|
||||
/* ecc key sizes: 14, 16, 20, 24, 28, 30, 32, 40, 48, 64*/
|
||||
#ifndef KEY14
|
||||
#define KEY14 32
|
||||
#endif
|
||||
#if !defined(KEY16)
|
||||
#define KEY16 32
|
||||
#endif
|
||||
#if !defined(KEY20)
|
||||
#define KEY20 32
|
||||
#endif
|
||||
#if !defined(KEY24)
|
||||
#define KEY24 32
|
||||
#endif
|
||||
#if !defined(KEY28)
|
||||
#define KEY28 32
|
||||
#endif
|
||||
#if !defined(KEY30)
|
||||
#define KEY30 32
|
||||
#endif
|
||||
#if !defined(KEY32)
|
||||
#define KEY32 32
|
||||
#endif
|
||||
#if !defined(KEY40)
|
||||
#define KEY40 32
|
||||
#endif
|
||||
#if !defined(KEY48)
|
||||
#define KEY48 32
|
||||
#endif
|
||||
#if !defined(KEY64)
|
||||
#define KEY64 32
|
||||
#endif
|
||||
#define KEY14 32
|
||||
#endif
|
||||
#if (defined(HAVE_ECC128) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 128
|
||||
#define KEY16 16
|
||||
#else
|
||||
#define KEY16 32
|
||||
#endif
|
||||
#if (defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 160
|
||||
#define KEY20 20
|
||||
#else
|
||||
#define KEY20 32
|
||||
#endif
|
||||
#if (defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 192
|
||||
#define KEY24 24
|
||||
#else
|
||||
#define KEY24 32
|
||||
#endif
|
||||
#if defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)
|
||||
#define KEY28 28
|
||||
#else
|
||||
#define KEY28 32
|
||||
#endif
|
||||
#if defined(HAVE_ECC239) || defined(HAVE_ALL_CURVES)
|
||||
#define KEY30 30
|
||||
#else
|
||||
#define KEY30 32
|
||||
#endif
|
||||
#define KEY32 32
|
||||
#if defined(HAVE_ECC320) || defined(HAVE_ALL_CURVES)
|
||||
#define KEY40 40
|
||||
#else
|
||||
#define KEY40 32
|
||||
#endif
|
||||
#if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)
|
||||
#define KEY48 48
|
||||
#else
|
||||
#define KEY48 32
|
||||
#endif
|
||||
#if defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES)
|
||||
#define KEY64 64
|
||||
#else
|
||||
#define KEY64 32
|
||||
#endif
|
||||
|
||||
#if !defined(HAVE_COMP_KEY)
|
||||
#if !defined(NOCOMP)
|
||||
#define NOCOMP 0
|
||||
|
|
|
@ -49,5 +49,6 @@ EXTRA_DIST += tests/test.conf \
|
|||
tests/test-altchains.conf \
|
||||
tests/test-trustpeer.conf \
|
||||
tests/test-dhprime.conf \
|
||||
tests/test-p521.conf
|
||||
tests/test-p521.conf \
|
||||
tests/test-ecc-cust-curves.conf
|
||||
DISTCLEANFILES+= tests/.libs/unit.test
|
||||
|
|
|
@ -882,8 +882,8 @@ int SuiteTest(int argc, char** argv)
|
|||
goto exit;
|
||||
}
|
||||
#endif
|
||||
#if (defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)) && \
|
||||
defined(WOLFSSL_SHA512)
|
||||
#if defined(HAVE_ECC) && defined(WOLFSSL_SHA512) && \
|
||||
(defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES))
|
||||
/* add P-521 certificate cipher suite tests */
|
||||
strcpy(argv0[1], "tests/test-p521.conf");
|
||||
printf("starting P-521 extra cipher suite tests\n");
|
||||
|
@ -894,6 +894,18 @@ int SuiteTest(int argc, char** argv)
|
|||
goto exit;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAVE_ECC) && !defined(NO_SHA256) && defined(WOLFSSL_CUSTOM_CURVES) && \
|
||||
defined(HAVE_ECC_KOBLITZ) && defined(HAVE_ECC_BRAINPOOL)
|
||||
/* TLS non-NIST curves (Koblitz / Brainpool) */
|
||||
strcpy(argv0[1], "tests/test-ecc-cust-curves.conf");
|
||||
printf("starting TLS test of non-NIST curves (Koblitz / Brainpool)\n");
|
||||
test_harness(&args);
|
||||
if (args.return_code != 0) {
|
||||
printf("error from script %d\n", args.return_code);
|
||||
args.return_code = EXIT_FAILURE;
|
||||
goto exit;
|
||||
}
|
||||
#endif
|
||||
#ifdef WOLFSSL_DTLS
|
||||
/* add dtls extra suites */
|
||||
strcpy(argv0[1], "tests/test-dtls.conf");
|
||||
|
|
|
@ -0,0 +1,181 @@
|
|||
# ----- secp256k1 ------
|
||||
# server TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256
|
||||
-v 3
|
||||
-l ECDHE-ECDSA-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/server-secp256k1-cert.pem
|
||||
-k ./certs/ecc/secp256k1-key.pem
|
||||
-d
|
||||
|
||||
# client TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256
|
||||
-v 3
|
||||
-l ECDHE-ECDSA-AES128-GCM-SHA256
|
||||
-A ./certs/ecc/server-secp256k1-cert.pem
|
||||
-x
|
||||
-C
|
||||
|
||||
# server TLSv1.2 ECDH-ECDSA-AES128-GCM-SHA256 (static)
|
||||
-v 3
|
||||
-l ECDH-ECDSA-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/server-secp256k1-cert.pem
|
||||
-k ./certs/ecc/secp256k1-key.pem
|
||||
-d
|
||||
|
||||
# client TLSv1.2 ECDH-ECDSA-AES128-GCM-SHA256 (static)
|
||||
-v 3
|
||||
-l ECDH-ECDSA-AES128-GCM-SHA256
|
||||
-A ./certs/ecc/server-secp256k1-cert.pem
|
||||
-x
|
||||
-C
|
||||
|
||||
# server TLSv1.3 TLS13-AES128-GCM-SHA256
|
||||
-v 4
|
||||
-l TLS13-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/server-secp256k1-cert.pem
|
||||
-k ./certs/ecc/secp256k1-key.pem
|
||||
-d
|
||||
|
||||
# client TLSv1.3 TLS13-AES128-GCM-SHA256
|
||||
-v 4
|
||||
-l TLS13-AES128-GCM-SHA256
|
||||
-A ./certs/ecc/server-secp256k1-cert.pem
|
||||
-x
|
||||
-C
|
||||
|
||||
# server TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256 (mutual auth)
|
||||
-v 3
|
||||
-l ECDHE-ECDSA-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/server-secp256k1-cert.pem
|
||||
-k ./certs/ecc/secp256k1-key.pem
|
||||
-A ./certs/ecc/client-secp256k1-cert.pem
|
||||
-V
|
||||
|
||||
# client TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256 (mutal auth)
|
||||
-v 3
|
||||
-l ECDHE-ECDSA-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/client-secp256k1-cert.pem
|
||||
-k ./certs/ecc/secp256k1-key.pem
|
||||
-A ./certs/ecc/server-secp256k1-cert.pem
|
||||
-C
|
||||
|
||||
# server TLSv1.2 ECDH-ECDSA-AES128-GCM-SHA256 (static - mutual auth)
|
||||
-v 3
|
||||
-l ECDH-ECDSA-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/server-secp256k1-cert.pem
|
||||
-k ./certs/ecc/secp256k1-key.pem
|
||||
-A ./certs/ecc/client-secp256k1-cert.pem
|
||||
-V
|
||||
|
||||
# client TLSv1.2 ECDH-ECDSA-AES128-GCM-SHA256 (static - mutal auth)
|
||||
-v 3
|
||||
-l ECDH-ECDSA-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/client-secp256k1-cert.pem
|
||||
-k ./certs/ecc/secp256k1-key.pem
|
||||
-A ./certs/ecc/server-secp256k1-cert.pem
|
||||
-C
|
||||
|
||||
# server TLSv1.3 TLS13-AES128-GCM-SHA256 (mutal auth)
|
||||
-v 4
|
||||
-l TLS13-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/server-secp256k1-cert.pem
|
||||
-k ./certs/ecc/secp256k1-key.pem
|
||||
-A ./certs/ecc/client-secp256k1-cert.pem
|
||||
-V
|
||||
|
||||
# client TLSv1.3 TLS13-AES128-GCM-SHA256 (mutal auth)
|
||||
-v 4
|
||||
-l TLS13-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/client-secp256k1-cert.pem
|
||||
-k ./certs/ecc/secp256k1-key.pem
|
||||
-A ./certs/ecc/server-secp256k1-cert.pem
|
||||
-C
|
||||
|
||||
# ----- bp256r1 ------
|
||||
# server TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256
|
||||
-v 3
|
||||
-l ECDHE-ECDSA-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/server-bp256r1-cert.pem
|
||||
-k ./certs/ecc/bp256r1-key.pem
|
||||
-d
|
||||
|
||||
# client TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256
|
||||
-v 3
|
||||
-l ECDHE-ECDSA-AES128-GCM-SHA256
|
||||
-A ./certs/ecc/server-bp256r1-cert.pem
|
||||
-x
|
||||
-C
|
||||
|
||||
# server TLSv1.2 ECDH-ECDSA-AES128-GCM-SHA256 (static)
|
||||
-v 3
|
||||
-l ECDH-ECDSA-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/server-bp256r1-cert.pem
|
||||
-k ./certs/ecc/bp256r1-key.pem
|
||||
-d
|
||||
|
||||
# client TLSv1.2 ECDH-ECDSA-AES128-GCM-SHA256 (static)
|
||||
-v 3
|
||||
-l ECDH-ECDSA-AES128-GCM-SHA256
|
||||
-A ./certs/ecc/server-bp256r1-cert.pem
|
||||
-x
|
||||
-C
|
||||
|
||||
# server TLSv1.3 TLS13-AES128-GCM-SHA256
|
||||
-v 4
|
||||
-l TLS13-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/server-bp256r1-cert.pem
|
||||
-k ./certs/ecc/bp256r1-key.pem
|
||||
-d
|
||||
|
||||
# client TLSv1.3 TLS13-AES128-GCM-SHA256
|
||||
-v 4
|
||||
-l TLS13-AES128-GCM-SHA256
|
||||
-A ./certs/ecc/server-bp256r1-cert.pem
|
||||
-x
|
||||
-C
|
||||
|
||||
# server TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256 (mutual auth)
|
||||
-v 3
|
||||
-l ECDHE-ECDSA-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/server-bp256r1-cert.pem
|
||||
-k ./certs/ecc/bp256r1-key.pem
|
||||
-A ./certs/ecc/client-bp256r1-cert.pem
|
||||
-V
|
||||
|
||||
# client TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256 (mutal auth)
|
||||
-v 3
|
||||
-l ECDHE-ECDSA-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/client-bp256r1-cert.pem
|
||||
-k ./certs/ecc/bp256r1-key.pem
|
||||
-A ./certs/ecc/server-bp256r1-cert.pem
|
||||
-C
|
||||
|
||||
# server TLSv1.2 ECDH-ECDSA-AES128-GCM-SHA256 (static - mutual auth)
|
||||
-v 3
|
||||
-l ECDH-ECDSA-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/server-bp256r1-cert.pem
|
||||
-k ./certs/ecc/bp256r1-key.pem
|
||||
-A ./certs/ecc/client-bp256r1-cert.pem
|
||||
-V
|
||||
|
||||
# client TLSv1.2 ECDH-ECDSA-AES128-GCM-SHA256 (static - mutal auth)
|
||||
-v 3
|
||||
-l ECDH-ECDSA-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/client-bp256r1-cert.pem
|
||||
-k ./certs/ecc/bp256r1-key.pem
|
||||
-A ./certs/ecc/server-bp256r1-cert.pem
|
||||
-C
|
||||
|
||||
# server TLSv1.3 TLS13-AES128-GCM-SHA256 (mutal auth)
|
||||
-v 4
|
||||
-l TLS13-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/server-bp256r1-cert.pem
|
||||
-k ./certs/ecc/bp256r1-key.pem
|
||||
-A ./certs/ecc/client-bp256r1-cert.pem
|
||||
-V
|
||||
|
||||
# client TLSv1.3 TLS13-AES128-GCM-SHA256 (mutal auth)
|
||||
-v 4
|
||||
-l TLS13-AES128-GCM-SHA256
|
||||
-c ./certs/ecc/client-bp256r1-cert.pem
|
||||
-k ./certs/ecc/bp256r1-key.pem
|
||||
-A ./certs/ecc/server-bp256r1-cert.pem
|
||||
-C
|
|
@ -75,6 +75,7 @@ ECC Curve Types:
|
|||
ECC Curve Sizes:
|
||||
* ECC_USER_CURVES: Allows custom combination of key sizes below
|
||||
* HAVE_ALL_CURVES: Enable all key sizes (on unless ECC_USER_CURVES is defined)
|
||||
* ECC_MIN_KEY_SZ: Minimum supported ECC key size
|
||||
* HAVE_ECC112: 112 bit key
|
||||
* HAVE_ECC128: 128 bit key
|
||||
* HAVE_ECC160: 160 bit key
|
||||
|
@ -179,37 +180,37 @@ enum {
|
|||
*/
|
||||
|
||||
/* 256-bit curve on by default whether user curves or not */
|
||||
#if defined(HAVE_ECC112) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC112) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 112
|
||||
#define ECC112
|
||||
#endif
|
||||
#if defined(HAVE_ECC128) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC128) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 128
|
||||
#define ECC128
|
||||
#endif
|
||||
#if defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 160
|
||||
#define ECC160
|
||||
#endif
|
||||
#if defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 192
|
||||
#define ECC192
|
||||
#endif
|
||||
#if defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 224
|
||||
#define ECC224
|
||||
#endif
|
||||
#if defined(HAVE_ECC239) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC239) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 239
|
||||
#define ECC239
|
||||
#endif
|
||||
#if !defined(NO_ECC256) || defined(HAVE_ALL_CURVES)
|
||||
#if (!defined(NO_ECC256) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 256
|
||||
#define ECC256
|
||||
#endif
|
||||
#if defined(HAVE_ECC320) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC320) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 320
|
||||
#define ECC320
|
||||
#endif
|
||||
#if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 384
|
||||
#define ECC384
|
||||
#endif
|
||||
#if defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 512
|
||||
#define ECC512
|
||||
#endif
|
||||
#if defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 521
|
||||
#define ECC521
|
||||
#endif
|
||||
|
||||
|
|
|
@ -21868,43 +21868,43 @@ static int ecc_test(void)
|
|||
return -9900;
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_ECC112) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC112) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 112
|
||||
ret = ecc_test_curve(&rng, 14);
|
||||
if (ret < 0) {
|
||||
goto done;
|
||||
}
|
||||
#endif /* HAVE_ECC112 */
|
||||
#if defined(HAVE_ECC128) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC128) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 128
|
||||
ret = ecc_test_curve(&rng, 16);
|
||||
if (ret < 0) {
|
||||
goto done;
|
||||
}
|
||||
#endif /* HAVE_ECC128 */
|
||||
#if defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 160
|
||||
ret = ecc_test_curve(&rng, 20);
|
||||
if (ret < 0) {
|
||||
goto done;
|
||||
}
|
||||
#endif /* HAVE_ECC160 */
|
||||
#if defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 192
|
||||
ret = ecc_test_curve(&rng, 24);
|
||||
if (ret < 0) {
|
||||
goto done;
|
||||
}
|
||||
#endif /* HAVE_ECC192 */
|
||||
#if defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 224
|
||||
ret = ecc_test_curve(&rng, 28);
|
||||
if (ret < 0) {
|
||||
goto done;
|
||||
}
|
||||
#endif /* HAVE_ECC224 */
|
||||
#if defined(HAVE_ECC239) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC239) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 239
|
||||
ret = ecc_test_curve(&rng, 30);
|
||||
if (ret < 0) {
|
||||
goto done;
|
||||
}
|
||||
#endif /* HAVE_ECC239 */
|
||||
#if !defined(NO_ECC256) || defined(HAVE_ALL_CURVES)
|
||||
#if (!defined(NO_ECC256) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 256
|
||||
ret = ecc_test_curve(&rng, 32);
|
||||
if (ret < 0) {
|
||||
goto done;
|
||||
|
@ -21921,25 +21921,25 @@ static int ecc_test(void)
|
|||
goto done;
|
||||
}
|
||||
#endif /* !NO_ECC256 */
|
||||
#if defined(HAVE_ECC320) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC320) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 320
|
||||
ret = ecc_test_curve(&rng, 40);
|
||||
if (ret < 0) {
|
||||
goto done;
|
||||
}
|
||||
#endif /* HAVE_ECC320 */
|
||||
#if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 384
|
||||
ret = ecc_test_curve(&rng, 48);
|
||||
if (ret < 0) {
|
||||
goto done;
|
||||
}
|
||||
#endif /* HAVE_ECC384 */
|
||||
#if defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 512
|
||||
ret = ecc_test_curve(&rng, 64);
|
||||
if (ret < 0) {
|
||||
goto done;
|
||||
}
|
||||
#endif /* HAVE_ECC512 */
|
||||
#if defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)
|
||||
#if (defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 521
|
||||
ret = ecc_test_curve(&rng, 66);
|
||||
if (ret < 0) {
|
||||
goto done;
|
||||
|
|
|
@ -302,12 +302,16 @@
|
|||
#if !defined(NO_FILESYSTEM) && defined(WOLFSSL_MAX_STRENGTH)
|
||||
#define DEFAULT_MIN_RSAKEY_BITS 2048
|
||||
#else
|
||||
#ifndef DEFAULT_MIN_RSAKEY_BITS
|
||||
#define DEFAULT_MIN_RSAKEY_BITS 1024
|
||||
#endif
|
||||
#endif
|
||||
#if !defined(NO_FILESYSTEM) && defined(WOLFSSL_MAX_STRENGTH)
|
||||
#define DEFAULT_MIN_ECCKEY_BITS 256
|
||||
#else
|
||||
#ifndef DEFAULT_MIN_ECCKEY_BITS
|
||||
#define DEFAULT_MIN_ECCKEY_BITS 224
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* all certs relative to wolfSSL home directory now */
|
||||
|
|
|
@ -125,7 +125,7 @@ enum {
|
|||
ECC_MAXNAME = 16, /* MAX CURVE NAME LENGTH */
|
||||
SIG_HEADER_SZ = 7, /* ECC signature header size (30 81 87 02 42 [R] 02 42 [S]) */
|
||||
ECC_BUFSIZE = 256, /* for exported keys temp buffer */
|
||||
ECC_MINSIZE = 20, /* MIN Private Key size */
|
||||
ECC_MINSIZE = ECC_MIN_KEY_SZ/8, /* MIN Private Key size */
|
||||
ECC_MAXSIZE = 66, /* MAX Private Key size */
|
||||
ECC_MAXSIZE_GEN = 74, /* MAX Buffer size required when generating ECC keys*/
|
||||
ECC_MAX_OID_LEN = 16,
|
||||
|
|
|
@ -1750,6 +1750,21 @@ extern void uITRON4_free(void *p) ;
|
|||
#endif
|
||||
#endif
|
||||
|
||||
/* The minimum allowed ECC key size */
|
||||
/* Note: 224-bits is equivelant to 2048-bit RSA */
|
||||
#ifndef ECC_MIN_KEY_SZ
|
||||
#ifdef WOLFSSL_MIN_ECC_BITS
|
||||
#define ECC_MIN_KEY_SZ WOLFSSL_MIN_ECC_BITS
|
||||
#else
|
||||
#if defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && HAVE_FIPS_VERSION >= 2
|
||||
/* FIPSv2 and ready (for now) includes 192-bit support */
|
||||
#define ECC_MIN_KEY_SZ 192
|
||||
#else
|
||||
#define ECC_MIN_KEY_SZ 224
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* ECC Configs */
|
||||
#ifdef HAVE_ECC
|
||||
/* By default enable Sign, Verify, DHE, Key Import and Key Export unless explicitly disabled */
|
||||
|
|
Loading…
Reference in New Issue