分享
 
 
 

学习CRYPTO第三天

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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_ENCODING | PKCS_7_ASN_ENCODING

DWORD dwFindFlags, //用来修改查找规则,一般都不用并且把它设置为0

DWORD dwFindType, //指定的查找类型,类型中多,例如CERT_FIND_CERT_ID

const void* pvFindPara, //需要查找的内容

PCCERT_CONTEXT pPrevCertContext //返回最近一次返回的CERT_CONTEXT结构。

);

例如:CertFindCertificateInStore(hSystemStore,MY_ENCODING_TYPE,0,CERT_FIND_SUBJECT_STR,L"Cert_subject_1",NULL);

6,CertCreateCertificateContext从一个编码证书创建一个证书内容

PCCERT_CONTEXT WINAPI CertCreateCertificateContext(

DWORD dwCertEncodingType, //指定编码的类型,一般为X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

const BYTE* pbCertEncoded, //包含编码证书内容的指针

DWORD cbCertEncoded //编码证书数据的长度

);

7,CertAddCertificateContextToStore将一个证书内容增加到证书存储区中。

BOOL WINAPI CertAddCertificateContextToStore(

HCERTSTORE hCertStore, //证书存储区的句柄

PCCERT_CONTEXT pCertContext, //CERT_CONTEXT结构指针

DWORD dwAddDisposition, //指定与已存在相同证书的操作,例如CERT_STORE_ADD_ALWAYS

PCCERT_CONTEXT* ppStoreContext //一个证书的复制的指针,可以为NULL,说明不需要返回证书的复制。

);

8,CertAddCertificateLinkToStore增加一个从一个证书存储区中证书内容到另一个证书存储区的连接

BOOL WINAPI CertAddCertificateLinkToStore(

HCERTSTORE hCertStore, //需要被增加的证书存储区的句柄

PCCERT_CONTEXT pCertContext, //CERT_CONTEXT结构指针

DWORD dwAddDisposition, //指定与已存在相同证书的操作,例如CERT_STORE_ADD_ALWAYS

PCCERT_CONTEXT* ppStoreContext //一个连接的复制的指针,可以为NULL,说明不需要返回证书的复制。

);

9, CertEnumCertificatesInStore从证书存储区中获取第一或者下一个证书。使用循环,他可以获取存储区所有的证书序列

PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(

HCERTSTORE hCertStore, //证书存储区的句柄

PCCERT_CONTEXT pPrevCertContext //上一个证书内容的CERT_CONTEXT结构指针,当第一次开始列举时参数必须为NULL

);

10,CryptUIDlgViewContext显示一个证书,CTL或者CRL内容

BOOL WINAPI CryptUIDlgViewContext(

DWORD dwContextType, //表示指向何种类型。参数有CERT_STORE_CERTIFICATE_CONTEXT,CERT_STORE_CRL_CONTEXT,CERT_STORE_CTL_CONTEXT

const void* pvContext, //要显示的证书,CRL或者CTL内容

HWND hwnd, //需要显示的窗口句柄,当为NULL的时候默认为桌面窗口

LPCWSTR pwszTitle, //显示的标题名,当为NULL时默认为内容类型

DWORD dwFlags, //暂时没被使用,并且必须为0

void* pvReserved //保留字,为将来使用。

);

例如:

CryptUIDlgViewContext(CERT_STORE_CERTIFICATE_CONTEXT,pCertContext,NULL,NULL,0,NULL);

11,CertGetNameString获取CERT_CONTEXT结构中的主题或者签发者,并且将他转化为以null结尾的字符串

DWORD WINAPI CertGetNameString(

PCCERT_CONTEXT pCertContext, //包含CERT_CONTEXT证书内容的指针

DWORD dwType, //指定如何找到名字,并且输出的格式,例如CERT_NAME_ATTR_TYPE

DWORD dwFlags, //指定需要处理的类型,CERT_NAME_ISSUER_FLAG请求签发者名字,不设置则代表主题名

void* pvTypePara, //或者是一个包含dwStrType的字节指针,或者是一个指定名字属性的对象标志符指针

LPTSTR pszNameString, //转换后返回的字符串指针

DWORD cchNameString //上一字符串长度,以NULL结尾

);

如:CertGetNameString(pCertContext,CERT_NAME_SIMPLE_DISPLAY_TYPE,0,NULL,pszNameString,128)

12,CertEnumCertificateContextProperties获取与证书内容相关的第一个或者下一个扩展属性

DWORD WINAPI CertEnumCertificateContextProperties(

PCCERT_CONTEXT pCertContext, //CERT_CONTEXT结构指针

DWORD dwPropId //Property number of the last property enumerated. 参数为0时,获取第一个属性

);

13,CertGetCertificateContextProperty获取每个扩展属性的信息。

BOOL WINAPI CertGetCertificateContextProperty(

PCCERT_CONTEXT pCertContext, //CERT_CONTEXT指针

DWORD dwPropId, //需要获取的属性,参数众多,例如CERT_ACCESS_STATE_PROP_ID

void* pvData, //接收返回的数据指针

DWORD* pcbData //数据长度指针

);

例如:CertGetCertificateContextProperty(pCertContext, dwPropId , NULL, &cbData)

14,CryptUIDlgSelectCertificateFromStore显示一个对话框,允许在其中选择指定的证书。

PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificateFromStore(

HCERTSTORE hCertStore, //被查找的证书存储区句柄

HWND hwnd, //要显示的窗口句柄,NULL默认为桌面窗口

LPCWSTR pwszTitle, //对话框标题,NULL默认为“Select Certificate”

LPCWSTR pwszDisplayString, //在选中的对话框中显示的语句,NULL默认为"Select a certificate you wish to use"

DWORD dwDontUseColumn, //排除一些显示的列,例如CRYPTUI_SELECT_ISSUEDTO_COLUMN不显示ISSUEDTO信息

DWORD dwFlags, //暂时设置为0

void* pvReserved //保留字,还未使用。

);

15,CertCompareCertificateName比较两个证书CERT_NAME_BLOB结构是否一致,成功返回true,否则返回false;

BOOL WINAPI CertCompareCertificateName(

DWORD dwCertEncodingType, //指定编码的类型,一般为X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

PCERT_NAME_BLOB pCertName1, //CERT_NAME_BLOB指针

PCERT_NAME_BLOB pCertName2

);

16,BOOL WINAPI CertComparePublicKeyInfo(比较公钥信息。

DWORD dwCertEncodingType,

PCERT_PUBLIC_KEY_INFO pPublicKey1,

PCERT_PUBLIC_KEY_INFO pPublicKey2

);

17,BOOL WINAPI CertCompareCertificate(比较两个证书

DWORD dwCertEncodingType,

PCERT_INFO pCertId1,

PCERT_INFO pCertId2

);

18,BOOL WINAPI CertDeleteCertificateFromStore(从一个证书存储区中删除一个证书。

PCCERT_CONTEXT pCertContext

);

19,BOOL WINAPI CertSerializeCertificateStoreElement(serializes a certificate context's encoded certificate

and its encoded properties

PCCERT_CONTEXT pCertContext, //CERT_CONTEXT指针

DWORD dwFlags, //保留字,为将来使用,设置为0

BYTE* pbElement, //Pointer to a buffer that receives the serialized output, including the

encoded certificate and possibly its properties.

DWORD* pcbElement //上一参数的数据长度。

);

20,CertAddEncodedCertificateToStore从编码证书中创建一个证书内容并且把他加入证书存储区。

BOOL WINAPI CertAddEncodedCertificateToStore(

HCERTSTORE hCertStore, //证书存储区句柄

DWORD dwCertEncodingType, //指定编码的类型,一般为X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

const BYTE* pbCertEncoded, //编码证书指针

DWORD cbCertEncoded, //编码证书长度

DWORD dwAddDisposition, //指定当已存在该证书时的操作。例如CERT_STORE_ADD_ALWAYS

PCCERT_CONTEXT* ppCertContext//证书内容的指针。可以为NULL。

);

例如:CertAddEncodedCertificateToStore(hFileStore,MY_ENCODING_TYPE,pCertContext->pbCertEncoded,pCertContext-

>cbCertEncoded,CERT_STORE_ADD_USE_EXISTING,NULL)

21, CertAddEnhancedKeyUsageIdentifier 增加一个增强密钥用途

BOOL WINAPI CertAddEnhancedKeyUsageIdentifier(

PCCERT_CONTEXT pCertContext,//Cert_context结构。

LPCSTR pszUsageIdentifier //指定需要增加的OID

);

22,CertSetCertificateContextProperty设置指定的证书内容的扩展属性

BOOL WINAPI CertSetCertificateContextProperty(

PCCERT_CONTEXT pCertContext,

DWORD dwPropId,

DWORD dwFlags,

const void* pvData

);

22,CertNameToStr 转换编码后名字到以NULL结尾的字符串中。

DWORD WINAPI CertNameToStr(

DWORD dwCertEncodingType,

PCERT_NAME_BLOB pName,

DWORD dwStrType,

LPTSTR psz,

DWORD csz

);

23,CertStrToName转化一个以NULL结尾的字符串到证书的名字

BOOL WINAPI CertStrToName(

DWORD dwCertEncodingType,

LPCTSTR pszX500,

DWORD dwStrType,

void* pvReserved,

BYTE* pbEncoded,

DWORD* pcbEncoded,

LPCTSTR* ppszError

);

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有