導航:首頁 > 比特幣區 > httpbtcso

httpbtcso

發布時間:2021-04-29 19:54:35

❶ 客戶機安裝證書 C++

#include "stdafx.h"
#include "CertImportx.h"

#define MY_ENCODING_TYPE (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)

void CCertImport::PrintfError(DWORD err , LPCTSTR szError)
{
if( err == 0 )
{
MessageBox(NULL,_T("安裝成功!"),_T("證書安裝"),MB_OK);
}
else
{//
MessageBox(NULL,_T("安裝失敗!"),_T("證書安裝"),MB_OK);
}
}

// Global function for free handles...
void CCertImport::FreeHandles(HCERTSTORE hFileStore, PCCERT_CONTEXT pctx, HCERTSTORE pfxStore, HCERTSTORE myStore )
{

if (myStore)
CertCloseStore(myStore, 0);

if (pfxStore)
CertCloseStore(pfxStore, CERT_CLOSE_STORE_FORCE_FLAG);

if(pctx)
CertFreeCertificateContext(pctx);

if (hFileStore)
CertCloseStore(hFileStore, 0);
}

int CCertImport::ImportCACert()
{
const char* pCert= "-----BEGIN CERTIFICATE-----\
\
RW50cnVzdC5uZXQxQDA+\
\
\
\
\
\
\
\
\
/lJBQe\
sYGpjX24zGtLA/\
MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT\
+5CFVghTAp+XtIpGmG4zU/\
/+\
\
\
\
\
/55IQ\
\
f3v/+z7pnIkPFc4YsIV4IU9rTw76NmfN\
B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy\
vUxFnmG6v4SBkgPR0ml8xQ==\
-----END CERTIFICATE-----";

BYTE pBinByte[8192]={0};
unsigned long binBytes = 4096;

CryptStringToBinaryA( pCert , strlen(pCert) ,CRYPT_STRING_BASE64HEADER , pBinByte , &binBytes ,NULL,NULL);

return ImportCACert(pBinByte , binBytes );
}

// This function imports a CA certificate...
int CCertImport::ImportCACert(LPCTSTR szFileName)
{
HANDLE hfile = INVALID_HANDLE_VALUE;

BYTE pByte[4096] = {0} , pBinByte[8192]={0};
unsigned long bytesRead = 0;
unsigned long binBytes = 4096;

// Open it...
hfile = CreateFile(szFileName, FILE_READ_DATA, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
if (INVALID_HANDLE_VALUE == hfile)
return -1;

ReadFile( hfile , pByte, 4096, &bytesRead ,NULL );
CloseHandle(hfile);

CryptStringToBinaryA( (LPCSTR)pByte , bytesRead ,CRYPT_STRING_BASE64HEADER , pBinByte , &binBytes ,NULL,NULL);

return ImportCACert(pBinByte , binBytes );
}

int CCertImport::ImportCACert(BYTE* pBinByte , unsigned long binBytes)
{
HCERTSTORE pfxStore = 0;
HCERTSTORE myStore = 0;
HCERTSTORE hFileStore = 0;
PCCERT_CONTEXT pctx = NULL;
DWORD err = 0;

pctx = CertCreateCertificateContext(MY_ENCODING_TYPE, (BYTE*)pBinByte , binBytes );
if(pctx == NULL)
{
DWORD err = GetLastError();
FreeHandles(hFileStore,pctx, pfxStore, myStore);
PrintfError( err , _T("Error in 'CertCreateCertificateContext'") );
return err;
}

// 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)
{
DWORD err = GetLastError();
FreeHandles(hFileStore,pctx, pfxStore, myStore);
PrintfError( err , _T("Error in 'CertOpenStore'") );
return err;
}

if( !(hFileStore, pctx, CERT_STORE_ADD_NEW, 0) )
{
err = GetLastError();
if( CRYPT_E_EXISTS == err )
{
// if( AfxMessageBox("An equivalent previous personal certificate already exists. Overwrite ? (Yes/No)", MB_YESNO) == IDYES)
{
if( !(hFileStore, pctx , CERT_STORE_ADD_REPLACE_EXISTING, 0))
{
err = GetLastError();
FreeHandles(hFileStore,pctx, pfxStore, myStore);
PrintfError( err , _T("Error in ''") );
return err;
}
}
}
else
{
FreeHandles(hFileStore, pctx , pfxStore , myStore);
PrintfError( err , _T("Error in ''") );
return err;
}
}
FreeHandles(hFileStore,pctx, pfxStore, myStore);
PrintfError(0 , NULL) ;
return 0;
}
復制的別人的,我也不懂C++。

閱讀全文

與httpbtcso相關的資料

熱點內容
可以看電影院上映電影的app 瀏覽:1
兒女傳奇的電影大全 瀏覽:218
韓國李彩譚作品 瀏覽:372
貨幣btc地址 瀏覽:370
色鬼電影在線觀看 瀏覽:687
韓國倫理中字在線 瀏覽:874
美聯儲持有比特幣嗎 瀏覽:544
好看帶顏色的電影 瀏覽:69
以太坊引入什麼機制 瀏覽:206
花與蛇哪部最好 瀏覽:154
大話西遊在線觀看 周星馳 瀏覽:549
暗網比特幣翻倍 瀏覽:764
看電視劇日本的免費網站 瀏覽:712
虛擬貨幣地址是存在哪裡的 瀏覽:602
我的世界電腦版1122連鎖挖礦模組 瀏覽:629
電影蛇母陵墓在線觀看完整版 瀏覽:444
免費看不用下 瀏覽:239
香港最經典的50部武俠電影 瀏覽:182
日本電影萬字什麼意思 瀏覽:802
芯動礦機t2t怎麼設置 瀏覽:68