Fix documentation error in x509 app certopt flag
[openssl.git] / test / dtlsv1listentest.c
index 28b493e091b3b06860986a2f27d307840fd13e61..cc7e5f788923c66d550dc271a82890295d4749e4 100644 (file)
@@ -1,71 +1,26 @@
 /*
- * Written by Matt Caswell for the OpenSSL project.
- */
-/* ====================================================================
- * Copyright (c) 2016 The OpenSSL Project.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. All advertising materials mentioning features or use of this
- *    software must display the following acknowledgment:
- *    "This product includes software developed by the OpenSSL Project
- *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
- *
- * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
- *    endorse or promote products derived from this software without
- *    prior written permission. For written permission, please contact
- *    openssl-core@openssl.org.
- *
- * 5. Products derived from this software may not be called "OpenSSL"
- *    nor may "OpenSSL" appear in their names without prior written
- *    permission of the OpenSSL Project.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- *    acknowledgment:
- *    "This product includes software developed by the OpenSSL Project
- *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
- *
- * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- * ====================================================================
- *
- * This product includes cryptographic software written by Eric Young
- * (eay@cryptsoft.com).  This product includes software written by Tim
- * Hudson (tjh@cryptsoft.com).
+ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
  *
+ * Licensed under the OpenSSL license (the "License").  You may not use
+ * this file except in compliance with the License.  You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
  */
 
 #include <string.h>
-#include <sys/socket.h>
 #include <openssl/ssl.h>
 #include <openssl/bio.h>
 #include <openssl/err.h>
 #include <openssl/conf.h>
-#include <openssl/engine.h>
+#ifndef OPENSSL_NO_ENGINE
+ #include <openssl/engine.h>
+#endif
 #include "e_os.h"
 
+#ifndef OPENSSL_NO_SOCK
+
 /* Just a ClientHello without a cookie */
-const unsigned char clienthello_nocookie[] = {
+static const unsigned char clienthello_nocookie[] = {
     0x16, /* Handshake */
     0xFE, 0xFF, /* DTLSv1.0 */
     0x00, 0x00, /* Epoch */
@@ -91,7 +46,7 @@ const unsigned char clienthello_nocookie[] = {
 };
 
 /* First fragment of a ClientHello without a cookie */
-const unsigned char clienthello_nocookie_frag[] = {
+static const unsigned char clienthello_nocookie_frag[] = {
     0x16, /* Handshake */
     0xFE, 0xFF, /* DTLSv1.0 */
     0x00, 0x00, /* Epoch */
@@ -111,7 +66,7 @@ const unsigned char clienthello_nocookie_frag[] = {
 };
 
 /* First fragment of a ClientHello which is too short */
-const unsigned char clienthello_nocookie_short[] = {
+static const unsigned char clienthello_nocookie_short[] = {
     0x16, /* Handshake */
     0xFE, 0xFF, /* DTLSv1.0 */
     0x00, 0x00, /* Epoch */
@@ -130,7 +85,7 @@ const unsigned char clienthello_nocookie_short[] = {
 };
 
 /* Second fragment of a ClientHello */
-const unsigned char clienthello_2ndfrag[] = {
+static const unsigned char clienthello_2ndfrag[] = {
     0x16, /* Handshake */
     0xFE, 0xFF, /* DTLSv1.0 */
     0x00, 0x00, /* Epoch */
@@ -156,7 +111,7 @@ const unsigned char clienthello_2ndfrag[] = {
 };
 
 /* A ClientHello with a good cookie */
-const unsigned char clienthello_cookie[] = {
+static const unsigned char clienthello_cookie[] = {
     0x16, /* Handshake */
     0xFE, 0xFF, /* DTLSv1.0 */
     0x00, 0x00, /* Epoch */
@@ -184,7 +139,7 @@ const unsigned char clienthello_cookie[] = {
 };
 
 /* A fragmented ClientHello with a good cookie */
-const unsigned char clienthello_cookie_frag[] = {
+static const unsigned char clienthello_cookie_frag[] = {
     0x16, /* Handshake */
     0xFE, 0xFF, /* DTLSv1.0 */
     0x00, 0x00, /* Epoch */
@@ -207,7 +162,7 @@ const unsigned char clienthello_cookie_frag[] = {
 
 
 /* A ClientHello with a bad cookie */
-const unsigned char clienthello_badcookie[] = {
+static const unsigned char clienthello_badcookie[] = {
     0x16, /* Handshake */
     0xFE, 0xFF, /* DTLSv1.0 */
     0x00, 0x00, /* Epoch */
@@ -235,7 +190,7 @@ const unsigned char clienthello_badcookie[] = {
 };
 
 /* A fragmented ClientHello with the fragment boundary mid cookie */
-const unsigned char clienthello_cookie_short[] = {
+static const unsigned char clienthello_cookie_short[] = {
     0x16, /* Handshake */
     0xFE, 0xFF, /* DTLSv1.0 */
     0x00, 0x00, /* Epoch */
@@ -257,14 +212,14 @@ const unsigned char clienthello_cookie_short[] = {
 };
 
 /* Bad record - too short */
-const unsigned char record_short[] = {
+static const unsigned char record_short[] = {
     0x16, /* Handshake */
     0xFE, 0xFF, /* DTLSv1.0 */
     0x00, 0x00, /* Epoch */
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* Record sequence number */
 };
 
-const unsigned char verify[] = {
+static const unsigned char verify[] = {
     0x16, /* Handshake */
     0xFE, 0xFF, /* DTLSv1.0 */
     0x00, 0x00, /* Epoch */
@@ -281,7 +236,7 @@ const unsigned char verify[] = {
     0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13 /* Cookie */
 };
 
-struct {
+static struct {
     const unsigned char *in;
     unsigned int inlen;
     /*
@@ -338,7 +293,7 @@ struct {
     }
 };
 
-#define COOKIE_LEN  20
+# define COOKIE_LEN  20
 
 static int cookie_gen(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len)
 {
@@ -367,9 +322,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;
@@ -378,11 +335,7 @@ int main(void)
     char *data;
     long datalen;
     int ret, success = 0;
-    size_t i;
-
-    /* Initialise libssl */
-    SSL_load_error_strings();
-    SSL_library_init();
+    long i;
 
     ctx = SSL_CTX_new(DTLS_server_method());
     if (ctx == NULL || peer == NULL)
@@ -402,7 +355,7 @@ int main(void)
     SSL_set_wbio(ssl, outbio);
 
     success = 1;
-    for (i = 0; i < OSSL_NELEM(testpackets) && success; i++) {
+    for (i = 0; i < (long)OSSL_NELEM(testpackets) && success; i++) {
         inbio = BIO_new_mem_buf((char *)testpackets[i].in,
                                 testpackets[i].inlen);
         if (inbio == NULL) {
@@ -461,18 +414,13 @@ int main(void)
     SSL_free(ssl);
     SSL_CTX_free(ctx);
     BIO_free(inbio);
-    /* Unitialise libssl */
-#ifndef OPENSSL_NO_ENGINE
-    ENGINE_cleanup();
-#endif
-    CONF_modules_unload(1);
-    CRYPTO_cleanup_all_ex_data();
-    EVP_cleanup();
-    ERR_remove_thread_state(NULL);
-    ERR_free_strings();
-#ifndef OPENSSL_NO_CRYPTO_MDEBUG
+    OPENSSL_free(peer);
+# ifndef OPENSSL_NO_CRYPTO_MDEBUG
     CRYPTO_mem_leaks_fp(stderr);
-#endif
+# endif
     return success ? 0 : 1;
+#else
+    printf("DTLSv1_listen() is not supported by this build - skipping\n");
+    return 0;
+#endif
 }
-