X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Futils%2Fssl.c;h=fe509d05c3dd461e5e0d79620070abdeb5d97444;hb=1886cc190cfbd37daf047194fd1a2f5c13a15d64;hp=d9ad060bb2270a86157135cb57e442b1a15af76e;hpb=6dc15ce01c57de96ea3acf1ae340b8d69b32209a;p=sysdb.git diff --git a/src/utils/ssl.c b/src/utils/ssl.c index d9ad060..fe509d0 100644 --- a/src/utils/ssl.c +++ b/src/utils/ssl.c @@ -137,27 +137,30 @@ ssl_log_err(int prio, SSL *ssl, int status, const char *prefix, ...) } /* ssl_log_err */ static int -copy_options(sdb_ssl_options_t *dst, sdb_ssl_options_t *src) +copy_options(sdb_ssl_options_t *dst, const sdb_ssl_options_t *src) { + sdb_ssl_options_t tmp; sdb_ssl_options_t def = SDB_SSL_DEFAULT_OPTIONS; - if (! src) - src = &def; - - if (! src->ca_file) - src->ca_file = def.ca_file; - if (! src->key_file) - src->key_file = def.key_file; - if (! src->cert_file) - src->cert_file = def.cert_file; - - dst->ca_file = strdup(src->ca_file); - dst->key_file = strdup(src->key_file); - dst->cert_file = strdup(src->cert_file); + if (src) + tmp = *src; + else + tmp = def; + + if (! tmp.ca_file) + tmp.ca_file = def.ca_file; + if (! tmp.key_file) + tmp.key_file = def.key_file; + if (! tmp.cert_file) + tmp.cert_file = def.cert_file; + + dst->ca_file = strdup(tmp.ca_file); + dst->key_file = strdup(tmp.key_file); + dst->cert_file = strdup(tmp.cert_file); if ((! dst->ca_file) || (! dst->key_file) || (! dst->cert_file)) return -1; - if (src->crl_file) { - dst->crl_file = strdup(src->crl_file); + if (tmp.crl_file) { + dst->crl_file = strdup(tmp.crl_file); if (! dst->crl_file) return -1; } @@ -168,8 +171,21 @@ copy_options(sdb_ssl_options_t *dst, sdb_ssl_options_t *src) * public API */ +void +sdb_ssl_init(void) +{ + SSL_load_error_strings(); + OpenSSL_add_ssl_algorithms(); +} /* sdb_ssl_init */ + +void +sdb_ssl_shutdown(void) +{ + ERR_free_strings(); +} /* sdb_ssl_shutdown */ + sdb_ssl_client_t * -sdb_ssl_client_create(sdb_ssl_options_t *opts) +sdb_ssl_client_create(const sdb_ssl_options_t *opts) { sdb_ssl_client_t *client; @@ -278,7 +294,7 @@ sdb_ssl_client_connect(sdb_ssl_client_t *client, int fd) } /* sdb_ssl_client_connect */ sdb_ssl_server_t * -sdb_ssl_server_create(sdb_ssl_options_t *opts) +sdb_ssl_server_create(const sdb_ssl_options_t *opts) { sdb_ssl_server_t *server;