• 大小: 2.43MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-15
  • 语言: C/C++
  • 标签: tls  tls1.2  tlsdemo  vc6tls  ssl  

资源简介

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\applink.c

     文件      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个文件信息

评论

共有 条评论