1,CertOpenSystemStore打开系统最常用的证书存储区域。假如需要满足复杂的需要,请看CertOpenStore
HCERTSTORE WINAPI CertOpenSystemStore(
HCRYPTPROV hprov, //CSP句柄,NULL为默认句柄,或者由CryptAcquireContext返回
LPTCSTR szSubsystemProtocol //打开的系统存储区的名字。假如名字不为CA,MY,ROOT,SPC则新建一个证书存储区域,可以使用CertEnumSystemStore列出所有的已存在的系统存储区
);
2,CertOpenStore使用一个指定的存储区提供类型来打开一个证书存储区。
HCERTSTORE WINAPI CertOpenStore(
LPCSTR lpszStoreProvider, //指定提供的存储的类型,大量类型,请参见MSDN
DWORD dwMsgAndCertEncodingType, //只有当上一参数为CERT_STORE_PROV_MSG, CERT_STORE_PROV_PKCS7, or CERT_STORE_PROV_FILENAME才使用,否则必须为0
HCRYPTPROV hCryptProv, //密码算法提供方的句柄,推荐使用默认,将参数置为NULL
DWORD dwFlags, //它由高字节和低字节组成,参数众多。
const void* pvPara //void类型,可以指向任意类型数据。
);
例如:if(hSysStore = CertOpenStore(CERT_STORE_PROV_SYSTEM,0,NULL,CERT_SYSTEM_STORE_CURRENT_USER,L"MY")打开系统的MY存储区
3,CertCloseStore关闭打开的证书存储区句柄
BOOL WINAPI CertCloseStore(
HCERTSTORE hCertStore, //证书存储区句柄
DWORD dwFlags
);
第二个参数一般为0,关闭了存储区,但是里面内容并没有释放
假如为CERT_CLOSE_STORE_CHECK_FLAG,检查没有释放空间的证书,CRL和CTL内容。他将返回一个错误报告。一般只用用于程序的诊断工具。
假如为CERT_CLOSE_STORE_FORCE_FLAG,则强制释放相关空间。他只在存储区打开并且存储区以及其相关内容没有被别的程序调用的时候使用才安全的。
4,CertDuplicateStore复制存储区,其reference count 也将增一,返回一个存储区的句柄
HCERTSTORE WINAPI CertDuplicateStore(
HCERTSTORE hCertStore
);
5,CertFindCertificateInStore从证书存储区中寻找符合指定要求的证书内容
PCCERT_CONTEXT WINAPI CertFindCertificateInStore(
HCERTSTORE hCertStore, //打开的证书存储区的句柄
DWORD dwCertEncodingType, //指定编码的类型,一般为X509_ASN_ENCOD
CryptoApi基本函数总结
最新推荐文章于 2024-10-24 11:15:25 发布
本文详细总结了CryptoApi中涉及证书操作的关键函数,包括CertOpenSystemStore、CertOpenStore、CertCloseStore、CertDuplicateStore等,涵盖了证书存储区的打开、关闭、复制以及证书的查找、创建、添加和删除等核心功能。
摘要由CSDN通过智能技术生成