X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/605347124bd39d347058bc3bd5356c184f654b1d..20f239b6471b8816762cce5cc714449154114397:/openssl/openssl_sml.c diff --git a/openssl/openssl_sml.c b/openssl/openssl_sml.c index 79e6195..d934217 100644 --- a/openssl/openssl_sml.c +++ b/openssl/openssl_sml.c @@ -1,7 +1,8 @@ -#include "openssl/bio.h" -#include "openssl/ssl.h" -#include "openssl/err.h" +#include +#include +#include +#include #include #include #include @@ -24,6 +25,10 @@ int OpenSSL_SML_get_error() { return ERR_get_error(); } +int OpenSSL_SML_should_retry(BIO *b) { + return BIO_should_retry(b); +} + const char *OpenSSL_SML_lib_error_string(int err) { return ERR_lib_error_string(err); } @@ -69,6 +74,8 @@ SSL_CTX *OpenSSL_SML_CTX_new(SSL_METHOD *meth) { SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); + SSL_CTX_set_verify_depth(ctx, + 2); return ctx; } @@ -76,7 +83,7 @@ void OpenSSL_SML_CTX_free(SSL_CTX *ctx) { return SSL_CTX_free(ctx); } -SSL_METHOD *OpenSSL_SML_SSLv23_method() { +const SSL_METHOD *OpenSSL_SML_SSLv23_method() { return SSLv23_method(); } @@ -196,31 +203,26 @@ int OpenSSL_SML_use_certificate_chain_file(SSL_CTX *ctx, char *keyfile) { keyfile); } -static unsigned char subject[] = "Subject"; - const char *OpenSSL_SML_get_peer_name(SSL *ssl) { X509 *x = SSL_get_peer_certificate(ssl); - unsigned char *name = subject; - X509_NAME *nm; if (x) { X509_NAME *name = X509_get_subject_name(x); if (name) { - unsigned char *out; X509_NAME_ENTRY *ne; - ne = X509_NAME_get_entry(name, 3); + ne = X509_NAME_get_entry(name, 0); if (ne) { ASN1_STRING *s = X509_NAME_ENTRY_get_data(ne); static char ret[1024]; - if (M_ASN1_STRING_length(s) >= sizeof ret) + if (ASN1_STRING_length(s) >= sizeof ret) return NULL; else { - memcpy(ret, M_ASN1_STRING_data(s), M_ASN1_STRING_length(s)); - ret[M_ASN1_STRING_length(s)] = 0; + memcpy(ret, ASN1_STRING_get0_data(s), ASN1_STRING_length(s)); + ret[ASN1_STRING_length(s)] = 0; return ret; } } else { @@ -240,3 +242,11 @@ const char *OpenSSL_SML_get_peer_name(SSL *ssl) { BIO *OpenSSL_SML_pop(BIO *b) { return BIO_pop(b); } + +BIO *OpenSSL_SML_next(BIO *b) { + return BIO_next(b); +} + +int OpenSSL_SML_puts(BIO *b, const char *buf) { + return BIO_puts(b, buf); +}