summaryrefslogtreecommitdiffstats
path: root/lib/libssl/src/ssl/ssl_task.c
diff options
context:
space:
mode:
authorjsing <jsing@openbsd.org>2014-04-14 13:10:35 +0000
committerjsing <jsing@openbsd.org>2014-04-14 13:10:35 +0000
commit35fb06776ce30f160c3ccd100d55f2fa3b81cb24 (patch)
tree618eded092453257d783393140615515887e0ab3 /lib/libssl/src/ssl/ssl_task.c
parentAdapt relayd to use AgentX protocol to send traps (diff)
downloadwireguard-openbsd-35fb06776ce30f160c3ccd100d55f2fa3b81cb24.tar.xz
wireguard-openbsd-35fb06776ce30f160c3ccd100d55f2fa3b81cb24.zip
First pass at applying KNF to the OpenSSL code, which almost makes it
readable. This pass is whitespace only and can readily be verified using tr and md5.
Diffstat (limited to 'lib/libssl/src/ssl/ssl_task.c')
-rw-r--r--lib/libssl/src/ssl/ssl_task.c287
1 files changed, 155 insertions, 132 deletions
diff --git a/lib/libssl/src/ssl/ssl_task.c b/lib/libssl/src/ssl/ssl_task.c
index 366204f097a..25d20b06a0b 100644
--- a/lib/libssl/src/ssl/ssl_task.c
+++ b/lib/libssl/src/ssl/ssl_task.c
@@ -134,24 +134,28 @@ int LIB$INIT_TIMER(), LIB$SHOW_TIMER();
#include <openssl/ssl.h>
#include <openssl/err.h>
-int verify_callback(int ok, X509 *xs, X509 *xi, int depth,
- int error);
-BIO *bio_err=NULL;
-BIO *bio_stdout=NULL;
+int
+verify_callback(int ok, X509 *xs, X509 *xi, int depth,
+int error);
+BIO *bio_err = NULL;
+BIO *bio_stdout = NULL;
BIO_METHOD *BIO_s_rtcp();
-static char *cipher=NULL;
-int verbose=1;
+static char *cipher = NULL;
+int verbose = 1;
#ifdef FIONBIO
-static int s_nbio=0;
+static int s_nbio = 0;
#endif
#define TEST_SERVER_CERT "SSL_SERVER_CERTIFICATE"
/*************************************************************************/
-struct rpc_msg { /* Should have member alignment inhibited */
- char channel; /* 'A'-app data. 'R'-remote client 'G'-global */
- char function; /* 'G'-get, 'P'-put, 'C'-confirm, 'X'-close */
- unsigned short int length; /* Amount of data returned or max to return */
- char data[4092]; /* variable data */
+ struct rpc_msg { /* Should have member alignment inhibited */
+ char channel;
+ /* 'A'-app data. 'R'-remote client 'G'-global */
+ char function;
+ /* 'G'-get, 'P'-put, 'C'-confirm, 'X'-close */
+ unsigned short int length; /* Amount of data returned or max to return */
+ char data[4092];
+ /* variable data */
};
#define RPC_HDR_SIZE (sizeof(struct rpc_msg) - 4092)
@@ -159,9 +163,9 @@ static $DESCRIPTOR(sysnet, "SYS$NET");
typedef unsigned short io_channel;
struct io_status {
- unsigned short status;
- unsigned short count;
- unsigned long stsval;
+ unsigned short status;
+ unsigned short count;
+ unsigned long stsval;
};
int doit(io_channel chan, SSL_CTX *s_ctx );
/*****************************************************************************/
@@ -169,63 +173,66 @@ int doit(io_channel chan, SSL_CTX *s_ctx );
*/
static int get ( io_channel chan, char *buffer, int maxlen, int *length )
{
- int status;
- struct io_status iosb;
- status = SYS$QIOW ( 0, chan, IO$_READVBLK, &iosb, 0, 0,
+ int status;
+ struct io_status iosb;
+ status = SYS$QIOW ( 0, chan, IO$_READVBLK, &iosb, 0, 0,
buffer, maxlen, 0, 0, 0, 0 );
- if ( (status&1) == 1 ) status = iosb.status;
- if ( (status&1) == 1 ) *length = iosb.count;
- return status;
+ if ((status&1)
+ == 1 ) status = iosb.status;
+ if ((status&1)
+ == 1 ) *length = iosb.count;
+ return status;
}
static int put ( io_channel chan, char *buffer, int length )
{
- int status;
- struct io_status iosb;
- status = SYS$QIOW ( 0, chan, IO$_WRITEVBLK, &iosb, 0, 0,
+ int status;
+ struct io_status iosb;
+ status = SYS$QIOW ( 0, chan, IO$_WRITEVBLK, &iosb, 0, 0,
buffer, length, 0, 0, 0, 0 );
- if ( (status&1) == 1 ) status = iosb.status;
- return status;
+ if ((status&1)
+ == 1 ) status = iosb.status;
+ return status;
}
/***************************************************************************/
/* Handle operations on the 'G' channel.
*/
-static int general_request ( io_channel chan, struct rpc_msg *msg, int length )
-{
- return 48;
+static int general_request ( io_channel chan, struct rpc_msg *msg, int length ) {
+ return 48;
}
/***************************************************************************/
int main ( int argc, char **argv )
{
- int status, length;
- io_channel chan;
- struct rpc_msg msg;
+ int status, length;
+ io_channel chan;
+ struct rpc_msg msg;
- char *CApath=NULL,*CAfile=NULL;
- int badop=0;
- int ret=1;
- int client_auth=0;
- int server_auth=0;
- SSL_CTX *s_ctx=NULL;
+ char *CApath = NULL, *CAfile = NULL;
+ int badop = 0;
+ int ret = 1;
+ int client_auth = 0;
+ int server_auth = 0;
+ SSL_CTX *s_ctx = NULL;
/*
* Confirm logical link with initiating client.
*/
- LIB$INIT_TIMER();
- status = SYS$ASSIGN ( &sysnet, &chan, 0, 0, 0 );
- printf("status of assign to SYS$NET: %d\n", status );
+ LIB$INIT_TIMER();
+ status = SYS$ASSIGN ( &sysnet, &chan, 0, 0, 0 );
+ printf("status of assign to SYS$NET: %d\n", status );
/*
* Initialize standard out and error files.
*/
if (bio_err == NULL)
- if ((bio_err=BIO_new(BIO_s_file())) != NULL)
- BIO_set_fp(bio_err,stderr,BIO_NOCLOSE);
+ if ((bio_err = BIO_new(BIO_s_file())) != NULL)
+ BIO_set_fp(bio_err, stderr, BIO_NOCLOSE);
if (bio_stdout == NULL)
- if ((bio_stdout=BIO_new(BIO_s_file())) != NULL)
- BIO_set_fp(bio_stdout,stdout,BIO_NOCLOSE);
+ if ((bio_stdout = BIO_new(BIO_s_file())) != NULL)
+ BIO_set_fp(bio_stdout, stdout, BIO_NOCLOSE);
/*
* get the preferred cipher list and other initialization
*/
- if (cipher == NULL) cipher=getenv("SSL_CIPHER");
+ if (cipher == NULL)
+ cipher = getenv("SSL_CIPHER");
printf("cipher list: %s\n", cipher ? cipher : "{undefined}" );
SSL_load_error_strings();
@@ -234,48 +241,53 @@ int main ( int argc, char **argv )
/* DRM, this was the original, but there is no such thing as SSLv2()
s_ctx=SSL_CTX_new(SSLv2());
*/
- s_ctx=SSL_CTX_new(SSLv2_server_method());
+ s_ctx = SSL_CTX_new(SSLv2_server_method());
- if (s_ctx == NULL) goto end;
+ if (s_ctx == NULL)
+ goto end;
- SSL_CTX_use_certificate_file(s_ctx,TEST_SERVER_CERT,SSL_FILETYPE_PEM);
- SSL_CTX_use_RSAPrivateKey_file(s_ctx,TEST_SERVER_CERT,SSL_FILETYPE_PEM);
+ SSL_CTX_use_certificate_file(s_ctx, TEST_SERVER_CERT, SSL_FILETYPE_PEM);
+ SSL_CTX_use_RSAPrivateKey_file(s_ctx, TEST_SERVER_CERT, SSL_FILETYPE_PEM);
printf("Loaded server certificate: '%s'\n", TEST_SERVER_CERT );
/*
* Take commands from client until bad status.
*/
- LIB$SHOW_TIMER();
- status = doit ( chan, s_ctx );
- LIB$SHOW_TIMER();
+ LIB$SHOW_TIMER();
+ status = doit ( chan, s_ctx );
+ LIB$SHOW_TIMER();
/*
* do final cleanup and exit.
*/
end:
- if (s_ctx != NULL) SSL_CTX_free(s_ctx);
- LIB$SHOW_TIMER();
- return 1;
+ if (s_ctx != NULL)
+ SSL_CTX_free(s_ctx);
+ LIB$SHOW_TIMER();
+ return 1;
}
-int doit(io_channel chan, SSL_CTX *s_ctx )
+int
+doit(io_channel chan, SSL_CTX *s_ctx )
{
- int status, length, link_state;
- struct rpc_msg msg;
+ int status, length, link_state;
+ struct rpc_msg msg;
- SSL *s_ssl=NULL;
- BIO *c_to_s=NULL;
- BIO *s_to_c=NULL;
- BIO *c_bio=NULL;
- BIO *s_bio=NULL;
+ SSL *s_ssl = NULL;
+ BIO *c_to_s = NULL;
+ BIO *s_to_c = NULL;
+ BIO *c_bio = NULL;
+ BIO *s_bio = NULL;
int i;
- int done=0;
+ int done = 0;
- s_ssl=SSL_new(s_ctx);
- if (s_ssl == NULL) goto err;
+ s_ssl = SSL_new(s_ctx);
+ if (s_ssl == NULL)
+ goto err;
- c_to_s=BIO_new(BIO_s_rtcp());
- s_to_c=BIO_new(BIO_s_rtcp());
- if ((s_to_c == NULL) || (c_to_s == NULL)) goto err;
+ c_to_s = BIO_new(BIO_s_rtcp());
+ s_to_c = BIO_new(BIO_s_rtcp());
+ if ((s_to_c == NULL)
+ || (c_to_s == NULL)) goto err;
/* original, DRM 24-SEP-1997
BIO_set_fd ( c_to_s, "", chan );
BIO_set_fd ( s_to_c, "", chan );
@@ -283,13 +295,14 @@ int doit(io_channel chan, SSL_CTX *s_ctx )
BIO_set_fd ( c_to_s, 0, chan );
BIO_set_fd ( s_to_c, 0, chan );
- c_bio=BIO_new(BIO_f_ssl());
- s_bio=BIO_new(BIO_f_ssl());
- if ((c_bio == NULL) || (s_bio == NULL)) goto err;
+ c_bio = BIO_new(BIO_f_ssl());
+ s_bio = BIO_new(BIO_f_ssl());
+ if ((c_bio == NULL)
+ || (s_bio == NULL)) goto err;
SSL_set_accept_state(s_ssl);
- SSL_set_bio(s_ssl,c_to_s,s_to_c);
- BIO_set_ssl(s_bio,s_ssl,BIO_CLOSE);
+ SSL_set_bio(s_ssl, c_to_s, s_to_c);
+ BIO_set_ssl(s_bio, s_ssl, BIO_CLOSE);
/* We can always do writes */
printf("Begin doit main loop\n");
@@ -300,59 +313,65 @@ int doit(io_channel chan, SSL_CTX *s_ctx )
/*
* Wait for remote end to request data action on A channel.
*/
- while ( link_state == 0 ) {
- status = get ( chan, (char *) &msg, sizeof(msg), &length );
- if ( (status&1) == 0 ) {
- printf("Error in main loop get: %d\n", status );
- link_state = 3;
- break;
- }
- if ( length < RPC_HDR_SIZE ) {
- printf("Error in main loop get size: %d\n", length );
- break;
- link_state = 3;
- }
- if ( msg.channel != 'A' ) {
- printf("Error in main loop, unexpected channel: %c\n",
- msg.channel );
- break;
- link_state = 3;
- }
- if ( msg.function == 'G' ) {
- link_state = 1;
- } else if ( msg.function == 'P' ) {
- link_state = 2; /* write pending */
- } else if ( msg.function == 'X' ) {
- link_state = 3;
- } else {
- link_state = 3;
- }
- }
- if ( link_state == 1 ) {
- i = BIO_read ( s_bio, msg.data, msg.length );
- if ( i < 0 ) link_state = 3;
- else {
- msg.channel = 'A';
- msg.function = 'C'; /* confirm */
- msg.length = i;
- status = put ( chan, (char *) &msg, i+RPC_HDR_SIZE );
- if ( (status&1) == 0 ) break;
- link_state = 0;
+ while (link_state == 0 ) {
+ status = get ( chan, (char *) &msg, sizeof(msg), &length );
+ if ((status&1) == 0 ) {
+ printf("Error in main loop get: %d\n", status );
+ link_state = 3;
+ break;
+ }
+ if (length < RPC_HDR_SIZE ) {
+ printf("Error in main loop get size: %d\n", length );
+ break;
+ link_state = 3;
+ }
+ if (msg.channel != 'A' ) {
+ printf("Error in main loop, unexpected channel: %c\n",
+ msg.channel );
+ break;
+ link_state = 3;
+ }
+ if (msg.function == 'G' ) {
+ link_state = 1;
+ } else if (msg.function == 'P' ) {
+ link_state = 2; /* write pending */
+ } else if (msg.function == 'X' ) {
+ link_state = 3;
+ } else {
+ link_state = 3;
+ }
}
- } else if ( link_state == 2 ) {
- i = BIO_write ( s_bio, msg.data, msg.length );
- if ( i < 0 ) link_state = 3;
- else {
- msg.channel = 'A';
- msg.function = 'C'; /* confirm */
- msg.length = 0;
- status = put ( chan, (char *) &msg, RPC_HDR_SIZE );
- if ( (status&1) == 0 ) break;
- link_state = 0;
+ if (link_state == 1 ) {
+ i = BIO_read ( s_bio, msg.data, msg.length );
+ if (i < 0 )
+ link_state = 3;
+ else {
+ msg.channel = 'A';
+ msg.function = 'C';
+ /* confirm */
+ msg.length = i;
+ status = put ( chan, (char *) &msg, i + RPC_HDR_SIZE );
+ if ((status&1)
+ == 0 ) break;
+ link_state = 0;
+ }
+ } else if (link_state == 2 ) {
+ i = BIO_write ( s_bio, msg.data, msg.length );
+ if (i < 0 )
+ link_state = 3;
+ else {
+ msg.channel = 'A';
+ msg.function = 'C';
+ /* confirm */
+ msg.length = 0;
+ status = put ( chan, (char *) &msg, RPC_HDR_SIZE );
+ if ((status&1)
+ == 0 ) break;
+ link_state = 0;
+ }
}
- }
}
- fprintf(stdout,"DONE\n");
+ fprintf(stdout, "DONE\n");
err:
/* We have to set the BIO's to NULL otherwise they will be
* free()ed twice. Once when th s_ssl is SSL_free()ed and
@@ -361,12 +380,16 @@ err:
* BIO structure and SSL_set_bio() and SSL_free() automatically
* BIO_free non NULL entries.
* You should not normally do this or be required to do this */
- s_ssl->rbio=NULL;
- s_ssl->wbio=NULL;
+ s_ssl->rbio = NULL;
+ s_ssl->wbio = NULL;
- if (c_to_s != NULL) BIO_free(c_to_s);
- if (s_to_c != NULL) BIO_free(s_to_c);
- if (c_bio != NULL) BIO_free(c_bio);
- if (s_bio != NULL) BIO_free(s_bio);
- return(0);
+ if (c_to_s != NULL)
+ BIO_free(c_to_s);
+ if (s_to_c != NULL)
+ BIO_free(s_to_c);
+ if (c_bio != NULL)
+ BIO_free(c_bio);
+ if (s_bio != NULL)
+ BIO_free(s_bio);
+ return (0);
}