Skip to content

Commit d611ffa

Browse files
committed
wolfKeyMgr v0.3:
* Added TLS mutual authentication. * Improved logging and flushing of logging on SIGINT/SIGTERM. * Added SIGTERM support. * Improved README.md example steps.
1 parent c3a5ac7 commit d611ffa

26 files changed

+420
-123
lines changed

.gitignore

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,18 @@ src/wolfkeymgr
4141
examples/etsi_client/etsi_client
4242
libtool
4343
wolfkeymgr/options.h
44+
45+
# Generated Cert Files
46+
certs/ca-*.pem
47+
certs/ca-*.der
48+
certs/ca-*.crl
49+
certs/*.par
50+
certs/crlnumber*
51+
certs/serial
52+
certs/index*
53+
certs/tpm-*.csr
54+
certs/server-*.der
55+
certs/server-*.pem
56+
certs/client-*.der
57+
certs/client-*.pem
58+
certs/serial.old

README.md

Lines changed: 96 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,105 @@ $ sudo make install
8484

8585
Note: A custom install location can be specified using: `./configure --prefix=/opt/local`
8686

87-
## Running ETSI Example
87+
## Key Manager and ETSI Client Command Line Help
8888

89+
Help using `-?`:
90+
91+
```sh
92+
$ ./src/wolfkeymgr -?
93+
wolfKeyManager 0.3
94+
-? Help, print this usage
95+
-i Don't chdir / in daemon mode
96+
-b Daemon mode, run in background
97+
-p <str> Pid File name, default ./wolfkeymgr.pid
98+
-l <num> Log Level (1=Error to 4=Debug), default 4
99+
-f <str> Log file name, default None
100+
-o <num> Max open files, default 1024
101+
-s <num> Seconds to timeout, default 60
102+
-t <num> Thread pool size, default 48
103+
-d TLS Disable Mutual Authentication
104+
-k <pem> TLS Server TLS Key, default ./certs/server-key.pem
105+
-w <pass> TLS Server Key Password, default wolfssl
106+
-c <pem> TLS Server Certificate, default ./certs/server-cert.pem
107+
-c <pem> TLS CA Certificate, default ./certs/ca-cert.pem
89108
```
90-
$ ./src/wolfkeymgr
91-
$ ./examples/etsi_client/etsi_client
109+
110+
```sh
111+
$ ./examples/etsi_client/etsi_client -?
112+
etsi_client 0.3
113+
-? Help, print this usage
114+
-e Error mode, force error response
115+
-h <str> Host to connect to, default localhost
116+
-p <num> Port to connect to, default 8119
117+
-t <num> Thread pool size (stress test), default 0
118+
-l <num> Log Level (1=Error to 4=Debug), default 4
119+
-r <num> Requests per thread, default 100
120+
-f <file> <file> to store ETSI response
121+
-g Use HTTP GET (default is Push with HTTP PUT)
122+
-s <sec> Timeout seconds (default 10)
123+
-k <pem> TLS Client TLS Key, default certs/client-key.pem
124+
-w <pass> TLS Client Key Password, default wolfssl
125+
-c <pem> TLS Client Certificate, default certs/client-cert.pem
126+
-A <pem> TLS CA Certificate, default ./certs/ca-cert.pem
127+
92128
```
93129
130+
## Running the Key Manager and ETSI client
131+
132+
```sh
133+
# Start Key Manager with Log Level 3 (Info) and two worker threads
134+
$ ./src/wolfkeymgr -l 3 -t 2
135+
Feb 24 16:24:04 2021: [INFO] Starting Key Manager
136+
Feb 24 16:24:04 2021: [INFO] Binding listener :::8119
137+
Feb 24 16:24:04 2021: [WARNING] Generating new ECC key (index 0)
138+
Feb 24 16:24:04 2021: [INFO] loaded CA certificate file ./certs/ca-cert.pem
139+
Feb 24 16:24:04 2021: [INFO] loaded key file ./certs/server-key.pem
140+
Feb 24 16:24:04 2021: [INFO] loaded certificate file ./certs/server-cert.pem
141+
Feb 24 16:24:04 2021: [INFO] Setting up new ETSI conn item pool
142+
Feb 24 16:24:04 2021: [INFO] Growing ETSI service conn pool
143+
Feb 24 16:24:04 2021: [INFO] Growing ETSI service conn pool
144+
Feb 24 16:24:11 2021: [INFO] Accepted a connection, sent to thread 0
145+
Feb 24 16:24:11 2021: [INFO] New ETSI service conn
146+
Feb 24 16:24:11 2021: [INFO] Got ETSI Request (103 bytes)
147+
Feb 24 16:24:11 2021: [INFO] Creating connection context
148+
Feb 24 16:24:11 2021: [INFO] Sent ETSI Response (194 bytes)
149+
Feb 24 16:24:11 2021: [INFO] EventCb what = 17
150+
Feb 24 16:24:11 2021: [INFO] Peer ended connection, closing
151+
152+
^C
153+
Feb 24 16:24:15 2021: [INFO] SIGINT handled.
154+
Feb 24 16:24:15 2021: [INFO] Ending main thread loop
155+
Feb 24 16:24:15 2021: [INFO] Sending cancel to threads
156+
Feb 24 16:24:15 2021: [INFO] Joining threads
157+
Feb 24 16:24:15 2021: [INFO] Worker thread exiting, tid = 140694064588352
158+
Feb 24 16:24:15 2021: [INFO] Worker thread exiting, tid = 140694056195648
159+
Feb 24 16:24:15 2021: [INFO] Done with main thread dispatching
160+
Feb 24 16:24:15 2021: [ERROR] Current stats:
161+
total connections = 1
162+
completed = 1
163+
timeouts = 0
164+
current connections = 0
165+
max concurrent = 1
166+
uptime in seconds = 11
167+
average response(ms) = 0.046
168+
Feb 24 16:24:15 2021: [INFO] Exit Key Manager (ret 0)
169+
170+
171+
# Start ETSI client with single GET request
172+
$ ./examples/etsi_client/etsi_client -l 3 -g
173+
Feb 24 16:24:11 2021: [INFO] Starting client
174+
Feb 24 16:24:11 2021: [INFO] Connected to ETSI service
175+
Feb 24 16:24:11 2021: [INFO] Sent single get request (103 bytes)
176+
Feb 24 16:24:11 2021: [INFO] Got ETSI response (121 bytes)
177+
Feb 24 16:24:11 2021: [INFO] Pub X: 4958C92FCF1D0C51A1969370B2CB2E846F25A3FBB5B9621020B338E7CCA8C53F
178+
Feb 24 16:24:11 2021: [INFO] Pub Y: 3EE0E7AF506A86380D11450A39BF3561917824F3A8BEC44AEF3B83C25F058DF9
179+
```
180+
181+
## Stress Testing ETSI Server / Client
182+
183+
* Use the thread pool "-t" to spin up more threads.
184+
* Use the ETSI client "-r" to make additional requests per thread.
185+
94186
95187
## ETSI (Enterprise Transport Security)
96188
@@ -149,8 +241,7 @@ See Recommendation ITU-T X.509 (10/2016) | ISO/IEC 9594-8: "Information technolo
149241
150242
## Outstanding Features
151243
152-
1) Add TLS mutual authentication to ETSI example.
153-
2) Add example for HTTP server "VisibilityInformation" extension.
244+
1) Add example for HTTP server "VisibilityInformation" extension.
154245
155246
## Support
156247

certs/ca-cert.pem

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIClTCCAjugAwIBAgIUZzNFzfT3gew6OMtFWGN5KCu962swCgYIKoZIzj0EAwIw
3+
gZcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdT
4+
ZWF0dGxlMRAwDgYDVQQKDAd3b2xmU1NMMRQwEgYDVQQLDAtEZXZlbG9wbWVudDEY
5+
MBYGA1UEAwwPd3d3LndvbGZzc2wuY29tMR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdv
6+
bGZzc2wuY29tMB4XDTIxMDIyNDAxMDUyN1oXDTQxMDIxOTAxMDUyN1owgZcxCzAJ
7+
BgNVBAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxl
8+
MRAwDgYDVQQKDAd3b2xmU1NMMRQwEgYDVQQLDAtEZXZlbG9wbWVudDEYMBYGA1UE
9+
AwwPd3d3LndvbGZzc2wuY29tMR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wu
10+
Y29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDeCw/DZVbeITxJBRaQpTbb4g
11+
bBtL88ZqSt/sWhABdP21pVxBXHy6UEeW+vl6HrEZomAKEJ9USlnskQap37RmlaNj
12+
MGEwHQYDVR0OBBYEFGd0eZ7H+R2lQl76gLEm6OeMDJZjMB8GA1UdIwQYMBaAFGd0
13+
eZ7H+R2lQl76gLEm6OeMDJZjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD
14+
AgGGMAoGCCqGSM49BAMCA0gAMEUCIQDi1neivT9e9IZGKjEjAWXieOsE1pt3B96F
15+
55LJEpk3ZwIgcPa8qKZ1EGX6Xz7w0SRxw/CiRHTlm4ZEaLcxTrF0eEI=
16+
-----END CERTIFICATE-----

certs/ca-key.pem

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
-----BEGIN ENCRYPTED PRIVATE KEY-----
2+
MIHsMFcGCSqGSIb3DQEFDTBKMCkGCSqGSIb3DQEFDDAcBAgaJGPnqcysUwICCAAw
3+
DAYIKoZIhvcNAgkFADAdBglghkgBZQMEAQIEEJfGjbWqwIEnod7fHoguu3oEgZAd
4+
IoF3rmsiRP1cX74twJNSx90Iq2cXcJSkoGBkhs0PaXJjaLe8KmS8DX0JLSX9yMRC
5+
2R0wPZT0eb8rvb2ShjBb06Nhexle7Nj4sXcBS7nD3zE4Y3LejaGBpPNko7WJRN8E
6+
Pdi70KK9hCrrpiyerGSw0IzBWjOBiUbNcRV5o0BUv+yTbGkSVk/3xE4HJffFdY8=
7+
-----END ENCRYPTED PRIVATE KEY-----

certs/client-cert.pem

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICqDCCAk+gAwIBAgICEAMwCgYIKoZIzj0EAwIwgZcxCzAJBgNVBAYTAlVTMRMw
3+
EQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMRAwDgYDVQQKDAd3
4+
b2xmU1NMMRQwEgYDVQQLDAtEZXZlbG9wbWVudDEYMBYGA1UEAwwPd3d3LndvbGZz
5+
c2wuY29tMR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tMB4XDTIxMDIy
6+
NDAxMDUyN1oXDTMxMDIyMjAxMDUyN1owgY8xCzAJBgNVBAYTAlVTMRMwEQYDVQQI
7+
DApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMRAwDgYDVQQKDAdFbGlwdGlj
8+
MQwwCgYDVQQLDANFQ0MxGDAWBgNVBAMMD3d3dy53b2xmc3NsLmNvbTEfMB0GCSqG
9+
SIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEH
10+
A0IABJPL3WW6Oqw5vcOsitgci4RbSm+6CryZHnj1G1oWSHsU1VFwctBesxczv2KA
11+
cmnYXnanN5xUCiS+Jk7aYGENQ++jgZAwgY0wCQYDVR0TBAIwADARBglghkgBhvhC
12+
AQEEBAMCBaAwHQYDVR0OBBYEFGNRe0i70kUgyqrVLPR/FE7DAGlZMB8GA1UdIwQY
13+
MBaAFGd0eZ7H+R2lQl76gLEm6OeMDJZjMA4GA1UdDwEB/wQEAwIF4DAdBgNVHSUE
14+
FjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwCgYIKoZIzj0EAwIDRwAwRAIgQy5ItBCA
15+
FPFjDQD1AuMd3tsSi/4hbxt9Xw/txgdOXOwCIGRL1VkpSbrPxhSeAR3yPTzaHrVU
16+
MK5TxoCwj4EEHBik
17+
-----END CERTIFICATE-----

certs/client-key.pem

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
-----BEGIN ENCRYPTED PRIVATE KEY-----
2+
MIHsMFcGCSqGSIb3DQEFDTBKMCkGCSqGSIb3DQEFDDAcBAhl8MKolNu/vwICCAAw
3+
DAYIKoZIhvcNAgkFADAdBglghkgBZQMEAQIEEM3OtU3hDdLKWhc1fb9U67YEgZCB
4+
uWIiqPe5VAZPJvz4d5N9aBhnog77forXzumfgiqPZ+f2KH34oj4g5ZiXqyJigKNu
5+
7wDb1yPh9I1l/zTWhaIFam7xfa7oy3GUk7P7kRwIpkvcPuwnbv82r/Nrhqo0Hefy
6+
yTHgwKdHM5hV0usbJ1bMYPl8Y1QF86XRz2FPglGNqaC6egT9VDi/A329nM6cfQQ=
7+
-----END ENCRYPTED PRIVATE KEY-----

certs/include.am

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
# All paths should be given relative to the root
44

55

6-
EXTRA_DIST += certs/test-cert.pem
7-
EXTRA_DIST += certs/test-cert.sh
8-
EXTRA_DIST += certs/test-key.pem
6+
EXTRA_DIST += certs/gen-certs.sh
7+
EXTRA_DIST += certs/ca-key.pem
8+
EXTRA_DIST += certs/ca-cert.pem
9+
EXTRA_DIST += certs/client-key.pem
10+
EXTRA_DIST += certs/client-cert.pem
11+
EXTRA_DIST += certs/server-key.pem
12+
EXTRA_DIST += certs/server-cert.pem

certs/server-cert.pem

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDbDCCAxGgAwIBAgICEAQwCgYIKoZIzj0EAwIwgZcxCzAJBgNVBAYTAlVTMRMw
3+
EQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMRAwDgYDVQQKDAd3
4+
b2xmU1NMMRQwEgYDVQQLDAtEZXZlbG9wbWVudDEYMBYGA1UEAwwPd3d3LndvbGZz
5+
c2wuY29tMR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tMB4XDTIxMDIy
6+
NDAxMDUyN1oXDTMxMDIyMjAxMDUyN1owgY8xCzAJBgNVBAYTAlVTMRMwEQYDVQQI
7+
DApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMRAwDgYDVQQKDAdFbGlwdGlj
8+
MQwwCgYDVQQLDANFQ0MxGDAWBgNVBAMMD3d3dy53b2xmc3NsLmNvbTEfMB0GCSqG
9+
SIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEH
10+
A0IABJJXxA6+BjbQ+xDagzOizUqvBeBGT+4Jv+7hO7io2FSqkv5VYuMmS9kmE7oY
11+
HUgMZGVCEdhpEl2eFiSihQz6HiOjggFRMIIBTTAJBgNVHRMEAjAAMBEGCWCGSAGG
12+
+EIBAQQEAwIGQDAdBgNVHQ4EFgQUIfibLbR/ybFs6ooVzwNT0xTRuAMwDwYDVR0R
13+
BAgwBocEfwAAATCB1wYDVR0jBIHPMIHMgBRndHmex/kdpUJe+oCxJujnjAyWY6GB
14+
naSBmjCBlzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNV
15+
BAcMB1NlYXR0bGUxEDAOBgNVBAoMB3dvbGZTU0wxFDASBgNVBAsMC0RldmVsb3Bt
16+
ZW50MRgwFgYDVQQDDA93d3cud29sZnNzbC5jb20xHzAdBgkqhkiG9w0BCQEWEGlu
17+
Zm9Ad29sZnNzbC5jb22CFGczRc3094HsOjjLRVhjeSgrvetrMA4GA1UdDwEB/wQE
18+
AwIDqDATBgNVHSUEDDAKBggrBgEFBQcDATAKBggqhkjOPQQDAgNJADBGAiEA7kp2
19+
DyEQRe4W2psvfMFQVPZ82YT1EPbkp1d2kaajf2YCIQCH7tuvUQvol5vj9FiJET9A
20+
gueqWHeJrkCR7gIBTe9xZg==
21+
-----END CERTIFICATE-----

certs/server-key.pem

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
-----BEGIN ENCRYPTED PRIVATE KEY-----
2+
MIHsMFcGCSqGSIb3DQEFDTBKMCkGCSqGSIb3DQEFDDAcBAigTM4xxXajfAICCAAw
3+
DAYIKoZIhvcNAgkFADAdBglghkgBZQMEAQIEEKzLUxrQHvW6QF/pvVhVAvoEgZBT
4+
A79IduRJNEsKj/6qR2XizYQ+9MazK4txO6dBxctI71yeAJ1CwLnmyjkpCuljdNwa
5+
u4ei485u94LJuGKoC+gnyu4cI2kqIU890FjtGIpKH8M/D+2TkRSJOTcchrYdgGy/
6+
IHVlXFUiAuQwK2FLBZOJ5gEhgCN1XumOJdELbZ5UdQhBL3aiQTW0v6VqNvFsisc=
7+
-----END ENCRYPTED PRIVATE KEY-----

certs/test-cert.pem

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

0 commit comments

Comments
 (0)