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
@/* inetdserv.cpp  -  Minimal ssleay server for Unix inetd.conf
 * 30.9.1996, Sampo Kellomaki <sampo@@iki.fi>
 * From /etc/inetd.conf:
 *     1111 stream tcp nowait sampo /usr/users/sampo/demo/inetdserv inetdserv
 */

#include <stdio.h>
#include <errno.h>

#include "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 "/usr/users/sampo/demo/"
#define CERTF HOME "plain-cert.pem"
#define KEYF  HOME "plain-key.pem"

#define CHK_NULL(x) if ((x)==NULL) exit (1)
#define CHK_ERR(err,s) if ((err)==-1) \
                         { fprintf(log, "%s %d\n", (s), errno); exit(1); }
#define CHK_SSL(err) if ((err)==-1) { ERR_print_errors_fp(log); exit(2); }

void main ()
{
  int err;
  SSL_CTX* ctx;
  SSL*     ssl;
  X509*    client_cert;
  char*    str;
  char     buf [4096];
  FILE* log;
  
  log = fopen ("/dev/console", "a");                     CHK_NULL(log);
  fprintf (log, "inetdserv %ld\n", (long)getpid());
  
  SSL_load_error_strings();
  ctx = SSL_CTX_new (); CHK_NULL(ctx);
  
  err = SSL_CTX_use_RSAPrivateKey_file (ctx, KEYF,  SSL_FILETYPE_PEM);
  CHK_SSL (err);
  
  err = SSL_CTX_use_certificate_file   (ctx, CERTF, SSL_FILETYPE_PEM);
  CHK_SSL (err);

  /* inetd has already opened the TCP connection, so we can get right
     down to business. */
  
  ssl = SSL_new (ctx);  CHK_NULL(ssl);
  SSL_set_fd (ssl,  fileno(stdin));
  err = SSL_accept (ssl);                                CHK_SSL(err);
  
  /* Get the cipher - opt */
  
  fprintf (log, "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) {
    fprintf (log, "Client certificate:\n");
    
    str = X509_NAME_oneline (X509_get_subject_name (client_cert));
    CHK_NULL(str);
    fprintf (log, "\t subject: %s\n", str);
    Free (str);
    
    str = X509_NAME_oneline (X509_get_issuer_name  (client_cert));
    CHK_NULL(str);
    fprintf (log, "\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
    fprintf (log, "Client doe 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';
  fprintf (log, "Got %d chars:'%s'\n", err, buf);
  
  err = SSL_write (ssl, "Loud and clear.", strlen("Loud and clear."));
  CHK_SSL(err);

  /* Clean up. */

  fclose (log);
  SSL_free (ssl);
  SSL_CTX_free (ctx);
}
/* EOF - inetdserv.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 inetdsrv.cpp was added on branch minoura-xpg4dl on 2000-06-14 22:44:26 +0000
@
text
@d1 98
@


1.1.1.1.4.2
log
@Import OpenSSL 0.9.4 from netbsd-cryptosrc-intl.
@
text
@a0 98
/* inetdserv.cpp  -  Minimal ssleay server for Unix inetd.conf
 * 30.9.1996, Sampo Kellomaki <sampo@@iki.fi>
 * From /etc/inetd.conf:
 *     1111 stream tcp nowait sampo /usr/users/sampo/demo/inetdserv inetdserv
 */

#include <stdio.h>
#include <errno.h>

#include "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 "/usr/users/sampo/demo/"
#define CERTF HOME "plain-cert.pem"
#define KEYF  HOME "plain-key.pem"

#define CHK_NULL(x) if ((x)==NULL) exit (1)
#define CHK_ERR(err,s) if ((err)==-1) \
                         { fprintf(log, "%s %d\n", (s), errno); exit(1); }
#define CHK_SSL(err) if ((err)==-1) { ERR_print_errors_fp(log); exit(2); }

void main ()
{
  int err;
  SSL_CTX* ctx;
  SSL*     ssl;
  X509*    client_cert;
  char*    str;
  char     buf [4096];
  FILE* log;
  
  log = fopen ("/dev/console", "a");                     CHK_NULL(log);
  fprintf (log, "inetdserv %ld\n", (long)getpid());
  
  SSL_load_error_strings();
  ctx = SSL_CTX_new (); CHK_NULL(ctx);
  
  err = SSL_CTX_use_RSAPrivateKey_file (ctx, KEYF,  SSL_FILETYPE_PEM);
  CHK_SSL (err);
  
  err = SSL_CTX_use_certificate_file   (ctx, CERTF, SSL_FILETYPE_PEM);
  CHK_SSL (err);

  /* inetd has already opened the TCP connection, so we can get right
     down to business. */
  
  ssl = SSL_new (ctx);  CHK_NULL(ssl);
  SSL_set_fd (ssl,  fileno(stdin));
  err = SSL_accept (ssl);                                CHK_SSL(err);
  
  /* Get the cipher - opt */
  
  fprintf (log, "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) {
    fprintf (log, "Client certificate:\n");
    
    str = X509_NAME_oneline (X509_get_subject_name (client_cert));
    CHK_NULL(str);
    fprintf (log, "\t subject: %s\n", str);
    Free (str);
    
    str = X509_NAME_oneline (X509_get_issuer_name  (client_cert));
    CHK_NULL(str);
    fprintf (log, "\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
    fprintf (log, "Client doe 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';
  fprintf (log, "Got %d chars:'%s'\n", err, buf);
  
  err = SSL_write (ssl, "Loud and clear.", strlen("Loud and clear."));
  CHK_SSL(err);

  /* Clean up. */

  fclose (log);
  SSL_free (ssl);
  SSL_CTX_free (ctx);
}
/* EOF - inetdserv.cpp */
@


1.1.1.2
log
@OpenSSL 0.9.7b, major API changes included
@
text
@d68 1
a68 1
    OPENSSL_free (str);
d73 1
a73 1
    OPENSSL_free (str);
@

