// OpenSSL で暗号化した TCP/IP 通信プログラムの雛型 (クライアント側) #include #include #include #include #include #include "integnet.h" // 接続のポート #define PORT 12345 #define HOST "127.0.0.1" int main( void ) { // INET で STREAM なソケットの作成 int s = socket( AF_INET, SOCK_STREAM, 0 ); // 接続の目印の指定 sockaddr_in addr = SOCKADDR_IN_INIT( AF_INET, htons(PORT), InAddr(HOST) ); if( h_errno ){ herror("gethostbyname"); exit(1); } // ソケットの回線への接続 if( connect( s, (sockaddr*)&addr, sizeof(addr) ) < 0 ){ perror("connect"); exit(1); } // SSLの初期化 SSL_library_init(); SSL_CTX* ctx = SSL_CTX_new( SSLv2_client_method() ); SSL* ssl = SSL_new( ctx ); // SSL通信の開始 SSL_set_fd( ssl, s ); SSL_connect( ssl ); char msg[64] = "This is client."; SSL_write( ssl, msg, strlen(msg) ); // SSLの終了 SSL_shutdown(ssl); SSL_free(ssl); SSL_CTX_free(ctx); // 回線の切断 close(s); return 0; }