fix all the warnings in our demos and make them enableable

Fix up the warnings in the demos and make them configurable with
enable-demos

Reviewed-by: Nicola Tuveri <nic.tuv@gmail.com>
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Paul Dale <ppzgs1@gmail.com>
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
(Merged from https://github.com/openssl/openssl/pull/24047)
This commit is contained in:
Neil Horman 2024-04-05 22:20:54 -04:00
parent 2000281dad
commit 7a7fbeb924
15 changed files with 49 additions and 32 deletions

View File

@ -77,6 +77,8 @@ EOF
# Generic OpenSSL-style methods relating to this support # Generic OpenSSL-style methods relating to this support
# are always compiled but return NULL if the hardware # are always compiled but return NULL if the hardware
# support isn't compiled. # support isn't compiled.
#
# enable-demos Enable the building of the example code in the demos directory
# no-hw do not compile support for any crypto hardware. # no-hw do not compile support for any crypto hardware.
# [no-]threads [don't] try to create a library that is suitable for # [no-]threads [don't] try to create a library that is suitable for
# multithreaded applications (default is "threads" if we # multithreaded applications (default is "threads" if we
@ -443,6 +445,7 @@ my @disablables = (
"crypto-mdebug", "crypto-mdebug",
"ct", "ct",
"default-thread-pool", "default-thread-pool",
"demos",
"deprecated", "deprecated",
"des", "des",
"devcryptoeng", "devcryptoeng",
@ -570,6 +573,7 @@ our %disabled = ( # "what" => "comment"
"buildtest-c++" => "default", "buildtest-c++" => "default",
"crypto-mdebug" => "default", "crypto-mdebug" => "default",
"crypto-mdebug-backtrace" => "default", "crypto-mdebug-backtrace" => "default",
"demos" => "default",
"devcryptoeng" => "default", "devcryptoeng" => "default",
"ec_nistp_64_gcc_128" => "default", "ec_nistp_64_gcc_128" => "default",
"egd" => "default", "egd" => "default",

View File

@ -1,10 +1,13 @@
# Note that some of these directories are filtered in Configure. Look for # Note that some of these directories are filtered in Configure. Look for
# %skipdir there for further explanations. # %skipdir there for further explanations.
SUBDIRS=crypto ssl apps util tools fuzz providers doc demos SUBDIRS=crypto ssl apps util tools fuzz providers doc
IF[{- !$disabled{tests} -}] IF[{- !$disabled{tests} -}]
SUBDIRS=test SUBDIRS=test
ENDIF ENDIF
IF[{- !$disabled{demos} -}]
SUBDIRS=demos
ENDIF
IF[{- !$disabled{'deprecated-3.0'} -}] IF[{- !$disabled{'deprecated-3.0'} -}]
SUBDIRS=engines SUBDIRS=engines
ENDIF ENDIF

View File

@ -27,12 +27,12 @@
static volatile int done = 0; static volatile int done = 0;
void interrupt(int sig) static void interrupt(int sig)
{ {
done = 1; done = 1;
} }
void sigsetup(void) static void sigsetup(void)
{ {
struct sigaction sa; struct sigaction sa;

View File

@ -51,7 +51,8 @@ int main(int argc, char *argv[])
/* Enable trust chain verification */ /* Enable trust chain verification */
SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER, NULL); SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER, NULL);
SSL_CTX_load_verify_locations(ssl_ctx, CAfile, NULL); if (!SSL_CTX_load_verify_locations(ssl_ctx, CAfile, NULL))
goto err;
/* Lets make a SSL structure */ /* Lets make a SSL structure */
ssl = SSL_new(ssl_ctx); ssl = SSL_new(ssl_ctx);

View File

@ -68,7 +68,7 @@ OSSL_LIB_CTX *libctx = NULL;
const char *propq = NULL; const char *propq = NULL;
int aes_ccm_encrypt(void) static int aes_ccm_encrypt(void)
{ {
int ret = 0; int ret = 0;
EVP_CIPHER_CTX *ctx; EVP_CIPHER_CTX *ctx;
@ -155,7 +155,7 @@ err:
return ret; return ret;
} }
int aes_ccm_decrypt(void) static int aes_ccm_decrypt(void)
{ {
int ret = 0; int ret = 0;
EVP_CIPHER_CTX *ctx; EVP_CIPHER_CTX *ctx;

View File

@ -67,7 +67,7 @@ static const unsigned char gcm_tag[] = {
OSSL_LIB_CTX *libctx = NULL; OSSL_LIB_CTX *libctx = NULL;
const char *propq = NULL; const char *propq = NULL;
int aes_gcm_encrypt(void) static int aes_gcm_encrypt(void)
{ {
int ret = 0; int ret = 0;
EVP_CIPHER_CTX *ctx; EVP_CIPHER_CTX *ctx;
@ -144,7 +144,7 @@ err:
return ret; return ret;
} }
int aes_gcm_decrypt(void) static int aes_gcm_decrypt(void)
{ {
int ret = 0; int ret = 0;
EVP_CIPHER_CTX *ctx; EVP_CIPHER_CTX *ctx;

View File

@ -53,7 +53,7 @@ static const unsigned char wrap_ct[] = {
OSSL_LIB_CTX *libctx = NULL; OSSL_LIB_CTX *libctx = NULL;
const char *propq = NULL; const char *propq = NULL;
int aes_wrap_encrypt(void) static int aes_wrap_encrypt(void)
{ {
int ret = 0; int ret = 0;
EVP_CIPHER_CTX *ctx; EVP_CIPHER_CTX *ctx;
@ -111,7 +111,7 @@ err:
return ret; return ret;
} }
int aes_wrap_decrypt(void) static int aes_wrap_decrypt(void)
{ {
int ret = 0; int ret = 0;
EVP_CIPHER_CTX *ctx; EVP_CIPHER_CTX *ctx;

View File

@ -52,7 +52,7 @@ static const unsigned char cbc_ct[] = {
OSSL_LIB_CTX *libctx = NULL; OSSL_LIB_CTX *libctx = NULL;
const char *propq = NULL; const char *propq = NULL;
int aria_cbc_encrypt(void) static int aria_cbc_encrypt(void)
{ {
int ret = 0; int ret = 0;
EVP_CIPHER_CTX *ctx; EVP_CIPHER_CTX *ctx;
@ -108,7 +108,7 @@ err:
return ret; return ret;
} }
int aria_cbc_decrypt(void) static int aria_cbc_decrypt(void)
{ {
int ret = 0; int ret = 0;
EVP_CIPHER_CTX *ctx; EVP_CIPHER_CTX *ctx;

View File

@ -76,16 +76,16 @@ const unsigned char known_answer[] = {
0x81, 0xca, 0x8f, 0x78, 0x29, 0x19, 0x9a, 0xfe, 0x81, 0xca, 0x8f, 0x78, 0x29, 0x19, 0x9a, 0xfe,
}; };
int demonstrate_digest(void) static int demonstrate_digest(void)
{ {
OSSL_LIB_CTX *library_context; OSSL_LIB_CTX *library_context;
int ret = 0; int ret = 0;
const char *option_properties = NULL; const char *option_properties = NULL;
EVP_MD *message_digest = NULL; EVP_MD *message_digest = NULL;
EVP_MD_CTX *digest_context = NULL; EVP_MD_CTX *digest_context = NULL;
int digest_length; unsigned int digest_length;
unsigned char *digest_value = NULL; unsigned char *digest_value = NULL;
int j; unsigned int j;
library_context = OSSL_LIB_CTX_new(); library_context = OSSL_LIB_CTX_new();
if (library_context == NULL) { if (library_context == NULL) {

View File

@ -31,17 +31,17 @@
* a BIO created to read from stdin * a BIO created to read from stdin
*/ */
int demonstrate_digest(BIO *input) static int demonstrate_digest(BIO *input)
{ {
OSSL_LIB_CTX *library_context = NULL; OSSL_LIB_CTX *library_context = NULL;
int ret = 0; int ret = 0;
const char *option_properties = NULL; const char *option_properties = NULL;
EVP_MD *message_digest = NULL; EVP_MD *message_digest = NULL;
EVP_MD_CTX *digest_context = NULL; EVP_MD_CTX *digest_context = NULL;
int digest_length; unsigned int digest_length;
unsigned char *digest_value = NULL; unsigned char *digest_value = NULL;
unsigned char buffer[512]; unsigned char buffer[512];
int ii; unsigned int ii;
library_context = OSSL_LIB_CTX_new(); library_context = OSSL_LIB_CTX_new();
if (library_context == NULL) { if (library_context == NULL) {

View File

@ -30,7 +30,7 @@
const char message[] = "This is a test message."; const char message[] = "This is a test message.";
/* Expected output when an output length of 20 bytes is used. */ /* Expected output when an output length of 20 bytes is used. */
static const char known_answer[] = { static const unsigned char known_answer[] = {
0x52, 0x97, 0x93, 0x78, 0x27, 0x58, 0x7d, 0x62, 0x52, 0x97, 0x93, 0x78, 0x27, 0x58, 0x7d, 0x62,
0x8b, 0x00, 0x25, 0xb5, 0xec, 0x39, 0x5e, 0x2d, 0x8b, 0x00, 0x25, 0xb5, 0xec, 0x39, 0x5e, 0x2d,
0x7f, 0x3e, 0xd4, 0x19 0x7f, 0x3e, 0xd4, 0x19

View File

@ -108,8 +108,8 @@ static BIO *create_socket_bio(const char *hostname, const char *port,
return bio; return bio;
} }
int write_a_request(SSL *stream, const char *request_start, static int write_a_request(SSL *stream, const char *request_start,
const char *hostname) const char *hostname)
{ {
const char *request_end = "\r\n\r\n"; const char *request_end = "\r\n\r\n";
size_t written; size_t written;

View File

@ -21,7 +21,7 @@
* See the EVP_PKEY_DSA_paramgen demo if you need to * See the EVP_PKEY_DSA_paramgen demo if you need to
* use non default parameters. * use non default parameters.
*/ */
EVP_PKEY *dsa_genparams(OSSL_LIB_CTX *libctx, const char *propq) static EVP_PKEY *dsa_genparams(OSSL_LIB_CTX *libctx, const char *propq)
{ {
EVP_PKEY *dsaparamkey = NULL; EVP_PKEY *dsaparamkey = NULL;
EVP_PKEY_CTX *ctx = NULL; EVP_PKEY_CTX *ctx = NULL;

View File

@ -55,8 +55,8 @@ static const char digest[] = "SHA384";
* Create a new dsa param key that is the combination of an existing param key * Create a new dsa param key that is the combination of an existing param key
* plus extra parameters. * plus extra parameters.
*/ */
EVP_PKEY_CTX *create_merged_key(EVP_PKEY *dsaparams, const OSSL_PARAM *newparams, static EVP_PKEY_CTX *create_merged_key(EVP_PKEY *dsaparams, const OSSL_PARAM *newparams,
OSSL_LIB_CTX *libctx, const char *propq) OSSL_LIB_CTX *libctx, const char *propq)
{ {
EVP_PKEY_CTX *out = NULL; EVP_PKEY_CTX *out = NULL;
EVP_PKEY_CTX *ctx = NULL; EVP_PKEY_CTX *ctx = NULL;

View File

@ -29,7 +29,7 @@ typedef unsigned char bool;
*/ */
static volatile bool server_running = true; static volatile bool server_running = true;
int create_socket(bool isServer) static int create_socket(bool isServer)
{ {
int s; int s;
int optval = 1; int optval = 1;
@ -67,7 +67,7 @@ int create_socket(bool isServer)
return s; return s;
} }
SSL_CTX* create_context(bool isServer) static SSL_CTX* create_context(bool isServer)
{ {
const SSL_METHOD *method; const SSL_METHOD *method;
SSL_CTX *ctx; SSL_CTX *ctx;
@ -87,7 +87,7 @@ SSL_CTX* create_context(bool isServer)
return ctx; return ctx;
} }
void configure_server_context(SSL_CTX *ctx) static void configure_server_context(SSL_CTX *ctx)
{ {
/* Set the key and cert */ /* Set the key and cert */
if (SSL_CTX_use_certificate_chain_file(ctx, "cert.pem") <= 0) { if (SSL_CTX_use_certificate_chain_file(ctx, "cert.pem") <= 0) {
@ -101,7 +101,7 @@ void configure_server_context(SSL_CTX *ctx)
} }
} }
void configure_client_context(SSL_CTX *ctx) static void configure_client_context(SSL_CTX *ctx)
{ {
/* /*
* Configure the client to abort the handshake if certificate verification * Configure the client to abort the handshake if certificate verification
@ -119,7 +119,7 @@ void configure_client_context(SSL_CTX *ctx)
} }
} }
void usage(void) static void usage(void)
{ {
printf("Usage: sslecho s\n"); printf("Usage: sslecho s\n");
printf(" --or--\n"); printf(" --or--\n");
@ -207,7 +207,10 @@ int main(int argc, char **argv)
/* Create server SSL structure using newly accepted client socket */ /* Create server SSL structure using newly accepted client socket */
ssl = SSL_new(ssl_ctx); ssl = SSL_new(ssl_ctx);
SSL_set_fd(ssl, client_skt); if (!SSL_set_fd(ssl, client_skt)) {
ERR_print_errors_fp(stderr);
exit(EXIT_FAILURE);
}
/* Wait for SSL connection from the client */ /* Wait for SSL connection from the client */
if (SSL_accept(ssl) <= 0) { if (SSL_accept(ssl) <= 0) {
@ -279,11 +282,17 @@ int main(int argc, char **argv)
/* Create client SSL structure using dedicated client socket */ /* Create client SSL structure using dedicated client socket */
ssl = SSL_new(ssl_ctx); ssl = SSL_new(ssl_ctx);
SSL_set_fd(ssl, client_skt); if (!SSL_set_fd(ssl, client_skt)) {
ERR_print_errors_fp(stderr);
goto exit;
}
/* Set hostname for SNI */ /* Set hostname for SNI */
SSL_set_tlsext_host_name(ssl, rem_server_ip); SSL_set_tlsext_host_name(ssl, rem_server_ip);
/* Configure server hostname check */ /* Configure server hostname check */
SSL_set1_host(ssl, rem_server_ip); if (!SSL_set1_host(ssl, rem_server_ip)) {
ERR_print_errors_fp(stderr);
goto exit;
}
/* Now do SSL connect with server */ /* Now do SSL connect with server */
if (SSL_connect(ssl) == 1) { if (SSL_connect(ssl) == 1) {