验证证书的有效性(cryptoapi---转自hs_fish)
来源:互联网 发布:mac 其他卷宗是什么 编辑:程序博客网 时间:2024/05/16 03:40
使用CertGetIssuerCertificateFromStore函数来验证证书的有效性,其函数声明如下:
PCCERT_CONTEXT WINAPI CertGetIssuerCertificateFromStore( HCERTSTORE hCertStore, //[in]要查找的证书库 PCCERT_CONTEXT pSubjectContext, //[in]包含主题的证书内容 PCCERT_CONTEXT pPrevIssuerContext, //[in]包含颁发者证书的内容,第一次查找时为NULL DWORD* pdwFlags);
pPrevIssuerContext这个参数在第一次寻找颁发者证书时必须为NULL,以后寻找下一个颁发者证书时
将上次返回的PCCERT_CONTEXT传给它(因为同一个颁发者可能有很多个证书),注意这里传过来的
PCCERT_CONTEXT的结构在函数执行完后将被释放.
pdwFlags [in,out]
[in]
为要验证证书内容的标志,主要有以下几个(可以用或连接):
CERT_STORE_REVOCATION_FLAG 验证证书是否在CRL列表中
CERT_STORE_SIGNATURE_FLAG 用颁发者证书的公钥来验证主题证书是否有效
CERT_STORE_TIME_VALIDITY_FLAG 验证主题证书是否在有效期内
[out]
做为返回值返回时,这个标志又多了两个值,如下:
CERT_STORE_NO_CRL_FLAG 没有匹配的CRL,也就是说在CRL列表中没有找到此证书
CERT_STORE_NO_ISSUER_FLAG 在证书库中没有找到颁发者证书
函数执行完后,pdwFlags 将被重新设置,验证成功的标志将被设为0,失败的仍然不变,注意:
当CERT_STORE_REVOCATION_FLAG 被设置,并且在证书库的CRL中也没有找到时,返回的
pdwFlags 中CERT_STORE_NO_CRL_FLAG将被设置而且CERT_STORE_REVOCATION_FLAG继续
保留.当 CERT_STORE_SIGNATURE_FLAG or CERT_STORE_REVOCATION_FLAG 被设置时,若
函数找不到颁发者的证书,在返回时CERT_STORE_NO_ISSUER_FLAG的标志将被设置.
注意:如果证书被验证为无效的,函数仍然返回找到的颁发者证书的CERT_CONTEXT的指针.
如果函数调用出错,返回NULL,这时可以调用GetLastError()查看出错的信息:
CRYPT_E_NOT_FOUND 颁发者证书没找到
CRYPT_E_SELF_SIGNED 主题证书与颁发者证书是一样的(自签名证书)
E_INVALIDARG pdwFlags 参数值无效或是hCertStore指定的句柄与pPrevIssuerContext的不
一致.
- 验证证书的有效性(cryptoapi---转自hs_fish)
- 验证证书的有效性(cryptoapi)
- Openssl验证证书的有效性
- 企业自颁布服务器证书的有效性验证(C#为例)
- 证书的有效性管理和验证
- 国密SM2证书的有效性验证
- Openssl 对x509证书有效性进行验证
- 数字证书的有效性验证
- 数字证书的有效性验证
- 验证身份证的有效性
- 验证邮箱的有效性
- c++ 如何使用CryptoAPI创建一个自签名证书
- apk的证书自签名, 普通证书由证书中心签名, 根证书自签名 (签名者验证证书)
- VC++验证EMAIL的有效性
- 验证索引有效性的方法
- 验证IP地址的有效性
- pb 的数据有效性验证
- 验证url地址的有效性
- Windows下JSP开发环境的配置
- 共享内存实现进程间大数据的交换
- 在Oracle中存取BLOB对象实现文件的上传和下载
- 区分大小写的Like用法
- [面试英语]1,常见的面试问题,2,如何说明离职原因
- 验证证书的有效性(cryptoapi---转自hs_fish)
- [ASP代码]由访问者自行输入数据的下拉框
- 程序员与程序经理[转]
- 常用名词解释
- 获取系统库和物理库名(cryptoapi)
- 转载:ajax.net与dataset等
- CSDN星级制度作出调整
- Check List for FI Year End Closing
- PP Year End To Do List