2626
2727#include <signal.h> /* signal */
2828
29+ #ifndef EX_USAGE
30+ #define EX_USAGE 2
31+ #endif
32+
33+ #ifndef EXIT_FAILURE
34+ #define EXIT_FAILURE 1
35+ #endif
36+
2937static volatile int mStop = 0 ;
3038static WKM_SOCKET_T listenFd = WKM_SOCKET_INVALID ;
3139
@@ -47,6 +55,17 @@ static int etsi_key_cb(EtsiKey* key, void* cbCtx)
4755 return ret ;
4856}
4957
58+ /* usage help */
59+ static void Usage (void )
60+ {
61+ printf ("%s %s\n" , "https/server" , PACKAGE_VERSION );
62+ printf ("-? Help, print this usage\n" );
63+ printf ("-d Disable ETSI Key Manager loading\n" );
64+ printf ("-p <num> Port to listen, default %d\n" , HTTPS_TEST_PORT );
65+ printf ("-l <num> Log Level (1=Error to 4=Debug), default %d\n" , WOLFKM_DEFAULT_LOG_LEVEL );
66+ printf ("-h <keymgr> Key Manager URL (default %s)\n" , "https://" ETSI_TEST_HOST ":" ETSI_TEST_PORT_STR );
67+ }
68+
5069int https_server_test (int argc , char * * argv )
5170{
5271 int ret ;
@@ -58,21 +77,48 @@ int https_server_test(int argc, char** argv)
5877 HttpHeader headers [2 ];
5978 const char * body = HTTPS_TEST_RESPONSE ;
6079 SOCKADDR_IN_T clientAddr ;
80+ int port = HTTPS_TEST_PORT ;
81+ enum log_level_t logLevel = WOLFKM_DEFAULT_LOG_LEVEL ;
6182 const char * etsiServer = "https://" ETSI_TEST_HOST ":" ETSI_TEST_PORT_STR ;
83+ int ch , useKeyMgr = 1 ;
6284
6385 signal (SIGINT , sig_handler );
6486
65- /* TODO: Support arguments */
66- (void )argc ;
67- (void )argv ;
87+ /* argument processing */
88+ while ((ch = getopt (argc , argv , "?p:l:dh:" )) != -1 ) {
89+ switch (ch ) {
90+ case '?' :
91+ Usage ();
92+ exit (EX_USAGE );
93+ case 'p' :
94+ port = atoi (optarg );
95+ break ;
96+ case 'l' :
97+ logLevel = atoi (optarg );
98+ if (logLevel < WOLFKM_LOG_ERROR || logLevel > WOLFKM_LOG_DEBUG ) {
99+ perror ("loglevel [1:4] only" );
100+ exit (EX_USAGE );
101+ }
102+ break ;
103+ case 'd' :
104+ useKeyMgr = 0 ;
105+ break ;
106+ case 'h' :
107+ etsiServer = optarg ;
108+ break ;
109+ default :
110+ Usage ();
111+ exit (EX_USAGE );
112+ }
113+ }
68114
69- printf ("HTTPS Server: Port %d\n" , HTTPS_TEST_PORT );
115+ printf ("HTTPS Server: Port %d\n" , port );
70116
71117 wolfSSL_Init ();
72118
73119 /* log setup */
74120 /* wolfSSL_Debugging_ON(); */
75- wolfKeyMgr_SetLogFile (NULL , 0 , WOLFKM_LOG_DEBUG );
121+ wolfKeyMgr_SetLogFile (NULL , 0 , logLevel );
76122
77123 ctx = wolfTlsServerNew ();
78124 if (ctx == NULL ) { ret = WOLFKM_BAD_MEMORY ; goto exit ; }
@@ -85,14 +131,18 @@ int https_server_test(int argc, char** argv)
85131 if (ret != 0 ) goto exit ;
86132
87133 /* setup listener */
88- ret = wolfSockListen (& listenFd , HTTPS_TEST_PORT );
134+ ret = wolfSockListen (& listenFd , port );
89135 if (ret != 0 ) goto exit ;
90136
91137 do {
92- ret = etsi_client_get_all (etsiServer , etsi_key_cb , ctx );
93- if (ret != 0 ) {
94- mStop = 1 ;
95- goto end_sess ;
138+ if (useKeyMgr ) {
139+ ret = etsi_client_get_all (etsiServer , etsi_key_cb , ctx );
140+ if (ret != 0 ) {
141+ printf ("\nFailure connecting to key manager\n" );
142+ printf ("Make sure ./src/wolfkeymgr is running\n" );
143+ mStop = 1 ;
144+ goto end_sess ;
145+ }
96146 }
97147
98148 ret = wolfTlsAccept (ctx , listenFd , & ssl , & clientAddr ,
0 commit comments