Fix no-sock
Misc fixes for no-sock Reviewed-by: Richard Levitte <levitte@openssl.org>
This commit is contained in:
		@@ -640,7 +640,7 @@ static int load_pkcs12(BIO *in, const char *desc,
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifndef OPENSSL_NO_OCSP
 | 
			
		||||
#if !defined(OPENSSL_NO_OCSP) && !defined(OPENSSL_NO_SOCK)
 | 
			
		||||
static int load_cert_crl_http(const char *url, X509 **pcert, X509_CRL **pcrl)
 | 
			
		||||
{
 | 
			
		||||
    char *host = NULL, *port = NULL, *path = NULL;
 | 
			
		||||
@@ -695,7 +695,7 @@ X509 *load_cert(const char *file, int format, const char *cert_descrip)
 | 
			
		||||
    BIO *cert;
 | 
			
		||||
 | 
			
		||||
    if (format == FORMAT_HTTP) {
 | 
			
		||||
#ifndef OPENSSL_NO_OCSP
 | 
			
		||||
#if !defined(OPENSSL_NO_OCSP) && !defined(OPENSSL_NO_SOCK)
 | 
			
		||||
        load_cert_crl_http(file, &x, NULL);
 | 
			
		||||
#endif
 | 
			
		||||
        return x;
 | 
			
		||||
@@ -736,7 +736,7 @@ X509_CRL *load_crl(const char *infile, int format)
 | 
			
		||||
    BIO *in = NULL;
 | 
			
		||||
 | 
			
		||||
    if (format == FORMAT_HTTP) {
 | 
			
		||||
#ifndef OPENSSL_NO_OCSP
 | 
			
		||||
#if !defined(OPENSSL_NO_OCSP) && !defined(OPENSSL_NO_SOCK)
 | 
			
		||||
        load_cert_crl_http(infile, NULL, &x);
 | 
			
		||||
#endif
 | 
			
		||||
        return x;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								apps/ocsp.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								apps/ocsp.c
									
									
									
									
									
								
							@@ -117,10 +117,13 @@ static char **lookup_serial(CA_DB *db, ASN1_INTEGER *ser);
 | 
			
		||||
static BIO *init_responder(const char *port);
 | 
			
		||||
static int do_responder(OCSP_REQUEST **preq, BIO **pcbio, BIO *acbio);
 | 
			
		||||
static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp);
 | 
			
		||||
 | 
			
		||||
# ifndef OPENSSL_NO_SOCK
 | 
			
		||||
static OCSP_RESPONSE *query_responder(BIO *cbio, const char *host,
 | 
			
		||||
                                      const char *path,
 | 
			
		||||
                                      const STACK_OF(CONF_VALUE) *headers,
 | 
			
		||||
                                      OCSP_REQUEST *req, int req_timeout);
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
typedef enum OPTION_choice {
 | 
			
		||||
    OPT_ERR = -1, OPT_EOF = 0, OPT_HELP,
 | 
			
		||||
@@ -244,7 +247,10 @@ int ocsp_main(int argc, char **argv)
 | 
			
		||||
    int noCAfile = 0, noCApath = 0;
 | 
			
		||||
    int accept_count = -1, add_nonce = 1, noverify = 0, use_ssl = -1;
 | 
			
		||||
    int vpmtouched = 0, badsig = 0, i, ignore_err = 0, nmin = 0, ndays = -1;
 | 
			
		||||
    int req_text = 0, resp_text = 0, req_timeout = -1, ret = 1;
 | 
			
		||||
    int req_text = 0, resp_text = 0, ret = 1;
 | 
			
		||||
#ifndef OPENSSL_NO_SOCK
 | 
			
		||||
    int req_timeout = -1;
 | 
			
		||||
#endif
 | 
			
		||||
    long nsec = MAX_VALIDITY_PERIOD, maxage = -1;
 | 
			
		||||
    unsigned long sign_flags = 0, verify_flags = 0, rflags = 0;
 | 
			
		||||
    OPTION_CHOICE o;
 | 
			
		||||
@@ -275,7 +281,9 @@ int ocsp_main(int argc, char **argv)
 | 
			
		||||
            outfile = opt_arg();
 | 
			
		||||
            break;
 | 
			
		||||
        case OPT_TIMEOUT:
 | 
			
		||||
#ifndef OPENSSL_NO_SOCK
 | 
			
		||||
            req_timeout = atoi(opt_arg());
 | 
			
		||||
#endif
 | 
			
		||||
            break;
 | 
			
		||||
        case OPT_URL:
 | 
			
		||||
            OPENSSL_free(thost);
 | 
			
		||||
@@ -1170,6 +1178,7 @@ static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp)
 | 
			
		||||
    return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# ifndef OPENSSL_NO_SOCK
 | 
			
		||||
static OCSP_RESPONSE *query_responder(BIO *cbio, const char *host,
 | 
			
		||||
                                      const char *path,
 | 
			
		||||
                                      const STACK_OF(CONF_VALUE) *headers,
 | 
			
		||||
@@ -1300,5 +1309,6 @@ OCSP_RESPONSE *process_responder(OCSP_REQUEST *req,
 | 
			
		||||
    SSL_CTX_free(ctx);
 | 
			
		||||
    return resp;
 | 
			
		||||
}
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -131,8 +131,10 @@ int verify_depth = 0;
 | 
			
		||||
int verify_quiet = 0;
 | 
			
		||||
int verify_error = X509_V_OK;
 | 
			
		||||
int verify_return_error = 0;
 | 
			
		||||
#ifndef OPENSSL_NO_SOCK
 | 
			
		||||
static unsigned char cookie_secret[COOKIE_SECRET_LENGTH];
 | 
			
		||||
static int cookie_initialized = 0;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static const char *lookup(int val, const STRINT_PAIR* list, const char* def)
 | 
			
		||||
{
 | 
			
		||||
@@ -741,6 +743,7 @@ void tlsext_cb(SSL *s, int client_server, int type,
 | 
			
		||||
    (void)BIO_flush(bio);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifndef OPENSSL_NO_SOCK
 | 
			
		||||
int generate_cookie_callback(SSL *ssl, unsigned char *cookie,
 | 
			
		||||
                             unsigned int *cookie_len)
 | 
			
		||||
{
 | 
			
		||||
@@ -803,6 +806,7 @@ int verify_cookie_callback(SSL *ssl, const unsigned char *cookie,
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Example of extended certificate handling. Where the standard support of
 | 
			
		||||
 
 | 
			
		||||
@@ -141,6 +141,8 @@
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <openssl/e_os2.h>
 | 
			
		||||
 | 
			
		||||
#ifndef OPENSSL_NO_SOCK
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * With IPv6, it looks like Digital has mixed up the proper order of
 | 
			
		||||
 * recursive header file inclusion, resulting in the compiler complaining
 | 
			
		||||
@@ -2757,3 +2759,5 @@ static int ocsp_resp_cb(SSL *s, void *arg)
 | 
			
		||||
    OCSP_RESPONSE_free(rsp);
 | 
			
		||||
    return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -147,6 +147,8 @@
 | 
			
		||||
 | 
			
		||||
#include <openssl/e_os2.h>
 | 
			
		||||
 | 
			
		||||
#ifndef OPENSSL_NO_SOCK
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * With IPv6, it looks like Digital has mixed up the proper order of
 | 
			
		||||
 * recursive header file inclusion, resulting in the compiler complaining
 | 
			
		||||
@@ -3363,3 +3365,5 @@ static void free_sessions(void)
 | 
			
		||||
    }
 | 
			
		||||
    first = NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -109,6 +109,7 @@
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <signal.h>
 | 
			
		||||
#include <openssl/opensslconf.h>
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * With IPv6, it looks like Digital has mixed up the proper order of
 | 
			
		||||
 
 | 
			
		||||
@@ -66,6 +66,10 @@
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#include <openssl/opensslconf.h>
 | 
			
		||||
 | 
			
		||||
#ifndef OPENSSL_NO_SOCK
 | 
			
		||||
 | 
			
		||||
#define USE_SOCKETS
 | 
			
		||||
#include "apps.h"
 | 
			
		||||
#include <openssl/x509.h>
 | 
			
		||||
@@ -474,3 +478,4 @@ static SSL *doConnection(SSL *scon, const char *host, SSL_CTX *ctx)
 | 
			
		||||
 | 
			
		||||
    return serverCon;
 | 
			
		||||
}
 | 
			
		||||
#endif /* OPENSSL_NO_SOCK */
 | 
			
		||||
 
 | 
			
		||||
@@ -490,7 +490,9 @@ void OPENSSL_cleanup(void)
 | 
			
		||||
    ENGINE_cleanup();
 | 
			
		||||
#endif
 | 
			
		||||
    CRYPTO_cleanup_all_ex_data();
 | 
			
		||||
#ifndef OPENSSL_NO_SOCK
 | 
			
		||||
    BIO_sock_cleanup();
 | 
			
		||||
#endif
 | 
			
		||||
    EVP_cleanup();
 | 
			
		||||
    OBJ_cleanup();
 | 
			
		||||
    base_inited = 0;
 | 
			
		||||
 
 | 
			
		||||
@@ -1892,7 +1892,9 @@ void SSL_trace(int write_p, int version, int content_type,
 | 
			
		||||
__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c);
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
# ifndef OPENSSL_NO_SOCK
 | 
			
		||||
int DTLSv1_listen(SSL *s, BIO_ADDR *client);
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
# ifndef OPENSSL_NO_CT
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -458,7 +458,7 @@ static void get_current_time(struct timeval *t)
 | 
			
		||||
#define LISTEN_SUCCESS              2
 | 
			
		||||
#define LISTEN_SEND_VERIFY_REQUEST  1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef OPENSSL_NO_SOCK
 | 
			
		||||
int DTLSv1_listen(SSL *s, BIO_ADDR *client)
 | 
			
		||||
{
 | 
			
		||||
    int next, n, ret = 0, clearpkt = 0;
 | 
			
		||||
@@ -866,6 +866,7 @@ end:
 | 
			
		||||
    }
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static int dtls1_set_handshake_header(SSL *s, int htype, unsigned long len)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -65,6 +65,8 @@
 | 
			
		||||
#endif
 | 
			
		||||
#include "e_os.h"
 | 
			
		||||
 | 
			
		||||
#ifndef OPENSSL_NO_SOCK
 | 
			
		||||
 | 
			
		||||
/* Just a ClientHello without a cookie */
 | 
			
		||||
static const unsigned char clienthello_nocookie[] = {
 | 
			
		||||
    0x16, /* Handshake */
 | 
			
		||||
@@ -368,9 +370,11 @@ static int cookie_verify(SSL *ssl, const unsigned char *cookie,
 | 
			
		||||
 | 
			
		||||
    return 1;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int main(void)
 | 
			
		||||
{
 | 
			
		||||
#ifndef OPENSSL_NO_SOCK
 | 
			
		||||
    SSL_CTX *ctx = NULL;
 | 
			
		||||
    SSL *ssl = NULL;
 | 
			
		||||
    BIO *outbio = NULL;
 | 
			
		||||
@@ -463,5 +467,8 @@ int main(void)
 | 
			
		||||
    CRYPTO_mem_leaks_fp(stderr);
 | 
			
		||||
# endif
 | 
			
		||||
    return success ? 0 : 1;
 | 
			
		||||
#else
 | 
			
		||||
    printf("DTLSv1_listen() is not supported by this build - skipping\n");
 | 
			
		||||
    return 0;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -66,6 +66,9 @@ plan skip_all => "TLSProxy isn't usable on $^O"
 | 
			
		||||
plan skip_all => "$test_name needs the dynamic engine feature enabled"
 | 
			
		||||
    if disabled("engine") || disabled("dynamic-engine");
 | 
			
		||||
 | 
			
		||||
plan skip_all => "$test_name needs the sock feature enabled"
 | 
			
		||||
    if disabled("sock");
 | 
			
		||||
 | 
			
		||||
$ENV{OPENSSL_ia32cap} = '~0x200000200000000';
 | 
			
		||||
my $proxy = TLSProxy::Proxy->new(
 | 
			
		||||
    \&certstatus_filter,
 | 
			
		||||
 
 | 
			
		||||
@@ -66,6 +66,9 @@ plan skip_all => "TLSProxy isn't usable on $^O"
 | 
			
		||||
plan skip_all => "$test_name needs the dynamic engine feature enabled"
 | 
			
		||||
    if disabled("engine") || disabled("dynamic-engine");
 | 
			
		||||
 | 
			
		||||
plan skip_all => "$test_name needs the sock feature enabled"
 | 
			
		||||
    if disabled("sock");
 | 
			
		||||
 | 
			
		||||
$ENV{OPENSSL_ia32cap} = '~0x200000200000000';
 | 
			
		||||
my $proxy = TLSProxy::Proxy->new(
 | 
			
		||||
    \&extension_filter,
 | 
			
		||||
 
 | 
			
		||||
@@ -67,6 +67,9 @@ plan skip_all => "TLSProxy isn't usable on $^O"
 | 
			
		||||
plan skip_all => "$test_name needs the dynamic engine feature enabled"
 | 
			
		||||
    if disabled("engine") || disabled("dynamic-engine");
 | 
			
		||||
 | 
			
		||||
plan skip_all => "$test_name needs the sock feature enabled"
 | 
			
		||||
    if disabled("sock");
 | 
			
		||||
 | 
			
		||||
$ENV{OPENSSL_ia32cap} = '~0x200000200000000';
 | 
			
		||||
 | 
			
		||||
sub checkmessages($$$$$$);
 | 
			
		||||
 
 | 
			
		||||
@@ -69,6 +69,9 @@ plan skip_all => "$test_name needs the dynamic engine feature enabled"
 | 
			
		||||
plan skip_all => "dh is not supported by this OpenSSL build"
 | 
			
		||||
    if disabled("dh");
 | 
			
		||||
 | 
			
		||||
plan skip_all => "$test_name needs the sock feature enabled"
 | 
			
		||||
    if disabled("sock");
 | 
			
		||||
 | 
			
		||||
$ENV{OPENSSL_ia32cap} = '~0x200000200000000';
 | 
			
		||||
my $proxy = TLSProxy::Proxy->new(
 | 
			
		||||
    \&ske_0_p_filter,
 | 
			
		||||
 
 | 
			
		||||
@@ -66,6 +66,9 @@ plan skip_all => "TLSProxy isn't usable on $^O"
 | 
			
		||||
plan skip_all => "$test_name needs the dynamic engine feature enabled"
 | 
			
		||||
    if disabled("engine") || disabled("dynamic-engine");
 | 
			
		||||
 | 
			
		||||
plan skip_all => "$test_name needs the sock feature enabled"
 | 
			
		||||
    if disabled("sock");
 | 
			
		||||
 | 
			
		||||
$ENV{OPENSSL_ia32cap} = '~0x200000200000000';
 | 
			
		||||
my $proxy = TLSProxy::Proxy->new(
 | 
			
		||||
    \&vers_tolerance_filter,
 | 
			
		||||
 
 | 
			
		||||
@@ -67,6 +67,9 @@ plan skip_all => "TLSProxy isn't usable on $^O"
 | 
			
		||||
plan skip_all => "$test_name needs the dynamic engine feature enabled"
 | 
			
		||||
    if disabled("engine") || disabled("dynamic-engine");
 | 
			
		||||
 | 
			
		||||
plan skip_all => "$test_name needs the sock feature enabled"
 | 
			
		||||
    if disabled("sock");
 | 
			
		||||
 | 
			
		||||
$ENV{OPENSSL_ia32cap} = '~0x200000200000000';
 | 
			
		||||
 | 
			
		||||
sub checkmessages($$$$$);
 | 
			
		||||
 
 | 
			
		||||
@@ -435,14 +435,14 @@ sub testssl {
 | 
			
		||||
 | 
			
		||||
        SKIP: {
 | 
			
		||||
            skip "No IPv4 available on this machine", 1
 | 
			
		||||
                unless have_IPv4();
 | 
			
		||||
                unless !disabled("sock") && have_IPv4();
 | 
			
		||||
            ok(run(test([@ssltest, "-ipv4", @extra])),
 | 
			
		||||
               'test TLS via IPv4');
 | 
			
		||||
          }
 | 
			
		||||
          
 | 
			
		||||
        SKIP: {
 | 
			
		||||
            skip "No IPv6 available on this machine", 1
 | 
			
		||||
                unless have_IPv6();
 | 
			
		||||
                unless !disabled("sock") && have_IPv6();
 | 
			
		||||
            ok(run(test([@ssltest, "-ipv6", @extra])),
 | 
			
		||||
               'test TLS via IPv6');
 | 
			
		||||
          }
 | 
			
		||||
 
 | 
			
		||||
@@ -66,6 +66,9 @@ plan skip_all => "TLSProxy isn't usable on $^O"
 | 
			
		||||
plan skip_all => "$test_name needs the dynamic engine feature enabled"
 | 
			
		||||
    if disabled("engine") || disabled("dynamic-engine");
 | 
			
		||||
 | 
			
		||||
plan skip_all => "$test_name needs the sock feature enabled"
 | 
			
		||||
    if disabled("sock");
 | 
			
		||||
 | 
			
		||||
$ENV{OPENSSL_ia32cap} = '~0x200000200000000';
 | 
			
		||||
 | 
			
		||||
my $proxy = TLSProxy::Proxy->new(
 | 
			
		||||
 
 | 
			
		||||
@@ -1234,11 +1234,15 @@ int main(int argc, char *argv[])
 | 
			
		||||
            CAfile = *(++argv);
 | 
			
		||||
        } else if (strcmp(*argv, "-bio_pair") == 0) {
 | 
			
		||||
            bio_type = BIO_PAIR;
 | 
			
		||||
        } else if (strcmp(*argv, "-ipv4") == 0) {
 | 
			
		||||
        }
 | 
			
		||||
#ifndef OPENSSL_NO_SOCK
 | 
			
		||||
        else if (strcmp(*argv, "-ipv4") == 0) {
 | 
			
		||||
            bio_type = BIO_IPV4;
 | 
			
		||||
        } else if (strcmp(*argv, "-ipv6") == 0) {
 | 
			
		||||
            bio_type = BIO_IPV6;
 | 
			
		||||
        } else if (strcmp(*argv, "-f") == 0) {
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
        else if (strcmp(*argv, "-f") == 0) {
 | 
			
		||||
            force = 1;
 | 
			
		||||
        } else if (strcmp(*argv, "-time") == 0) {
 | 
			
		||||
            print_time = 1;
 | 
			
		||||
@@ -1857,6 +1861,7 @@ int main(int argc, char *argv[])
 | 
			
		||||
        case BIO_PAIR:
 | 
			
		||||
            ret = doit_biopair(s_ssl, c_ssl, bytes, &s_time, &c_time);
 | 
			
		||||
            break;
 | 
			
		||||
#ifndef OPENSSL_NO_SOCK
 | 
			
		||||
        case BIO_IPV4:
 | 
			
		||||
            ret = doit_localhost(s_ssl, c_ssl, BIO_FAMILY_IPV4,
 | 
			
		||||
                                 bytes, &s_time, &c_time);
 | 
			
		||||
@@ -1865,6 +1870,12 @@ int main(int argc, char *argv[])
 | 
			
		||||
            ret = doit_localhost(s_ssl, c_ssl, BIO_FAMILY_IPV6,
 | 
			
		||||
                                 bytes, &s_time, &c_time);
 | 
			
		||||
            break;
 | 
			
		||||
#else
 | 
			
		||||
        case BIO_IPV4:
 | 
			
		||||
        case BIO_IPV6:
 | 
			
		||||
            ret = 1;
 | 
			
		||||
            goto err;
 | 
			
		||||
#endif
 | 
			
		||||
        }
 | 
			
		||||
        if (ret)  break;
 | 
			
		||||
    }
 | 
			
		||||
@@ -1931,6 +1942,7 @@ int main(int argc, char *argv[])
 | 
			
		||||
    EXIT(ret);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifndef OPENSSL_NO_SOCK
 | 
			
		||||
int doit_localhost(SSL *s_ssl, SSL *c_ssl, int family, long count,
 | 
			
		||||
                   clock_t *s_time, clock_t *c_time)
 | 
			
		||||
{
 | 
			
		||||
@@ -2215,6 +2227,7 @@ int doit_localhost(SSL *s_ssl, SSL *c_ssl, int family, long count,
 | 
			
		||||
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int doit_biopair(SSL *s_ssl, SSL *c_ssl, long count,
 | 
			
		||||
                 clock_t *s_time, clock_t *c_time)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user