mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-05-12 11:26:25 +08:00
Update socket wrapper
This commit is contained in:
@@ -89,16 +89,10 @@ bad:
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
WORD wVersion;
|
||||
WSADATA wsaData;
|
||||
wVersion = MAKEWORD(2, 2);
|
||||
int err;
|
||||
if ((err = WSAStartup(wVersion, &wsaData)) != 0) {
|
||||
fprintf(stderr, "WSAStartup error %d\n", err);
|
||||
if (tls_socket_lib_init() != 1) {
|
||||
error_print();
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!(hp = gethostbyname(host))) {
|
||||
//herror("tlcp_client: '-host' invalid");
|
||||
@@ -112,27 +106,17 @@ bad:
|
||||
server.sin_family = AF_INET;
|
||||
server.sin_port = htons(port);
|
||||
|
||||
#ifdef WIN32
|
||||
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) {
|
||||
fprintf(stderr, "%s: open socket error : %u\n", prog, WSAGetLastError());
|
||||
|
||||
if (tls_socket_create(&sock, AF_INET, SOCK_STREAM, 0) != 1) {
|
||||
fprintf(stderr, "%s: open socket error\n", prog);
|
||||
goto end;
|
||||
}
|
||||
sock_inited = 1;
|
||||
if (connect(sock, (struct sockaddr *)&server , sizeof(server)) == SOCKET_ERROR) {
|
||||
fprintf(stderr, "%s: connect error : %u\n", prog, WSAGetLastError());
|
||||
|
||||
if (tls_socket_connect(sock, &server) != 1) {
|
||||
fprintf(stderr, "%s: socket connect error\n", prog);
|
||||
goto end;
|
||||
}
|
||||
#else
|
||||
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
||||
fprintf(stderr, "%s: open socket error : %s\n", prog, strerror(errno));
|
||||
goto end;
|
||||
}
|
||||
sock_inited = 1;
|
||||
if (connect(sock, (struct sockaddr *)&server , sizeof(server)) < 0) {
|
||||
fprintf(stderr, "%s: connect error : %s\n", prog, strerror(errno));
|
||||
goto end;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (tls_ctx_init(&ctx, TLS_protocol_tlcp, TLS_client_mode) != 1
|
||||
|| tls_ctx_set_cipher_suites(&ctx, client_ciphers, sizeof(client_ciphers)/sizeof(client_ciphers[0])) != 1) {
|
||||
|
||||
@@ -124,49 +124,35 @@ bad:
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
WORD wVersion;
|
||||
WSADATA wsaData;
|
||||
wVersion = MAKEWORD(2, 2);
|
||||
int err;
|
||||
if ((err = WSAStartup(wVersion, &wsaData)) != 0) {
|
||||
fprintf(stderr, "WSAStartup error %d\n", err);
|
||||
|
||||
if (tls_socket_lib_init() != 1) {
|
||||
error_print();
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// Socket
|
||||
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
||||
if (tls_socket_create(&sock, AF_INET, SOCK_STREAM, 0) != 1) {
|
||||
error_print();
|
||||
return 1;
|
||||
}
|
||||
server_addr.sin_family = AF_INET;
|
||||
server_addr.sin_addr.s_addr = INADDR_ANY;
|
||||
server_addr.sin_port = htons(port);
|
||||
#ifdef WIN32
|
||||
if (bind(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) == SOCKET_ERROR) {
|
||||
fprintf(stderr, "bind error %u\n", WSAGetLastError());
|
||||
goto end;
|
||||
}
|
||||
#else
|
||||
if (bind(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
|
||||
error_print();
|
||||
perror("tlcp_accept: bind: ");
|
||||
goto end;
|
||||
}
|
||||
#endif
|
||||
puts("start listen ...\n");
|
||||
listen(sock, 1);
|
||||
|
||||
if (tls_socket_bind(sock, &server_addr) != 1) {
|
||||
fprintf(stderr, "%s: socket bind error\n", prog);
|
||||
goto end;
|
||||
}
|
||||
|
||||
puts("start listen ...\n");
|
||||
tls_socket_listen(sock, 1);
|
||||
|
||||
|
||||
restart:
|
||||
|
||||
client_addrlen = sizeof(client_addr);
|
||||
if ((conn_sock = accept(sock, (struct sockaddr *)&client_addr, &client_addrlen)) < 0) {
|
||||
error_print();
|
||||
|
||||
if (tls_socket_accept(sock, &client_addr, &conn_sock) != 1) {
|
||||
fprintf(stderr, "%s: socket accept error\n", prog);
|
||||
goto end;
|
||||
}
|
||||
puts("socket connected\n");
|
||||
|
||||
@@ -89,6 +89,12 @@ bad:
|
||||
fprintf(stderr, "%s: '-in' option required\n", prog);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (tls_socket_lib_init() != 1) {
|
||||
error_print();
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!(hp = gethostbyname(host))) {
|
||||
//herror("tls12_client: '-host' invalid"); // herror() not in winsock2, use WSAGetLastError() instead
|
||||
goto end;
|
||||
@@ -102,12 +108,12 @@ bad:
|
||||
server.sin_port = htons(port);
|
||||
|
||||
|
||||
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
||||
//fprintf(stderr, "%s: open socket error : %s\n", prog, strerror(errno)); //FIXME: WIN32 use WSAGetLastError()
|
||||
if (tls_socket_create(&sock, AF_INET, SOCK_STREAM, 0) != 1) {
|
||||
fprintf(stderr, "%s: create socket error\n", prog);
|
||||
goto end;
|
||||
}
|
||||
if (connect(sock, (struct sockaddr *)&server , sizeof(server)) < 0) {
|
||||
//fprintf(stderr, "%s: connect error : %s\n", prog, strerror(errno)); //
|
||||
if (tls_socket_connect(sock, &server) != 1) {
|
||||
fprintf(stderr, "%s: socket connect error\n", prog);
|
||||
goto end;
|
||||
}
|
||||
|
||||
|
||||
@@ -95,6 +95,11 @@ bad:
|
||||
memset(&ctx, 0, sizeof(ctx));
|
||||
memset(&conn, 0, sizeof(conn));
|
||||
|
||||
if (tls_socket_lib_init() != 1) {
|
||||
error_print();
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (tls_ctx_init(&ctx, TLS_protocol_tls12, TLS_server_mode) != 1
|
||||
|| tls_ctx_set_cipher_suites(&ctx, server_ciphers, sizeof(server_ciphers)/sizeof(int)) != 1
|
||||
|| tls_ctx_set_certificate_and_key(&ctx, certfile, keyfile, pass) != 1) {
|
||||
@@ -109,28 +114,30 @@ bad:
|
||||
}
|
||||
|
||||
// Socket
|
||||
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
||||
error_print();
|
||||
return 1;
|
||||
|
||||
if (tls_socket_create(&sock, AF_INET, SOCK_STREAM, 0) != 1) {
|
||||
fprintf(stderr, "%s: create socket error\n", prog);
|
||||
goto end;
|
||||
}
|
||||
|
||||
server_addr.sin_family = AF_INET;
|
||||
server_addr.sin_addr.s_addr = INADDR_ANY;
|
||||
server_addr.sin_port = htons(port);
|
||||
if (bind(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
|
||||
error_print();
|
||||
perror("tlcp_accept: bind: ");
|
||||
|
||||
if (tls_socket_bind(sock, &server_addr) != 1) {
|
||||
fprintf(stderr, "%s: socket bind error\n", prog);
|
||||
goto end;
|
||||
}
|
||||
|
||||
puts("start listen ...\n");
|
||||
listen(sock, 1);
|
||||
|
||||
|
||||
tls_socket_listen(sock, 1);
|
||||
|
||||
restart:
|
||||
|
||||
client_addrlen = sizeof(client_addr);
|
||||
if ((conn_sock = accept(sock, (struct sockaddr *)&client_addr, &client_addrlen)) < 0) {
|
||||
error_print();
|
||||
//client_addrlen = sizeof(client_addr);
|
||||
|
||||
if (tls_socket_accept(sock, &client_addr, &conn_sock) != 1) {
|
||||
fprintf(stderr, "%s: socket accept error\n", prog);
|
||||
goto end;
|
||||
}
|
||||
puts("socket connected\n");
|
||||
|
||||
@@ -89,6 +89,11 @@ bad:
|
||||
fprintf(stderr, "%s: '-in' option required\n", prog);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (tls_socket_lib_init() != 1) {
|
||||
error_print();
|
||||
return -1;
|
||||
}
|
||||
if (!(hp = gethostbyname(host))) {
|
||||
//herror("tls13_client: '-host' invalid");
|
||||
goto end;
|
||||
@@ -101,13 +106,12 @@ bad:
|
||||
server.sin_family = AF_INET;
|
||||
server.sin_port = htons(port);
|
||||
|
||||
|
||||
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
||||
fprintf(stderr, "%s: open socket error : %s\n", prog, strerror(errno));
|
||||
if (tls_socket_create(&sock, AF_INET, SOCK_STREAM, 0) != 1) {
|
||||
fprintf(stderr, "%s: socket create error\n", prog);
|
||||
goto end;
|
||||
}
|
||||
if (connect(sock, (struct sockaddr *)&server , sizeof(server)) < 0) {
|
||||
fprintf(stderr, "%s: connect error : %s\n", prog, strerror(errno));
|
||||
if (tls_socket_connect(sock, &server) != 1) {
|
||||
fprintf(stderr, "%s: socket connect error\n", prog);
|
||||
goto end;
|
||||
}
|
||||
|
||||
|
||||
@@ -89,6 +89,10 @@ bad:
|
||||
fprintf(stderr, "%s: '-pass' option required\n", prog);
|
||||
return 1;
|
||||
}
|
||||
if (tls_socket_lib_init() != 1) {
|
||||
error_print();
|
||||
return -1;
|
||||
}
|
||||
|
||||
memset(&ctx, 0, sizeof(ctx));
|
||||
memset(&conn, 0, sizeof(conn));
|
||||
@@ -106,29 +110,28 @@ bad:
|
||||
}
|
||||
}
|
||||
|
||||
// Socket
|
||||
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
||||
error_print();
|
||||
return 1;
|
||||
|
||||
if (tls_socket_create(&sock, AF_INET, SOCK_STREAM, 0) != 1) {
|
||||
fprintf(stderr, "%s: socket create error\n", prog);
|
||||
goto end;
|
||||
}
|
||||
server_addr.sin_family = AF_INET;
|
||||
server_addr.sin_addr.s_addr = INADDR_ANY;
|
||||
server_addr.sin_port = htons(port);
|
||||
if (bind(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
|
||||
error_print();
|
||||
perror("tlcp_accept: bind: ");
|
||||
if (tls_socket_bind(sock, &server_addr) != 1) {
|
||||
fprintf(stderr, "%s: socket bind error\n", prog);
|
||||
goto end;
|
||||
}
|
||||
puts("start listen ...\n");
|
||||
listen(sock, 1);
|
||||
tls_socket_listen(sock, 1);
|
||||
|
||||
|
||||
|
||||
restart:
|
||||
|
||||
client_addrlen = sizeof(client_addr);
|
||||
if ((conn_sock = accept(sock, (struct sockaddr *)&client_addr, &client_addrlen)) < 0) {
|
||||
error_print();
|
||||
//client_addrlen = sizeof(client_addr);
|
||||
if (tls_socket_accept(sock, &client_addr, &conn_sock) != 1) {
|
||||
fprintf(stderr, "%s: socket accept error\n", prog);
|
||||
goto end;
|
||||
}
|
||||
puts("socket connected\n");
|
||||
|
||||
Reference in New Issue
Block a user