~mysql/mysql-server/mysql-6.0

« back to all changes in this revision

Viewing changes to vio/viotest-sslconnect.cc

  • Committer: bk at mysql
  • Date: 2000-07-31 19:29:14 UTC
  • Revision ID: sp1r-bk@work.mysql.com-20000731192914-08846
Import changeset

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
/* 
 
3
**  Virtual I/O library
 
4
**  Written by Andrei Errapart <andreie@no.spam.ee>
 
5
*/
 
6
 
 
7
#include        "all.h"
 
8
 
 
9
#include        <sys/types.h>
 
10
#include        <sys/socket.h>
 
11
#include        <netinet/in.h>
 
12
#include        <stdio.h>
 
13
#include        <unistd.h>
 
14
 
 
15
 
 
16
VIO_RCSID(vio, viotest_sslconnect, "$Id$")
 
17
 
 
18
void
 
19
fatal_error(    const char*     r)
 
20
{
 
21
        perror(r);
 
22
        exit(0);
 
23
}
 
24
 
 
25
void
 
26
print_usage()
 
27
{
 
28
        printf("viotest-sslconnect: testing SSL virtual IO. Usage:\n");
 
29
        printf("viotest-sslconnect key cert\n");
 
30
}
 
31
 
 
32
int
 
33
main(   int     argc,
 
34
        char**  argv)
 
35
{
 
36
        char*   key = 0;
 
37
        char*   cert = 0;
 
38
 
 
39
        if (argc<3)
 
40
        {
 
41
                print_usage();
 
42
                return 1;
 
43
        }
 
44
 
 
45
        char            ip[4] = {127, 0, 0, 1};
 
46
        unsigned long   addr = (unsigned long)
 
47
                        ((unsigned long)ip[0]<<24L)|
 
48
                        ((unsigned long)ip[1]<<16L)|
 
49
                        ((unsigned long)ip[2]<< 8L)|
 
50
                        ((unsigned long)ip[3]);
 
51
        int     fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
 
52
        if (fd<0)
 
53
                fatal_error("socket");
 
54
        struct sockaddr_in      sa;
 
55
        sa.sin_family = AF_INET;
 
56
        sa.sin_port=htons(4433);
 
57
        sa.sin_addr.s_addr=htonl(addr);
 
58
        int     sa_size = sizeof sa;
 
59
        if (connect(fd, reinterpret_cast<const sockaddr*>(&sa), sa_size)==-1)
 
60
                fatal_error("connect");
 
61
        key = argv[1];
 
62
        cert = argv[2];
 
63
        printf("Key  : %s\n", key);
 
64
        printf("Cert : %s\n", cert);
 
65
 
 
66
        VIO_NS::VioSSLConnectorFd*      ssl_connector = new VIO_NS::VioSSLConnectorFd(cert, key,0,0);
 
67
 
 
68
        VIO_NS::VioSSL* vio = ssl_connector->connect(fd);
 
69
 
 
70
        char    xbuf[100];
 
71
        int     r = vio->read(xbuf, sizeof(xbuf));
 
72
        if (r<=0) {
 
73
                delete ssl_connector;
 
74
                delete vio;
 
75
                fatal_error("client:SSL_read");
 
76
        }
 
77
        xbuf[r] = 0;
 
78
        printf("client:got %s\n", xbuf);
 
79
        delete vio;
 
80
        delete ssl_connector;
 
81
        return 0;
 
82
}