From e71098a6525c84c37ed1567d6eb8935d39c5c28e Mon Sep 17 00:00:00 2001 From: Derek Pryor Date: Mon, 17 Jul 2006 16:38:20 +0000 Subject: The first packet (ClientHello Handshake) can be constructed and is accepted by SSL servers. Framework.c allows me to test the library against a given https server. --- src/crypto/framework.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/crypto/framework.c (limited to 'src/crypto/framework.c') diff --git a/src/crypto/framework.c b/src/crypto/framework.c new file mode 100644 index 000000000..1a370f2d7 --- /dev/null +++ b/src/crypto/framework.c @@ -0,0 +1,82 @@ +#include +#include +#include +#include +#include +#include +#include "ssl.h" + +int main(int argc, char *argv[]) +{ + SSL_t ssl; + int sockfd, portno, rc; + struct sockaddr_in serv_addr; + struct hostent *server; + + portno = 443; + sockfd = socket(AF_INET,SOCK_STREAM,0); + if(sockfd<0){ + fprintf(stderr,"Error creating socket\n"); + exit(sockfd); + } + + server = gethostbyname(argv[1]); + if(server==NULL){ + fprintf(stderr,"Error looking up host %s\n",argv[1]); + exit(1); + } + + /** + *matrixSslOpen() + *matrixSslReadKeys() + **/ + printf("Calling CreateSSLHello()\n"); + rc = CreateSSLHello(&ssl); + printf("Finished calling CreateSSLHello()\n"); + + bzero((char *) &serv_addr, sizeof(serv_addr)); + serv_addr.sin_family = AF_INET; + bcopy((char *)server->h_addr,(char *)&serv_addr.sin_addr.s_addr,server->h_length); + serv_addr.sin_port = htons(portno); + if(connect(sockfd,(struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0){ + fprintf(stderr,"ERROR connecting to server\n"); + exit(1); + } + + PrintSSLPacket(&ssl); + + printf("Write ssl.buffer\n"); + write(sockfd,ssl.buffer,ssl.length); + printf("Finished writing\n"); + ssl.length = read(sockfd,ssl.buffer,ssl.max_size); + ReadSSLHello(&ssl); + + /** + *matrixSslNewSession() + *matrixSslSetCetValidator() + *encodeSslHandshake() + + *write handshake buffer + + *readSslResponse() <-+ + | + *read return code |-- similar/same function?? + | + *sslEncode() | + *sslDecode() <-------+ + + *encodeSslCloseAlert() + + *write close alert buffer + **/ + close(sockfd); + + /** + *sslClose() + * -free connection + * -free keys + * -close pki interface + **/ + + return 0; +} -- cgit v1.2.3-55-g7522