|  | 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> |