Skip to content

Commit 7eb44e5

Browse files
committed
wolfKeyMgr v0.9:
* Added HTTPS server / client for local testing. * Added middle-box decryption example (uses the wolfSSL sniffer module) * Fixes for HTTP engine parsing. * Improve socket select error reporting for timeout vs. error. * Added ETSI client push support. * Added ability to specify default key type for Key Manager. * Added better debug printing for key used.
1 parent f83ec8a commit 7eb44e5

31 files changed

+2030
-500
lines changed

.gitignore

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ aminclude.am
2828
*.lo
2929
*.la
3030
*.libs
31+
.vscode
3132

3233
# misc
3334
tags
@@ -38,7 +39,10 @@ diff
3839

3940
# applications
4041
src/wolfkeymgr
41-
examples/etsi_client/etsi_client
42+
examples/middlebox/decrypt
43+
examples/etsi_test/etsi_test
44+
examples/https/client
45+
examples/https/server
4246
libtool
4347
wolfkeymgr/options.h
4448

@@ -56,4 +60,4 @@ certs/server-*.pem
5660
certs/client-*.der
5761
certs/client-*.pem
5862
certs/serial.old
59-
options.h
63+
tracefile.txt

Makefile.am

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ EXTRA_DIST += README.md
2727
EXTRA_DIST += LICENSE
2828

2929
include src/include.am
30-
include examples/etsi_client/include.am
30+
include examples/include.am
3131
include scripts/include.am
3232
include certs/include.am
3333

README.md

Lines changed: 180 additions & 155 deletions
Large diffs are not rendered by default.

certs/gen-certs.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,13 @@ openssl ca -config ./certs/ca-ecc.cnf -extensions server_cert -days 3650 -notext
6868
rm ./certs/server-cert.csr
6969

7070

71-
# Script to generated a self-signed TLS server certificate for Apache
71+
# Script to generate a self-signed TLS server certificate for Apache
7272
# No key password
7373

7474
if [ -f ./certs/test-key.pem ]; then
7575
# ECC
7676
openssl ecparam -name prime256v1 -genkey -outform pem -out ./certs/test-key.pem
7777
fi
7878

79-
openssl req -new -x509 -nodes -key ./certs/test-key.pem -out ./certs/test-cert.pem -sha256 -days 7300 -batch -subj "/C=US/ST=CA/L=Seattle/O=wolfSSL/OU=Development/CN=etsitest.com/[email protected]"
79+
openssl req -new -x509 -nodes -key ./certs/test-key.pem -out ./certs/test-cert.pem -sha256 -days 7300 -batch \
80+
-subj "/C=US/ST=CA/L=Seattle/O=wolfSSL/OU=Development/CN=localhost/[email protected]"

certs/test-cert.pem

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
-----BEGIN CERTIFICATE-----
2-
MIICbzCCAhWgAwIBAgIUXcyHnGxDNR6GBYq4ZHSm7hJ+e8gwCgYIKoZIzj0EAwIw
3-
gYwxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEQMA4GA1UEBwwHU2VhdHRsZTEQ
4-
MA4GA1UECgwHd29sZlNTTDEUMBIGA1UECwwLRGV2ZWxvcG1lbnQxFTATBgNVBAMM
5-
DGV0c2l0ZXN0LmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTAe
6-
Fw0yMTAzMTkxOTAzMTVaFw00MTAzMTQxOTAzMTVaMIGMMQswCQYDVQQGEwJVUzEL
7-
MAkGA1UECAwCQ0ExEDAOBgNVBAcMB1NlYXR0bGUxEDAOBgNVBAoMB3dvbGZTU0wx
8-
FDASBgNVBAsMC0RldmVsb3BtZW50MRUwEwYDVQQDDAxldHNpdGVzdC5jb20xHzAd
9-
BgkqhkiG9w0BCQEWEGluZm9Ad29sZnNzbC5jb20wWTATBgcqhkjOPQIBBggqhkjO
10-
PQMBBwNCAAToBp+YdaHpiRuvAWYXgK/mv7M1szpyfv7EXYDQXibu3moryej10+Re
11-
Wc5neXgDVfQEZ1O6CkwPo7lZU6FBhGxmo1MwUTAdBgNVHQ4EFgQUvWcAwbZL6I6L
12-
HUZYMSdTFBzD3cswHwYDVR0jBBgwFoAUvWcAwbZL6I6LHUZYMSdTFBzD3cswDwYD
13-
VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAgNIADBFAiEA6JE1aOqHMqa5zMtRuwuK
14-
qhKVmsgaV/FHHALuS6BmEF4CIEbQMTDs9HuSJiLUD15KqkDvgTs5EUJC7CTxgd+r
15-
WRpw
2+
MIICZjCCAgygAwIBAgIUB2rvL80c8JdZrnELwaTfiMPUv1wwCgYIKoZIzj0EAwIw
3+
gYkxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEQMA4GA1UEBwwHU2VhdHRsZTEQ
4+
MA4GA1UECgwHd29sZlNTTDEUMBIGA1UECwwLRGV2ZWxvcG1lbnQxEjAQBgNVBAMM
5+
CWxvY2FsaG9zdDEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTAeFw0y
6+
MTA2MDQxOTA1MTFaFw00MTA1MzAxOTA1MTFaMIGJMQswCQYDVQQGEwJVUzELMAkG
7+
A1UECAwCQ0ExEDAOBgNVBAcMB1NlYXR0bGUxEDAOBgNVBAoMB3dvbGZTU0wxFDAS
8+
BgNVBAsMC0RldmVsb3BtZW50MRIwEAYDVQQDDAlsb2NhbGhvc3QxHzAdBgkqhkiG
9+
9w0BCQEWEGluZm9Ad29sZnNzbC5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC
10+
AAToBp+YdaHpiRuvAWYXgK/mv7M1szpyfv7EXYDQXibu3moryej10+ReWc5neXgD
11+
VfQEZ1O6CkwPo7lZU6FBhGxmo1AwTjAdBgNVHQ4EFgQUvWcAwbZL6I6LHUZYMSdT
12+
FBzD3cswHwYDVR0jBBgwFoAUvWcAwbZL6I6LHUZYMSdTFBzD3cswDAYDVR0TBAUw
13+
AwEB/zAKBggqhkjOPQQDAgNIADBFAiEAlMwaXmWD1wRMZNrWl5xnQrxINJuRajAS
14+
T9gJqaWM3CkCIEifthJa24FavzZj3p/STn0xxfQLro+T2EqZqXrV52RU
1615
-----END CERTIFICATE-----

configure.ac

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
AC_PREREQ(2.59)
77

8-
AC_INIT([wolfKeyManager],[0.8],[http://www.wolfssl.com])
8+
AC_INIT([wolfKeyManager],[0.9],[http://www.wolfssl.com])
99
AC_CONFIG_AUX_DIR(config)
1010
AC_CONFIG_HEADERS([wolfkeymgr/config.h])
1111
AC_CONFIG_MACRO_DIR(m4)
@@ -71,7 +71,7 @@ LT_PREREQ([2.2])
7171
LT_INIT([disable-static win32-dll])
7272

7373
# Shared library versioning
74-
WOLFKM_LIBRARY_VERSION=5:0:0
74+
WOLFKM_LIBRARY_VERSION=5:1:0
7575
# | | |
7676
# +------+ | +---+
7777
# | | |
@@ -121,7 +121,6 @@ esac
121121
# Checks for library functions.
122122
LIB_SOCKET_NSL
123123

124-
125124
# ETSI Service
126125
AC_ARG_ENABLE([etsisvc],
127126
[AS_HELP_STRING([--enable-etsisvc],[Enable the ETSI key service (default: enabled)])],
@@ -135,6 +134,21 @@ then
135134
fi
136135

137136

137+
# SNIFFER
138+
AC_ARG_ENABLE([sniffer],
139+
[AS_HELP_STRING([--enable-sniffer],[Enable sniffer support (default: disabled)])],
140+
[ ENABLED_SNIFFER=$enableval ],
141+
[ ENABLED_SNIFFER=yes ]
142+
)
143+
AS_IF([ test "x$ENABLED_SNIFFER" = "xyes" ],
144+
[
145+
CFLAGS="$CFLAGS -DWOLFKM_SNIFFER"
146+
AC_CHECK_HEADERS([pcap/pcap.h],
147+
[ ENABLED_SNIFFTEST=yes ],
148+
[ AC_MSG_WARN([cannot enable sniffer test without having libpcap available.]) ]
149+
)
150+
])
151+
138152

139153
# The following AM_CONDITIONAL statements set flags for use in the Makefiles.
140154
# Some of these affect build targets and objects, some trigger different

examples/etsi_client/etsi_client.h

Lines changed: 0 additions & 46 deletions
This file was deleted.

examples/etsi_client/include.am

Lines changed: 0 additions & 12 deletions
This file was deleted.
Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* etsi_client.c
1+
/* etsi_test.c
22
*
33
* Copyright (C) 2006-2021 wolfSSL Inc.
44
*
@@ -19,9 +19,10 @@
1919
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
2020
*/
2121

22-
#include "etsi_client.h"
23-
#include "mod_etsi.h"
22+
#include "wolfkeymgr/mod_etsi.h"
23+
#include "examples/test_config.h"
2424

25+
#define WOLFKM_ETST_CLIENT_DEF_REQUESTS 1 /* per thread */
2526
#define WOLFKM_ETST_CLIENT_DEF_TIMEOUT_SEC 10
2627

2728
#ifndef EX_USAGE
@@ -161,24 +162,24 @@ static void* DoRequests(void* arg)
161162
/* usage help */
162163
static void Usage(void)
163164
{
164-
printf("%s %s\n", "etsi_client", PACKAGE_VERSION);
165+
printf("%s %s\n", "etsi_test", PACKAGE_VERSION);
165166
printf("-? Help, print this usage\n");
166167
printf("-e Error mode, force error response\n");
167-
printf("-h <str> Host to connect to, default %s\n", WOLFKM_DEFAULT_HOST);
168-
printf("-p <num> Port to connect to, default %s\n", WOLFKM_DEFAULT_ETSISVC_PORT);
168+
printf("-h <str> Host to connect to, default %s\n", ETSI_TEST_HOST);
169+
printf("-p <num> Port to connect to, default %s\n", ETSI_TEST_PORT_STR);
169170
printf("-t <num> Thread pool size (stress test), default %d\n", 0);
170171
printf("-l <num> Log Level (1=Error to 4=Debug), default %d\n", WOLFKM_DEFAULT_LOG_LEVEL);
171-
printf("-r <num> Requests per thread, default %d\n",
172-
WOLFKM_DEFAULT_REQUESTS);
172+
printf("-r <num> Requests per thread, default %d\n", WOLFKM_ETST_CLIENT_DEF_REQUESTS);
173173
printf("-f <file> <file> to store ETSI response\n");
174174
printf("-u Use ETSI Push (default is get)\n");
175175
printf("-s <sec> Timeout seconds (default %d)\n", WOLFKM_ETST_CLIENT_DEF_TIMEOUT_SEC);
176176

177-
printf("-k <pem> TLS Client TLS Key, default %s\n", WOLFKM_ETSICLIENT_KEY);
178-
printf("-w <pass> TLS Client Key Password, default %s\n", WOLFKM_ETSICLIENT_PASS);
179-
printf("-c <pem> TLS Client Certificate, default %s\n", WOLFKM_ETSICLIENT_CERT);
180-
printf("-A <pem> TLS CA Certificate, default %s\n", WOLFKM_ETSICLIENT_CA);
181-
printf("-K <keyt> Key Type: SECP256R1 (default), FFDHE_2048, X25519 or X448\n");
177+
printf("-k <pem> TLS Client TLS Key, default %s\n", ETSI_TEST_CLIENT_KEY);
178+
printf("-w <pass> TLS Client Key Password, default %s\n", ETSI_TEST_CLIENT_PASS);
179+
printf("-c <pem> TLS Client Certificate, default %s\n", ETSI_TEST_CLIENT_CERT);
180+
printf("-A <pem> TLS CA Certificate, default %s\n", ETSI_TEST_CLIENT_CA);
181+
printf("-K <keyt> Key Type: SECP256R1, FFDHE_2048, X25519 or X448 (default %s)\n",
182+
wolfEtsiKeyGetTypeStr(ETSI_TEST_KEY_TYPE));
182183
}
183184

184185
int main(int argc, char** argv)
@@ -192,16 +193,16 @@ int main(int argc, char** argv)
192193
WorkThreadInfo info;
193194

194195
memset(&info, 0, sizeof(info));
195-
info.requests = WOLFKM_DEFAULT_REQUESTS;
196-
info.host = WOLFKM_DEFAULT_HOST;
196+
info.requests = WOLFKM_ETST_CLIENT_DEF_REQUESTS;
197+
info.host = ETSI_TEST_HOST;
197198
info.timeoutSec = WOLFKM_ETST_CLIENT_DEF_TIMEOUT_SEC;
198-
info.port = atoi(WOLFKM_DEFAULT_ETSISVC_PORT);
199-
info.keyFile = WOLFKM_ETSICLIENT_KEY;
200-
info.keyPass = WOLFKM_ETSICLIENT_PASS;
201-
info.clientCertFile = WOLFKM_ETSICLIENT_CERT;
202-
info.caFile = WOLFKM_ETSICLIENT_CA;
199+
info.port = atoi(ETSI_TEST_PORT_STR);
200+
info.keyFile = ETSI_TEST_CLIENT_KEY;
201+
info.keyPass = ETSI_TEST_CLIENT_PASS;
202+
info.clientCertFile = ETSI_TEST_CLIENT_CERT;
203+
info.caFile = ETSI_TEST_CLIENT_CA;
203204
info.useGet = 1;
204-
info.keyType = ETSI_KEY_TYPE_SECP256R1;
205+
info.keyType = ETSI_TEST_KEY_TYPE;
205206

206207
/* argument processing */
207208
while ((ch = getopt(argc, argv, "?eh:p:t:l:r:f:gus:k:w:c:A:K:")) != -1) {
@@ -261,7 +262,7 @@ int main(int argc, char** argv)
261262
for (i=(int)ETSI_KEY_TYPE_MIN; i<=(int)ETSI_KEY_TYPE_FFDHE_8192; i++) {
262263
const char* keyStr = wolfEtsiKeyGetTypeStr((EtsiKeyType)i);
263264
if (keyStr != NULL) {
264-
if (XSTRNCMP(optarg, keyStr, XSTRLEN(keyStr)) == 0) {
265+
if (strncmp(optarg, keyStr, strlen(keyStr)) == 0) {
265266
info.keyType = (EtsiKeyType)i;
266267
break;
267268
}

examples/etsi_test/include.am

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# vim:ft=automake
2+
# included from Top Level Makefile.am
3+
# All paths should be given relative to the root
4+
5+
6+
noinst_PROGRAMS += examples/etsi_test/etsi_test
7+
examples_etsi_test_etsi_test_SOURCES = examples/etsi_test/etsi_test.c
8+
examples_etsi_test_etsi_test_LDADD = src/libwolfkeymgr.la $(LIB_STATIC_ADD)
9+
examples_etsi_test_etsi_test_DEPENDENCIES = src/libwolfkeymgr.la

0 commit comments

Comments
 (0)