专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 信息/网络安全

如何用代码实现CA证书安装

发布时间:2011-07-03 07:09:14 文章来源:www.iduyao.cn 采编人员:星星草
怎么用代码实现CA证书安装?
WINDOWS, VC, 怎么用代码安装一个 ca.crt 证书到 信任的根证书区?

------解决方案--------------------
Windows系统安全原理与技术 这书有详细的论述,你去下一本看看。
然后,用代码或角本去实现。
------解决方案--------------------

DWORD _stdcall CSPRegistCert
(
IN BYTE *pbCert,
IN DWORD dwCertLen,
IN DWORD dwKeySpec,
IN LPCSTR szContainer
)
{
DWORD dwRet,dwCSPNameLen,dwStoreNameLen,dwConNameLen,dwProviderLen;
LPWSTR wszCSPName=NULL,wszStoreName=NULL,wszConName=NULL;
char szProvider[256];

// we use unicode, its default code for register cert
dwStoreNameLen=(strlen("MY")+1)*sizeof(WCHAR);
wszStoreName=(LPWSTR)malloc(dwStoreNameLen);

// covert multi characters to wide characters 
dwProviderLen=sizeof(szProvider)-1;
memset(szProvider,0x00,sizeof(szProvider));
HRGetCSPProvider(szProvider,&dwProviderLen);

dwCSPNameLen=(strlen(szProvider)+1)*sizeof(WCHAR);
wszCSPName=(LPWSTR)malloc(dwCSPNameLen);

dwConNameLen=(strlen(szContainer)+1)*sizeof(WCHAR);
wszConName=(LPWSTR)malloc(dwConNameLen);

if (wszCSPName==NULL || wszStoreName==NULL || wszConName==NULL)
{
dwRet=ERROR_NOT_ENOUGH_MEMORY;
goto err;
}
memset(wszCSPName,0x00,dwCSPNameLen);
memset(wszStoreName,0x00,dwStoreNameLen);
memset(wszConName,0x00,dwConNameLen);

MultiByteToWideChar(CP_ACP,0,szProvider,-1,wszCSPName,dwCSPNameLen);
MultiByteToWideChar(CP_ACP,0,"MY",-1,wszStoreName,dwStoreNameLen);
MultiByteToWideChar(CP_ACP,0,szContainer,-1,wszConName,dwConNameLen);
if(dwRet=CSPAddCertToIE((BYTE*)pbCert,dwCertLen,dwKeySpec,wszConName,wszCSPName,wszStoreName))
goto err;

free(wszConName);
free(wszCSPName);
free(wszStoreName);
return 0;
err:
if (wszConName!=NULL)
free(wszConName);

if (wszCSPName!=NULL)
free(wszCSPName);

if (wszStoreName!=NULL)
free(wszStoreName);
return dwRet;
}


------解决方案--------------------
学习一下

其实不安装也可以用
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: