X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/f3ebb786e451da973560f1c9d8cdb151d25108b5..f5bf7636988febc332349f2a1deb2a4329ff3243:/src/src/tlscert-openssl.c diff --git a/src/src/tlscert-openssl.c b/src/src/tlscert-openssl.c index 0aa65c886..403dc4236 100644 --- a/src/src/tlscert-openssl.c +++ b/src/src/tlscert-openssl.c @@ -33,12 +33,14 @@ library. It is #included into the tls.c file when that library is used. /***************************************************** * Export/import a certificate, binary/printable -*****************************************************/ -int +****************************************************** +Return booolean success +*/ +BOOL tls_export_cert(uschar * buf, size_t buflen, void * cert) { BIO * bp = BIO_new(BIO_s_mem()); -int fail; +BOOL fail; if ((fail = PEM_write_bio_X509(bp, (X509 *)cert) ? 0 : 1)) log_write(0, LOG_MAIN, "TLS error in certificate export: %s", @@ -59,32 +61,29 @@ else } BIO_free(bp); -return fail; +return !fail; } -int +/* On error, NULL out the destination */ +BOOL tls_import_cert(const uschar * buf, void ** cert) { rmark reset_point = store_mark(); const uschar * cp = string_unprinting(US buf); BIO * bp; X509 * x = *(X509 **)cert; -int fail = 0; if (x) X509_free(x); bp = BIO_new_mem_buf(US cp, -1); if (!(x = PEM_read_bio_X509(bp, NULL, 0, NULL))) - { log_write(0, LOG_MAIN, "TLS error in certificate import: %s", ERR_error_string(ERR_get_error(), NULL)); - fail = 1; - } -else - *cert = (void *)x; + +*cert = (void *)x; BIO_free(bp); store_reset(reset_point); -return fail; +return !!x; } void