Dále jsou tam informace i o software vyvinutém na SSLeay pro ostatní aplikační protokoly (TELNET, FTP,...). Software pro TELNET přes SSL lze nalézt na http://www.psy.uq.edu.au/~ftp/Crypto/telnet.html. Software pro RSH přes SSL lze např. nalézt na http://www.quick.com.au/ftp/pub/sjg/ .
Obdobně jako existuje neamerická verze SSLref existuje i neamerická verze pro SETref (protokol SET vychází částečně ze SSL, ale je určen zejména pro elektronický obchod). Vývojové verze aplikačního programového interface (API) pro SETref je obtížné získat, ale neamerická verze označovaná jako BSAFEeay je vystavena na https://www.cypherpunks.to/ Tentokráte už ani nemá tento server asijsko-pacifickou IP-adresu, jak by se dalo usuzovat z top level domény TO, ale evropskou (TO odpovídá republice Tonga, která leží severně od Nového Zélandu).
SSLeay obsahuje jednak API, ale také některé hotové programy. Hotové
programy jsou určeny zejména pro tvorbu skriptů nebo samostatně jako pomocné
utility.
Kde:
Kde:
void SSL_load_error_strings(void) | inicializuje obsluhu chyb |
SSL_CTX *SSL_CTX_new(void) | alokuje strukturu SSL_CTX, která bude obsahovat parametry SSL-relace, tzv. context structure (CTX) |
SSL *SSL_new(SSL_CTX *ssl_ctx) | inicializuje strukturu SSL_CTX ("inicializuje kontext relace") |
void SSL_free(SSL *s) | deinicialaizuje kontext relace |
void SSL_CTX_free (SSL_CTX* ctx) | dealokuje paměť struktury kontextu relace |
int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, char *file, int type) | specifikuje soubor s privátními klíči. Při otevírání tohoto souboru je uživatel dotázán na přístupové heslo (pass phrase). Pomocí PEM_set_getkey_callback() lze tento dotaz obejít |
int SSL_CTX_use_certificate_file(SSL_CTX *ctx, char *file, int type) | specifikuje soubor s certifikáty |
void SSL_set_fd(SSL *s, int fd) | přiřazení SSL-relace ke konkrétnímu TCP-spojení.
int SSL_accept(SSL *s) server bude očekávat spojení od klienta |
int SSL_connect(SSL *s) | klient navazuje SSL-relaci |
read() a write() jsou nahrazeny:
|
/* cli.cpp - Minimal ssleay client for Unix
30.9.1996, Sampo Kellomaki <sampo@iki.fi> */ #include <stdio.h>
#include "rsa.h"
/* SSLeay stuff */
#define CHK_NULL(x) if ((x)==NULL) exit (1)
void main ()
SSL_load_error_strings();
/* ----------------------------------------------- */
printf ("SSL connection using %s\n", SSL_get_cipher (ssl));
server_cert = SSL_get_peer_certificate (ssl);
CHK_NULL(server_cert);
str = X509_NAME_oneline (X509_get_issuer_name (server_cert));
/* We could do all sorts of certificate verification stuff
here before
X509_free (server_cert);
err = SSL_write (ssl, "Hello World!", strlen("Hello World!"));
CHK_SSL(err);
/* Clean up. */ close (sd);
|
/* serv.cpp - Minimal ssleay server for Unix
30.9.1996, Sampo Kellomaki <sampo@iki.fi> */ #include <stdio.h>
#include "rsa.h"
/* SSLeay stuff */
#define HOME "/usr/users/sampo/sibs/tim/"
#define CHK_NULL(x) if ((x)==NULL) exit (1)
void main ()
/* SSL preliminaries. We keep the certificate and key with the context. */ SSL_load_error_strings();
listen_sd = socket (AF_INET, SOCK_STREAM, 0);
CHK_ERR(listen_sd, "socket");
printf ("Connection from %lx, port %x\n",
ssl = SSL_new (ctx);
CHK_NULL(ssl);
client_cert = SSL_get_peer_certificate (ssl);
/* DATA EXCHANGE - Receive message and send reply. */ err = SSL_read (ssl, buf, sizeof(buf) - 1);
CHK_SSL(err);
/* Clean up. */ close (sd);
|