VC 安装证书

root  : 受信任的根证书颁发机构
trust 受信任的发布者
ca    中级证书颁发机构
my 个人证书
 
 
下面是导入root证书的,其它的改一下即可
 
BOOL ImportCACert(ATL::CString & m_pathCA)
{
  HCERTSTORE pfxStore = 0;
  HCERTSTORE myStore = 0;
  HCERTSTORE hFileStore = 0;
  HANDLE hsection = 0;
  void* pfx = NULL;
  HANDLE hfile = INVALID_HANDLE_VALUE;
  PCCERT_CONTEXT pctx = NULL;
  // Get path of the CA certificate from the edit box
  // Open it...
  hfile = CreateFile(m_pathCA, FILE_READ_DATA, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
 
  // FOR WINDOWS 98 .... 
  // hfile = CreateFile(m_pathCA, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
  if (INVALID_HANDLE_VALUE == hfile)
  {
    MessageBox(NULL,_T("Certificate not found. Check that the path indicated is correct."),_T("information"), MB_ICONERROR);
    return 0;
  }
  hsection = CreateFileMapping(hfile, 0, PAGE_READONLY, 0, 0, 0);
  if (!hsection)
  {
    //AfxMessageBox("Error in 'CreateFileMapping'", MB_ICONERROR);
    FreeHandles(hfile, hsection, hFileStore, pfx, pctx, pfxStore, myStore);   
    return 0;
  }
  pfx = MapViewOfFile(hsection, FILE_MAP_READ, 0, 0, 0);
  if (!pfx)
  {
    //AfxMessageBox("Error in 'MapViewOfFile'", MB_ICONERROR);
    FreeHandles(hfile, hsection, hFileStore, pfx, pctx, pfxStore, myStore); 
    return 0;
  }
  int nFilesize=GetFileSize(hfile,0);
  pctx = CertCreateCertificateCon text(MY_ENCODING_TYPE, (BYTE*)pfx,nFilesize );
  if(pctx == NULL)
  {
    //AfxMessageBox("Error in 'CertCreateCertificateCon text'", MB_ICONERROR);
    FreeHandles(hfile, hsection, hFileStore, pfx, pctx, pfxStore, myStore); 
    return 0;
  }
  // we open the store for the CA
  hFileStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, CERT_STORE_OPEN_EXISTING_FLAG | CERT_SYSTEM_STORE_LOCAL_MACHINE, L"Root" );
   
  if (!hFileStore)
  {
    //AfxMessageBox("Error in 'CertOpenStore'", MB_ICONERROR);
    FreeHandles(hfile, hsection, hFileStore, pfx, pctx, pfxStore, myStore); 
    return 0;
  }
  if(!CertAddCertificateContex tToStore(hFileStore, pctx, CERT_STORE_ADD_NEW, 0))
  {
   
    DWORD err = GetLastError();
    if (CRYPT_E_EXISTS == err)
    {
      if(MessageBox(NULL,_T("An equivalent previous personal certificate already exists. Overwrite ? (Yes/No)"),_T("Prompt"), MB_YESNO) == IDYES)
      {
        if (!CertAddCertificateContex tToStore(hFileStore, pctx, CERT_STORE_ADD_REPLACE_EXISTING, 0))
        {
        //  AfxMessageBox("Error in 'CertAddCertificateContex tToStore'", MB_ICONERROR);
          FreeHandles(hfile, hsection, hFileStore, pfx, pctx, pfxStore, myStore); 
          return 0;
        }
      }
    }
    else
    {
      //AfxMessageBox("Error in 'CertAddCertificateContex tToStore'", MB_ICONERROR);
      FreeHandles(hfile, hsection, hFileStore, pfx, pctx, pfxStore, myStore); 
      return 0;
    }
  }
  return 1;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vc http 客户端是一个用于发送和接收 HTTP 请求和响应的客户端程序。它通过使用 VC 编程语言实现,可以在计算机上与服务器进行通信。 vc http 客户端的功能主要包括: 1. 发送 HTTP 请求:通过 vc http 客户端,我们可以发送各种类型的 HTTP 请求,如 GET、POST、PUT、DELETE 等。我们可以指定要访问的 URL 和发送的数据,以及其他一些请求头信息。 2. 接收 HTTP 响应:vc http 客户端能够接收从服务器返回的 HTTP 响应,包括响应状态码、响应头和响应体等。我们可以据响应来进行相应的处理,如解析响应数据、错误处理等。 3. 管理会话状态:vc http 客户端还可以管理会话状态。通过使用 Cookie 和其他身份验证机制,客户端可以保持与服务器的会话状态,并在后续的请求中使用。 4. 支持安全通信:vc http 客户端支持使用 HTTPS 协议进行安全通信。可以通过配置证书和密钥来确保通信的安全性,防止信息泄漏和篡改。 5. 处理错误和异常:vc http 客户端能够处理各种错误和异常情况。例如,如果服务器返回错误的状态码,客户端可以据情况进行相应的处理,如重试、报错等。 6. 提供易用的接口:vc http 客户端一般会提供简单易用的接口,使开发者可以方便地使用它进行 HTTP 通信,而无需了解复杂的协议细节。 总的来说,vc http 客户端是一个方便实用的工具,可以帮助我们在编程中与服务器进行 HTTP 通信,并能处理各种请求和响应情况。通过使用它,我们可以轻松地与各种在线服务进行交互,如获取数据、上传文件等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值