资源简介
vc6下编写的tls1.2Demo(也包含ssl的参考),支持vc6及以上版本....
依赖库:openssl1.0.2e
可自行参考或跟进需求修改.
标签:tls tls1.2 tlsdemo vc6tls ssl
代码片段和文件信息
//client
#include
#include
#include
#include “openssl/x509.h“
#include “openssl/ssl.h“
#include “openssl/err.h“
#include “openssl/rand.h“
#define PORT 18443
#define SERVER “192.168.16.139“//“127.0.0.1“
#define CACERT “..\\ca.crt“
#define MYCERTF “..\\client.crt“
#define MYKEYF “..\\client.key“
#define MSGLENGTH 1024
#define HOST_NAME “cn“
#pragma comment(lib“ws2_32.lib“)
#pragma comment(lib“./openssl/libeay32.lib“)
#pragma comment(lib“./openssl/ssleay32.lib“)
//解决openssl编译_iob错误
// #ifdef __cplusplus
// extern “C“
// #endif
// FILE _iob[3] = {__iob_func()[0] __iob_func()[1] __iob_func()[2]};
// const char* const PREFERRED_CIPHERS =
// /* TLS 1.2 only */
// “ECDHE-ECDSA-AES256-GCM-SHA384:“
// “ECDHE-RSA-AES256-GCM-SHA384:“
// “ECDHE-ECDSA-AES128-GCM-SHA256:“
// “ECDHE-RSA-AES128-GCM-SHA256:“
//
// /* TLS 1.2 only */
// “DHE-DSS-AES256-GCM-SHA384:“
// “DHE-RSA-AES256-GCM-SHA384:“
// “DHE-DSS-AES128-GCM-SHA256:“
// “DHE-RSA-AES128-GCM-SHA256:“
//
// /* TLS 1.0 and above */
// “DHE-DSS-AES256-SHA:“
// “DHE-RSA-AES256-SHA:“
// “DHE-DSS-AES128-SHA:“
// “DHE-RSA-AES128-SHA:“
//
// /* SSL 3.0 and TLS 1.0 */
// “EDH-DSS-DES-CBC3-SHA:“
// “EDH-RSA-DES-CBC3-SHA:“
// “DH-DSS-DES-CBC3-SHA:“
// “DH-RSA-DES-CBC3-SHA“;
const char* const PREFERRED_CIPHERS =“AES256-SHA“;
//PREFERRED_CIPHERS another way
// const char* const PREFERRED_CIPHERS = “kEECDH:kEDH:kRSA:AESGCM:AES256:AES128:3DES:“
// “!MD5:!RC4:!aNULL:!eNULL:!EXP:!LOW:!MEDIUM:!ADH:!AECDH“;
int pem_password_cb1(char *buf int size int rwflag void *userdata)
{
return 0;
}
int GetSrvCert(SSL * ssl X509 ** pCert)
{
int rv = -1;
if (ssl == NULL)
{
return rv;
}
rv = SSL_get_verify_result(ssl);
*pCert = SSL_get_peer_certificate(ssl);
return rv;
}
//验证证书的合法性
int VerifyCert(X509 * pCert const char * hostname)
{
char commonName[512] = { 0 };
X509_name_st * name = NULL;
if (pCert == NULL || hostname == NULL)
{
return -1;
}
//获取commonName
name = X509_get_subject_name(pCert);
X509_NAME_get_text_by_NID(name NID_commonName commonName 512);
fprintf(stderr “VerifyCert - Common Name on certificate: %s\n“ commonName);
if (strcmp(commonName hostname) == 0)
{
printf(“证书主机名%s\n“ commonName);
return 1;
}
else
{
return 0;
}
}
int main()
{
WSADATA wsadata;
WSAStartup(MAKEWORD(2 2) &wsadata);
sockaddr_in sin;
int seed_int[100]; /*存放随机序列*/
SSL*ssl;
const SSL_METHOD *meth;
SSL_CTX *ctx;
//SSL初始化
OpenSSL_add_ssl_algorithms();
//SSL错误信息初始化
SSL_load_error_strings();
//创建本次会话所使用的协议
//meth = TLSv1_client_method();
meth = TLSv1_2_client_method();
//申请SSL会话的环境
ctx = SSL_CTX_new(meth);
if (NULL == ctx)
return -1;
//SSL_CTX_set_default_passwd_cb(ctx pem_password_cb1);
SSL_CTX_set_default_passwd_cb_userdata(ctx (void*)“123321“);
//设
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1464 2017-05-10 15:57 test_tls\ca.crt
文件 1738 2017-05-10 15:56 test_tls\ca.key
文件 6327 2017-08-17 15:57 test_tls\client.cpp
文件 3697 2017-05-10 15:59 test_tls\client.crt
文件 891 2017-05-10 15:58 test_tls\client.key
文件 6182 2017-07-11 16:27 test_tls\openssl\aes.h
文件 3176 2017-07-11 16:27 test_tls\openssl\appli
文件 63142 2017-07-11 16:27 test_tls\openssl\asn1.h
文件 34475 2017-07-11 16:27 test_tls\openssl\asn1t.h
文件 24435 2017-07-11 16:27 test_tls\openssl\asn1_mac.h
文件 38566 2017-07-11 16:27 test_tls\openssl\bio.h
文件 5351 2017-07-11 16:27 test_tls\openssl\blowfish.h
文件 41112 2017-07-11 16:27 test_tls\openssl\bn.h
文件 5026 2017-07-11 16:27 test_tls\openssl\buffer.h
文件 5601 2017-07-11 16:27 test_tls\openssl\camellia.h
文件 4659 2017-07-11 16:27 test_tls\openssl\cast.h
文件 3257 2017-07-11 16:27 test_tls\openssl\cmac.h
文件 28641 2017-07-11 16:27 test_tls\openssl\cms.h
文件 2335 2017-07-11 16:27 test_tls\openssl\comp.h
文件 11256 2017-07-11 16:27 test_tls\openssl\conf.h
文件 4147 2017-07-11 16:27 test_tls\openssl\conf_api.h
文件 27649 2017-07-11 16:27 test_tls\openssl\crypto.h
文件 11913 2017-07-11 16:27 test_tls\openssl\des.h
文件 21522 2017-07-11 16:27 test_tls\openssl\des_old.h
文件 16134 2017-07-11 16:27 test_tls\openssl\dh.h
文件 13662 2017-07-11 16:27 test_tls\openssl\dsa.h
文件 20246 2017-07-11 16:27 test_tls\openssl\dso.h
文件 9046 2017-07-11 16:27 test_tls\openssl\dtls1.h
文件 616 2017-07-11 16:27 test_tls\openssl\ebcdic.h
文件 56134 2017-07-11 16:27 test_tls\openssl\ec.h
............此处省略68个文件信息
评论
共有 条评论