|
@@ -50,7 +50,6 @@ static int mbedHandshake(Webs *wp);
|
|
static int parseCert(mbedtls_x509_crt *cert, char *file);
|
|
static int parseCert(mbedtls_x509_crt *cert, char *file);
|
|
static int parseCrl(mbedtls_x509_crl *crl, char *path);
|
|
static int parseCrl(mbedtls_x509_crl *crl, char *path);
|
|
static int parseKey(mbedtls_pk_context *key, char *path);
|
|
static int parseKey(mbedtls_pk_context *key, char *path);
|
|
-static void merror(int rc, char *fmt, ...);
|
|
|
|
static char *replaceHyphen(char *cipher, char from, char to);
|
|
static char *replaceHyphen(char *cipher, char from, char to);
|
|
static void traceMbed(void *context, int level, cchar *file, int line, cchar *str);
|
|
static void traceMbed(void *context, int level, cchar *file, int line, cchar *str);
|
|
|
|
|
|
@@ -79,7 +78,6 @@ PUBLIC int sslOpen()
|
|
mbedtls_ssl_ticket_init(&cfg.tickets);
|
|
mbedtls_ssl_ticket_init(&cfg.tickets);
|
|
|
|
|
|
if ((rc = mbedtls_ctr_drbg_seed(&cfg.ctr, mbedtls_entropy_func, &cfg.entropy, (cuchar*) ME_NAME, slen(ME_NAME))) < 0) {
|
|
if ((rc = mbedtls_ctr_drbg_seed(&cfg.ctr, mbedtls_entropy_func, &cfg.entropy, (cuchar*) ME_NAME, slen(ME_NAME))) < 0) {
|
|
- merror(rc, "Cannot seed rng");
|
|
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -121,7 +119,6 @@ PUBLIC int sslOpen()
|
|
|
|
|
|
if ((rc = mbedtls_ssl_config_defaults(conf, MBEDTLS_SSL_IS_SERVER, MBEDTLS_SSL_TRANSPORT_STREAM,
|
|
if ((rc = mbedtls_ssl_config_defaults(conf, MBEDTLS_SSL_IS_SERVER, MBEDTLS_SSL_TRANSPORT_STREAM,
|
|
MBEDTLS_SSL_PRESET_DEFAULT)) < 0) {
|
|
MBEDTLS_SSL_PRESET_DEFAULT)) < 0) {
|
|
- merror(rc, "Cannot set mbedtls defaults");
|
|
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
mbedtls_ssl_conf_rng(conf, mbedtls_ctr_drbg_random, &cfg.ctr);
|
|
mbedtls_ssl_conf_rng(conf, mbedtls_ctr_drbg_random, &cfg.ctr);
|
|
@@ -130,7 +127,7 @@ PUBLIC int sslOpen()
|
|
Configure larger DH parameters
|
|
Configure larger DH parameters
|
|
*/
|
|
*/
|
|
if ((rc = mbedtls_ssl_conf_dh_param(conf, MBEDTLS_DHM_RFC5114_MODP_2048_P, MBEDTLS_DHM_RFC5114_MODP_2048_G)) < 0) {
|
|
if ((rc = mbedtls_ssl_conf_dh_param(conf, MBEDTLS_DHM_RFC5114_MODP_2048_P, MBEDTLS_DHM_RFC5114_MODP_2048_G)) < 0) {
|
|
- merror(rc, "Cannot set DH params");
|
|
|
|
|
|
+
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -145,7 +142,7 @@ PUBLIC int sslOpen()
|
|
if (ME_GOAHEAD_SSL_TICKET) {
|
|
if (ME_GOAHEAD_SSL_TICKET) {
|
|
if ((rc = mbedtls_ssl_ticket_setup(&cfg.tickets, mbedtls_ctr_drbg_random, &cfg.ctr,
|
|
if ((rc = mbedtls_ssl_ticket_setup(&cfg.tickets, mbedtls_ctr_drbg_random, &cfg.ctr,
|
|
MBEDTLS_CIPHER_AES_256_GCM, ME_GOAHEAD_SSL_TIMEOUT)) < 0) {
|
|
MBEDTLS_CIPHER_AES_256_GCM, ME_GOAHEAD_SSL_TIMEOUT)) < 0) {
|
|
- merror(rc, "Cannot setup ticketing sessions");
|
|
|
|
|
|
+
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
mbedtls_ssl_conf_session_tickets_cb(conf, mbedtls_ssl_ticket_write, mbedtls_ssl_ticket_parse, &cfg.tickets);
|
|
mbedtls_ssl_conf_session_tickets_cb(conf, mbedtls_ssl_ticket_write, mbedtls_ssl_ticket_parse, &cfg.tickets);
|
|
@@ -177,7 +174,7 @@ PUBLIC int sslOpen()
|
|
*/
|
|
*/
|
|
if (ME_GOAHEAD_SSL_KEY[0] != '\0' && ME_GOAHEAD_SSL_CERTIFICATE[0] != '\0') {
|
|
if (ME_GOAHEAD_SSL_KEY[0] != '\0' && ME_GOAHEAD_SSL_CERTIFICATE[0] != '\0') {
|
|
if ((rc = mbedtls_ssl_conf_own_cert(conf, &cfg.cert, &cfg.pkey)) < 0) {
|
|
if ((rc = mbedtls_ssl_conf_own_cert(conf, &cfg.cert, &cfg.pkey)) < 0) {
|
|
- merror(rc, "Cannot define certificate and private key");
|
|
|
|
|
|
+
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -380,7 +377,7 @@ PUBLIC ssize sslRead(Webs *wp, void *buf, ssize len)
|
|
sp->flags |= SOCKET_EOF;
|
|
sp->flags |= SOCKET_EOF;
|
|
return -1;
|
|
return -1;
|
|
} else {
|
|
} else {
|
|
- printf( "mbedtls: read error -0x%", -rc);
|
|
|
|
|
|
+ printf( "mbedtls: read error %d", rc);
|
|
sp->flags |= SOCKET_EOF;
|
|
sp->flags |= SOCKET_EOF;
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
@@ -558,18 +555,6 @@ static void traceMbed(void *context, int level, cchar *file, int line, cchar *st
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-static void merror(int rc, char *fmt, ...)
|
|
|
|
-{
|
|
|
|
- va_list ap;
|
|
|
|
- char ebuf[ME_MAX_BUFFER];
|
|
|
|
-
|
|
|
|
- va_start(ap, fmt);
|
|
|
|
- mbedtls_strerror(-rc, ebuf, sizeof(ebuf));
|
|
|
|
- printf("mbedtls", "mbedtls error: 0x%x %s %s", rc, sfmtv(fmt, ap), ebuf);
|
|
|
|
- va_end(ap);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
static char *replaceHyphen(char *cipher, char from, char to)
|
|
static char *replaceHyphen(char *cipher, char from, char to)
|
|
{
|
|
{
|
|
char *cp;
|
|
char *cp;
|