head	1.2;
access;
symbols
	perseant-exfatfs-base-20250801:1.2
	perseant-exfatfs-base-20240630:1.2
	perseant-exfatfs:1.2.0.24
	perseant-exfatfs-base:1.2
	cjep_sun2x:1.2.0.22
	cjep_sun2x-base:1.2
	cjep_staticlib_x-base1:1.2
	cjep_staticlib_x:1.2.0.20
	cjep_staticlib_x-base:1.2
	phil-wifi-20200421:1.2
	phil-wifi-20200411:1.2
	phil-wifi-20200406:1.2
	pgoyette-compat-merge-20190127:1.2
	pgoyette-compat-20190127:1.2
	pgoyette-compat-20190118:1.2
	pgoyette-compat-1226:1.2
	pgoyette-compat-1126:1.2
	pgoyette-compat-1020:1.2
	pgoyette-compat-0930:1.2
	pgoyette-compat-0906:1.2
	pgoyette-compat-0728:1.2
	pgoyette-compat-0625:1.2
	pgoyette-compat-0521:1.2
	pgoyette-compat-0502:1.2
	pgoyette-compat-0422:1.2
	pgoyette-compat-0415:1.2
	pgoyette-compat-0407:1.2
	pgoyette-compat-0330:1.2
	pgoyette-compat-0322:1.2
	pgoyette-compat-0315:1.2
	pgoyette-compat:1.2.0.18
	pgoyette-compat-base:1.2
	perseant-stdc-iso10646:1.2.0.16
	perseant-stdc-iso10646-base:1.2
	prg-localcount2-base3:1.2
	prg-localcount2-base2:1.2
	prg-localcount2-base1:1.2
	prg-localcount2:1.2.0.14
	prg-localcount2-base:1.2
	pgoyette-localcount-20170426:1.2
	bouyer-socketcan-base1:1.2
	pgoyette-localcount-20170320:1.2
	bouyer-socketcan:1.2.0.12
	bouyer-socketcan-base:1.2
	pgoyette-localcount-20170107:1.2
	pgoyette-localcount-20161104:1.2
	localcount-20160914:1.2
	pgoyette-localcount-20160806:1.2
	pgoyette-localcount-20160726:1.2
	pgoyette-localcount:1.2.0.10
	pgoyette-localcount-base:1.2
	netbsd-5-2-3-RELEASE:1.1.1.2
	netbsd-5-1-5-RELEASE:1.1.1.2
	yamt-pagecache-base9:1.2
	yamt-pagecache-tag8:1.2
	tls-earlyentropy:1.2.0.6
	tls-earlyentropy-base:1.2
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.2
	riastradh-drm2-base3:1.2
	netbsd-5-2-2-RELEASE:1.1.1.2
	netbsd-5-1-4-RELEASE:1.1.1.2
	netbsd-5-2-1-RELEASE:1.1.1.2
	netbsd-5-1-3-RELEASE:1.1.1.2
	agc-symver:1.2.0.8
	agc-symver-base:1.2
	tls-maxphys-base:1.2
	yamt-pagecache-base8:1.2
	netbsd-5-2:1.1.1.2.0.50
	yamt-pagecache-base7:1.2
	netbsd-5-2-RELEASE:1.1.1.2
	netbsd-5-2-RC1:1.1.1.2
	yamt-pagecache-base6:1.2
	yamt-pagecache-base5:1.2
	yamt-pagecache-base4:1.2
	netbsd-5-1-2-RELEASE:1.1.1.2
	netbsd-5-1-1-RELEASE:1.1.1.2
	yamt-pagecache-base3:1.2
	yamt-pagecache-base2:1.2
	yamt-pagecache:1.2.0.4
	yamt-pagecache-base:1.2
	bouyer-quota2-nbase:1.2
	bouyer-quota2:1.2.0.2
	bouyer-quota2-base:1.2
	matt-nb5-mips64-premerge-20101231:1.1.1.2
	matt-nb5-pq3:1.1.1.2.0.48
	matt-nb5-pq3-base:1.1.1.2
	netbsd-5-1:1.1.1.2.0.46
	netbsd-5-1-RELEASE:1.1.1.2
	netbsd-5-1-RC4:1.1.1.2
	matt-nb5-mips64-k15:1.1.1.2
	netbsd-5-1-RC3:1.1.1.2
	netbsd-5-1-RC2:1.1.1.2
	netbsd-5-1-RC1:1.1.1.2
	netbsd-5-0-2-RELEASE:1.1.1.2
	matt-nb5-mips64-premerge-20091211:1.1.1.2
	matt-nb5-mips64-u2-k2-k4-k7-k8-k9:1.1.1.2
	matt-nb4-mips64-k7-u2a-k9b:1.1.1.2
	matt-nb5-mips64-u1-k1-k5:1.1.1.2
	matt-nb5-mips64:1.1.1.2.0.44
	netbsd-5-0-1-RELEASE:1.1.1.2
	jym-xensuspend-nbase:1.1.1.2
	netbsd-5-0:1.1.1.2.0.42
	netbsd-5-0-RELEASE:1.1.1.2
	netbsd-5-0-RC4:1.1.1.2
	netbsd-5-0-RC3:1.1.1.2
	netbsd-5-0-RC2:1.1.1.2
	jym-xensuspend:1.1.1.2.0.40
	jym-xensuspend-base:1.1.1.2
	netbsd-5-0-RC1:1.1.1.2
	netbsd-5:1.1.1.2.0.38
	netbsd-5-base:1.1.1.2
	matt-mips64-base2:1.1.1.2
	matt-mips64:1.1.1.2.0.36
	mjf-devfs2:1.1.1.2.0.34
	mjf-devfs2-base:1.1.1.2
	netbsd-4-0-1-RELEASE:1.1.1.2
	wrstuden-revivesa-base-3:1.1.1.2
	wrstuden-revivesa-base-2:1.1.1.2
	wrstuden-fixsa-newbase:1.1.1.2
	wrstuden-revivesa-base-1:1.1.1.2
	yamt-pf42-base4:1.1.1.2
	yamt-pf42-base3:1.1.1.2
	hpcarm-cleanup-nbase:1.1.1.2
	yamt-pf42-baseX:1.1.1.2
	yamt-pf42-base2:1.1.1.2
	OPENSSL_SNAP_20080509:1.1.1.2
	wrstuden-revivesa:1.1.1.2.0.32
	wrstuden-revivesa-base:1.1.1.2
	yamt-pf42:1.1.1.2.0.30
	yamt-pf42-base:1.1.1.2
	keiichi-mipv6:1.1.1.2.0.28
	keiichi-mipv6-base:1.1.1.2
	matt-armv6-nbase:1.1.1.2
	matt-armv6-prevmlocking:1.1.1.2
	wrstuden-fixsa-base-1:1.1.1.2
	netbsd-4-0:1.1.1.2.0.26
	netbsd-4-0-RELEASE:1.1.1.2
	cube-autoconf:1.1.1.2.0.24
	cube-autoconf-base:1.1.1.2
	netbsd-4-0-RC5:1.1.1.2
	netbsd-4-0-RC4:1.1.1.2
	netbsd-4-0-RC3:1.1.1.2
	netbsd-4-0-RC2:1.1.1.2
	netbsd-4-0-RC1:1.1.1.2
	matt-armv6:1.1.1.2.0.22
	matt-armv6-base:1.1.1.2
	matt-mips64-base:1.1.1.2
	hpcarm-cleanup:1.1.1.2.0.20
	hpcarm-cleanup-base:1.1.1.2
	netbsd-3-1-1-RELEASE:1.1.1.2
	netbsd-3-0-3-RELEASE:1.1.1.2
	wrstuden-fixsa:1.1.1.2.0.18
	wrstuden-fixsa-base:1.1.1.2
	openssl_0_9_8e:1.1.1.2
	abandoned-netbsd-4-base:1.1.1.2
	abandoned-netbsd-4:1.1.1.2.0.12
	openssl_0_9_8d:1.1.1.2
	netbsd-3-1:1.1.1.2.0.14
	netbsd-3-1-RELEASE:1.1.1.2
	netbsd-3-0-2-RELEASE:1.1.1.2
	netbsd-3-1-RC4:1.1.1.2
	netbsd-3-1-RC3:1.1.1.2
	netbsd-3-1-RC2:1.1.1.2
	netbsd-3-1-RC1:1.1.1.2
	netbsd-4:1.1.1.2.0.16
	netbsd-4-base:1.1.1.2
	netbsd-3-0-1-RELEASE:1.1.1.2
	openssl_0_9_8b:1.1.1.2
	netbsd-3-0:1.1.1.2.0.10
	netbsd-3-0-RELEASE:1.1.1.2
	netbsd-3-0-RC6:1.1.1.2
	netbsd-3-0-RC5:1.1.1.2
	netbsd-3-0-RC4:1.1.1.2
	openssl_0_9_8a:1.1.1.2
	netbsd-3-0-RC3:1.1.1.2
	netbsd-3-0-RC2:1.1.1.2
	netbsd-3-0-RC1:1.1.1.2
	netbsd-2-0-3-RELEASE:1.1.1.2
	netbsd-2-1:1.1.1.2.0.8
	netbsd-2-1-RELEASE:1.1.1.2
	netbsd-2-1-RC6:1.1.1.2
	netbsd-2-1-RC5:1.1.1.2
	netbsd-2-1-RC4:1.1.1.2
	netbsd-2-1-RC3:1.1.1.2
	netbsd-2-1-RC2:1.1.1.2
	netbsd-2-1-RC1:1.1.1.2
	openssl_0_9_7g:1.1.1.2
	openssl_0_9_7f:1.1.1.2
	netbsd-2-0-2-RELEASE:1.1.1.2
	netbsd-3:1.1.1.2.0.6
	netbsd-3-base:1.1.1.2
	netbsd-2-0-1-RELEASE:1.1.1.2
	netbsd-2:1.1.1.2.0.4
	netbsd-2-base:1.1.1.2
	netbsd-2-0-RELEASE:1.1.1.2
	netbsd-2-0-RC5:1.1.1.2
	netbsd-2-0-RC4:1.1.1.2
	netbsd-2-0-RC3:1.1.1.2
	netbsd-2-0-RC2:1.1.1.2
	netbsd-2-0-RC1:1.1.1.2
	netbsd-2-0:1.1.1.2.0.2
	netbsd-2-0-base:1.1.1.2
	openssl_0_9_7d:1.1.1.2
	netbsd-1-6-PATCH002-RELEASE:1.1.1.1
	netbsd-1-6-PATCH002:1.1.1.1
	netbsd-1-6-PATCH002-RC4:1.1.1.1
	netbsd-1-6-PATCH002-RC3:1.1.1.1
	netbsd-1-6-PATCH002-RC2:1.1.1.1
	openssl_0_9_7c:1.1.1.2
	netbsd-1-6-PATCH002-RC1:1.1.1.1
	openssl_0_9_7b:1.1.1.2
	netbsd-1-6-PATCH001:1.1.1.1
	netbsd-1-6-PATCH001-RELEASE:1.1.1.1
	netbsd-1-6-PATCH001-RC3:1.1.1.1
	netbsd-1-6-PATCH001-RC2:1.1.1.1
	netbsd-1-6-PATCH001-RC1:1.1.1.1
	fvdl_fs64_base:1.1.1.1
	netbsd-1-6-RELEASE:1.1.1.1
	netbsd-1-6-RC3:1.1.1.1
	netbsd-1-6-RC2:1.1.1.1
	netbsd-1-6-RC1:1.1.1.1
	openssl_0_9_6g:1.1.1.1
	openssl_0_9_6f:1.1.1.1
	openssl_0_9_6e:1.1.1.1
	openssl_0_9_6d:1.1.1.1
	netbsd-1-6:1.1.1.1.0.6
	netbsd-1-6-base:1.1.1.1
	netbsd-1-5-PATCH003:1.1.1.1
	netbsd-1-5-PATCH002:1.1.1.1
	openssl_0_9_6b:1.1.1.1
	netbsd-1-5-PATCH001:1.1.1.1
	openssl_0_9_6a:1.1.1.1
	netbsd-1-5-RELEASE:1.1.1.1
	netbsd-1-5-BETA2:1.1.1.1
	netbsd-1-5-BETA:1.1.1.1
	netbsd-1-5-ALPHA2:1.1.1.1
	mrg-post-merge-openssl_0_9_5a:1.1.1.1
	openssl_0_9_5a:1.1.1.1
	minoura-xpg4dl:1.1.1.1.0.4
	minoura-xpg4dl-base:1.1.1.1
	netbsd-1-5:1.1.1.1.0.2
	netbsd-1-5-base:1.1.1.1
	openssl_0_9_4-netbsd-cryptosrc-intl:1.1.1.1
	OPENSSL:1.1.1;
locks; strict;
comment	@// @;


1.2
date	2009.07.20.22.56.33;	author christos;	state dead;
branches;
next	1.1;

1.1
date	2000.06.14.22.44.25;	author thorpej;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2000.06.14.22.44.25;	author thorpej;	state Exp;
branches
	1.1.1.1.4.1;
next	1.1.1.2;

1.1.1.2
date	2003.07.24.08.28.35;	author itojun;	state Exp;
branches;
next	;

1.1.1.1.4.1
date	2000.06.14.22.44.25;	author thorpej;	state dead;
branches;
next	1.1.1.1.4.2;

1.1.1.1.4.2
date	2000.06.14.22.44.26;	author thorpej;	state Exp;
branches;
next	;


desc
@@


1.2
log
@Don't lets this linger around forever. Causes hidden bugs.
@
text
@/* serv.cpp  -  Minimal ssleay server for Unix
   30.9.1996, Sampo Kellomaki <sampo@@iki.fi> */


/* mangled to work with SSLeay-0.9.0b and OpenSSL 0.9.2b
   Simplified to be even more minimal
   12/98 - 4/99 Wade Scholine <wades@@mail.cybg.com> */

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <memory.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>

#include <openssl/rsa.h>       /* SSLeay stuff */
#include <openssl/crypto.h>
#include <openssl/x509.h>
#include <openssl/pem.h>
#include <openssl/ssl.h>
#include <openssl/err.h>


/* define HOME to be dir for key and cert files... */
#define HOME "./"
/* Make these what you want for cert & key files */
#define CERTF  HOME "foo-cert.pem"
#define KEYF  HOME  "foo-cert.pem"


#define CHK_NULL(x) if ((x)==NULL) exit (1)
#define CHK_ERR(err,s) if ((err)==-1) { perror(s); exit(1); }
#define CHK_SSL(err) if ((err)==-1) { ERR_print_errors_fp(stderr); exit(2); }

void main ()
{
  int err;
  int listen_sd;
  int sd;
  struct sockaddr_in sa_serv;
  struct sockaddr_in sa_cli;
  size_t client_len;
  SSL_CTX* ctx;
  SSL*     ssl;
  X509*    client_cert;
  char*    str;
  char     buf [4096];
  SSL_METHOD *meth;
  
  /* SSL preliminaries. We keep the certificate and key with the context. */

  SSL_load_error_strings();
  SSLeay_add_ssl_algorithms();
  meth = SSLv23_server_method();
  ctx = SSL_CTX_new (meth);
  if (!ctx) {
    ERR_print_errors_fp(stderr);
    exit(2);
  }
  
  if (SSL_CTX_use_certificate_file(ctx, CERTF, SSL_FILETYPE_PEM) <= 0) {
    ERR_print_errors_fp(stderr);
    exit(3);
  }
  if (SSL_CTX_use_PrivateKey_file(ctx, KEYF, SSL_FILETYPE_PEM) <= 0) {
    ERR_print_errors_fp(stderr);
    exit(4);
  }

  if (!SSL_CTX_check_private_key(ctx)) {
    fprintf(stderr,"Private key does not match the certificate public key\n");
    exit(5);
  }

  /* ----------------------------------------------- */
  /* Prepare TCP socket for receiving connections */

  listen_sd = socket (AF_INET, SOCK_STREAM, 0);   CHK_ERR(listen_sd, "socket");
  
  memset (&sa_serv, '\0', sizeof(sa_serv));
  sa_serv.sin_family      = AF_INET;
  sa_serv.sin_addr.s_addr = INADDR_ANY;
  sa_serv.sin_port        = htons (1111);          /* Server Port number */
  
  err = bind(listen_sd, (struct sockaddr*) &sa_serv,
	     sizeof (sa_serv));                   CHK_ERR(err, "bind");
	     
  /* Receive a TCP connection. */
	     
  err = listen (listen_sd, 5);                    CHK_ERR(err, "listen");
  
  client_len = sizeof(sa_cli);
  sd = accept (listen_sd, (struct sockaddr*) &sa_cli, &client_len);
  CHK_ERR(sd, "accept");
  close (listen_sd);

  printf ("Connection from %lx, port %x\n",
	  sa_cli.sin_addr.s_addr, sa_cli.sin_port);
  
  /* ----------------------------------------------- */
  /* TCP connection is ready. Do server side SSL. */

  ssl = SSL_new (ctx);                           CHK_NULL(ssl);
  SSL_set_fd (ssl, sd);
  err = SSL_accept (ssl);                        CHK_SSL(err);
  
  /* Get the cipher - opt */
  
  printf ("SSL connection using %s\n", SSL_get_cipher (ssl));
  
  /* Get client's certificate (note: beware of dynamic allocation) - opt */

  client_cert = SSL_get_peer_certificate (ssl);
  if (client_cert != NULL) {
    printf ("Client certificate:\n");
    
    str = X509_NAME_oneline (X509_get_subject_name (client_cert), 0, 0);
    CHK_NULL(str);
    printf ("\t subject: %s\n", str);
    Free (str);
    
    str = X509_NAME_oneline (X509_get_issuer_name  (client_cert), 0, 0);
    CHK_NULL(str);
    printf ("\t issuer: %s\n", str);
    Free (str);
    
    /* We could do all sorts of certificate verification stuff here before
       deallocating the certificate. */
    
    X509_free (client_cert);
  } else
    printf ("Client does not have certificate.\n");

  /* DATA EXCHANGE - Receive message and send reply. */

  err = SSL_read (ssl, buf, sizeof(buf) - 1);                   CHK_SSL(err);
  buf[err] = '\0';
  printf ("Got %d chars:'%s'\n", err, buf);
  
  err = SSL_write (ssl, "I hear you.", strlen("I hear you."));  CHK_SSL(err);

  /* Clean up. */

  close (sd);
  SSL_free (ssl);
  SSL_CTX_free (ctx);
}
/* EOF - serv.cpp */
@


1.1
log
@Initial revision
@
text
@@


1.1.1.1
log
@Import OpenSSL 0.9.4 from netbsd-cryptosrc-intl.
@
text
@@


1.1.1.1.4.1
log
@file serv.cpp was added on branch minoura-xpg4dl on 2000-06-14 22:44:26 +0000
@
text
@d1 152
@


1.1.1.1.4.2
log
@Import OpenSSL 0.9.4 from netbsd-cryptosrc-intl.
@
text
@a0 152
/* serv.cpp  -  Minimal ssleay server for Unix
   30.9.1996, Sampo Kellomaki <sampo@@iki.fi> */


/* mangled to work with SSLeay-0.9.0b and OpenSSL 0.9.2b
   Simplified to be even more minimal
   12/98 - 4/99 Wade Scholine <wades@@mail.cybg.com> */

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <memory.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>

#include <openssl/rsa.h>       /* SSLeay stuff */
#include <openssl/crypto.h>
#include <openssl/x509.h>
#include <openssl/pem.h>
#include <openssl/ssl.h>
#include <openssl/err.h>


/* define HOME to be dir for key and cert files... */
#define HOME "./"
/* Make these what you want for cert & key files */
#define CERTF  HOME "foo-cert.pem"
#define KEYF  HOME  "foo-cert.pem"


#define CHK_NULL(x) if ((x)==NULL) exit (1)
#define CHK_ERR(err,s) if ((err)==-1) { perror(s); exit(1); }
#define CHK_SSL(err) if ((err)==-1) { ERR_print_errors_fp(stderr); exit(2); }

void main ()
{
  int err;
  int listen_sd;
  int sd;
  struct sockaddr_in sa_serv;
  struct sockaddr_in sa_cli;
  size_t client_len;
  SSL_CTX* ctx;
  SSL*     ssl;
  X509*    client_cert;
  char*    str;
  char     buf [4096];
  SSL_METHOD *meth;
  
  /* SSL preliminaries. We keep the certificate and key with the context. */

  SSL_load_error_strings();
  SSLeay_add_ssl_algorithms();
  meth = SSLv23_server_method();
  ctx = SSL_CTX_new (meth);
  if (!ctx) {
    ERR_print_errors_fp(stderr);
    exit(2);
  }
  
  if (SSL_CTX_use_certificate_file(ctx, CERTF, SSL_FILETYPE_PEM) <= 0) {
    ERR_print_errors_fp(stderr);
    exit(3);
  }
  if (SSL_CTX_use_PrivateKey_file(ctx, KEYF, SSL_FILETYPE_PEM) <= 0) {
    ERR_print_errors_fp(stderr);
    exit(4);
  }

  if (!SSL_CTX_check_private_key(ctx)) {
    fprintf(stderr,"Private key does not match the certificate public key\n");
    exit(5);
  }

  /* ----------------------------------------------- */
  /* Prepare TCP socket for receiving connections */

  listen_sd = socket (AF_INET, SOCK_STREAM, 0);   CHK_ERR(listen_sd, "socket");
  
  memset (&sa_serv, '\0', sizeof(sa_serv));
  sa_serv.sin_family      = AF_INET;
  sa_serv.sin_addr.s_addr = INADDR_ANY;
  sa_serv.sin_port        = htons (1111);          /* Server Port number */
  
  err = bind(listen_sd, (struct sockaddr*) &sa_serv,
	     sizeof (sa_serv));                   CHK_ERR(err, "bind");
	     
  /* Receive a TCP connection. */
	     
  err = listen (listen_sd, 5);                    CHK_ERR(err, "listen");
  
  client_len = sizeof(sa_cli);
  sd = accept (listen_sd, (struct sockaddr*) &sa_cli, &client_len);
  CHK_ERR(sd, "accept");
  close (listen_sd);

  printf ("Connection from %lx, port %x\n",
	  sa_cli.sin_addr.s_addr, sa_cli.sin_port);
  
  /* ----------------------------------------------- */
  /* TCP connection is ready. Do server side SSL. */

  ssl = SSL_new (ctx);                           CHK_NULL(ssl);
  SSL_set_fd (ssl, sd);
  err = SSL_accept (ssl);                        CHK_SSL(err);
  
  /* Get the cipher - opt */
  
  printf ("SSL connection using %s\n", SSL_get_cipher (ssl));
  
  /* Get client's certificate (note: beware of dynamic allocation) - opt */

  client_cert = SSL_get_peer_certificate (ssl);
  if (client_cert != NULL) {
    printf ("Client certificate:\n");
    
    str = X509_NAME_oneline (X509_get_subject_name (client_cert), 0, 0);
    CHK_NULL(str);
    printf ("\t subject: %s\n", str);
    Free (str);
    
    str = X509_NAME_oneline (X509_get_issuer_name  (client_cert), 0, 0);
    CHK_NULL(str);
    printf ("\t issuer: %s\n", str);
    Free (str);
    
    /* We could do all sorts of certificate verification stuff here before
       deallocating the certificate. */
    
    X509_free (client_cert);
  } else
    printf ("Client does not have certificate.\n");

  /* DATA EXCHANGE - Receive message and send reply. */

  err = SSL_read (ssl, buf, sizeof(buf) - 1);                   CHK_SSL(err);
  buf[err] = '\0';
  printf ("Got %d chars:'%s'\n", err, buf);
  
  err = SSL_write (ssl, "I hear you.", strlen("I hear you."));  CHK_SSL(err);

  /* Clean up. */

  close (sd);
  SSL_free (ssl);
  SSL_CTX_free (ctx);
}
/* EOF - serv.cpp */
@


1.1.1.2
log
@OpenSSL 0.9.7b, major API changes included
@
text
@d124 1
a124 1
    OPENSSL_free (str);
d129 1
a129 1
    OPENSSL_free (str);
@

