66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
easy_tls - generic SSL/TLS proxy
 | 
						||
========
 | 
						||
 | 
						||
(... and example for non-blocking SSL/TLS I/O multiplexing.)
 | 
						||
 | 
						||
 | 
						||
  easy_tls.c, easy_tls.h:
 | 
						||
 | 
						||
     Small generic SSL/TLS proxy library: With a few function calls,
 | 
						||
     an application socket will be replaced by a pipe handled by a
 | 
						||
     separate SSL/TLS proxy process.  This allows easily adding
 | 
						||
     SSL/TLS support to many programs not originally designed for it.
 | 
						||
 | 
						||
     [Actually easy_tls.c is not a proper library: Customization
 | 
						||
     requires defining preprocessor macros while compiling it.
 | 
						||
     This is quite confusing, so I'll probably change it.]
 | 
						||
 | 
						||
     These files may be used under the OpenSSL license.
 | 
						||
 | 
						||
 | 
						||
 | 
						||
  test.c, test.h, Makefile, cert.pem, cacerts.pem:
 | 
						||
 | 
						||
     Rudimentary example program using the easy_tls library, and
 | 
						||
     example key and certificates for it.  Usage examples:
 | 
						||
 | 
						||
       $ ./test 8443     # create server listening at port 8443
 | 
						||
       $ ./test 127.0.0.1 8443  # create client, connect to port 8443
 | 
						||
                                # at IP address 127.0.0.1
 | 
						||
 | 
						||
     'test' will not automatically do SSL/TLS, or even read or write
 | 
						||
     data -- it must be told to do so on input lines starting
 | 
						||
     with a command letter.  'W' means write a line, 'R' means
 | 
						||
     read a line, 'C' means close the connection, 'T' means
 | 
						||
     start an SSL/TLS proxy.  E.g. (user input tagged with '*'):
 | 
						||
 | 
						||
     * R
 | 
						||
       <<< 220 mail.example.net
 | 
						||
     * WSTARTTLS
 | 
						||
       >>> STARTTLS
 | 
						||
     * R
 | 
						||
       <<< 220 Ready to start TLS
 | 
						||
     * T
 | 
						||
       test_process_init(fd = 3, client_p = 1, apparg = (nil))
 | 
						||
       +++ `E:self signed certificate in certificate chain'
 | 
						||
       +++ `<... certificate info ...>'
 | 
						||
     * WHELO localhost
 | 
						||
       >>> HELO localhost
 | 
						||
       R
 | 
						||
       <<< 250 mail.example.net
 | 
						||
 | 
						||
     You can even do SSL/TLS over SSL/TLS over SSL/TLS ... by using
 | 
						||
     'T' multiple times.  I have no idea why you would want to though.
 | 
						||
 | 
						||
 | 
						||
This code is rather old.  When I find time I will update anything that
 | 
						||
should be changed, and improve code comments.  To compile the sample
 | 
						||
program 'test' on platforms other then Linux or Solaris, you will have
 | 
						||
to edit the Makefile.
 | 
						||
 | 
						||
As noted above, easy_tls.c will be changed to become a library one
 | 
						||
day, which means that future revisions will not be fully compatible to
 | 
						||
the current version.
 | 
						||
 | 
						||
Bodo M<>ller <bodo@openssl.org>
 |