CERT_KEY_CONTEXT_PROP_ID,CERT_KEY_PROV_INFO_PROP_ID,CERT_KEY_PROV_HANDLE_PROP_ID和CERT_KEY_SPEC_PROP_ID
上面四个属性是CertSetCertificateContextProperty或CertGetCertificateContextProperty可以为证书上下文设置的几个属性,下面对它们的关联简单的进行分析(其中的意义我也不太清楚):
通过CERT_KEY_CONTEXT_PROP_ID属性,我们可以为证书上下文设置一个CERT_KEY_CONTEXT结构体,在MSDN中,我们可以看到结构体的定义:
typedef struct _CERT_KEY_CONTEXT {
DWORD cbSize;
HCRYPTPROV hCryptProv;
DWORD dwKeySpec;
} CERT_KEY_CONTEXT, *PCERT_KEY_CONTEXT;
设置CERT_KEY_PROV_HANDLE_PROP_ID属性时,首先获取CERT_KEY_CONTEXT_PROP_ID属性,获得CERT_KEY_CONTEXT结
构体,根据MSDN,如果CERT_KEY_CONTEXT_PROP_ID属性不存在,则创建CERT_KEY_CONTEXT_PROP_ID属性,
以上分析是基于开源代码和MSDN,不涉及windows内部细节,只供参考,开源代码来源:
CERT_KEY_CONTEXT结构体中hCryptProv元素为设置CERT_KEY_PROV_HANDLE_PROP_ID属性时输入的参数,dwKeySpec元素
为CERT_KEY_PROV_INFO_PROP_ID属性对应的CRYPT_KEY_PROV_INFO结构体中dwKeySpec;如果存在属性
CERT_KEY_CONTEXT_PROP_ID属性,则首先判断设置CERT_KEY_PROV_HANDLE_PROP_ID属性时输入的参数dwFlags是否
存在CERT_STORE_NO_RELEASE_FLAG标志,如果不存在,则要手动释放CERT_KEY_CONTEXT结构体中hCryptProv对应的
CSP,如果存在,则可以不用管,然后,更新CERT_KEY_CONTEXT中的hCryptProv元素(使用输入的参数)。
设置CERT_KEY_SPEC_PROP_ID时,根据MSDN,首先获取CERT_KEY_CONTEXT_PROP_ID属性,获得CERT_KEY_CONTEXT结
构体,如果CERT_KEY_CONTEXT_PROP_ID属性不存在,则创建CERT_KEY_CONTEXT_PROP_ID属性,对应CERT_KEY_CONTEXT结构
体中hCryptProv元素设为0,dwKeySpec元素设为输入的参数;如果CERT_KEY_CONTEXT_PROP_ID属性存在,则更新对应结构体
CERT_KEY_CONTEXT中的dwKeySpec元素,使用输入的参数。
关于这几个属性的使用,网上资料实在是少,我基本也没接触过,所以我也不知道如果去使用这些属性,这里只是对它们的联系作以下简单的
分析,微软的MSDN上也进行了简短的说明。
http://www.koders.com/c/fidE5BEC613BE70EF0FF4028C5F0B8C103AE0CEC21F.aspx
CERT_KEY_CONTEXT_PROP_ID,CERT_KEY_PROV_INFO_PROP_ID,CERT_KEY_PROV_HANDLE_PROP_ID和CERT_KEY_SPEC_PROP_ID的更多相关文章
- windows p12(pfx)个人证书安装过程
证书库个人证书存储区为其中的每个证书维护一个属性CERT_KEY_PROV_INFO_PROP_ID,该属性指定了证书对应的密钥容器的相关信息,包括密钥容器名,CSP名称,CSP类型,密钥用途,以及C ...
- CryptAPI 数字签名 与 Openssl 验证签名
这段时间要实现一个认证协议,分为客户端和服务器端,客户端使用windows操作系统,服务器端使用linux操作系统,在客户端下(windows),使用windows证书库中的签名证书对消息进行签名(使 ...
- Windows密钥容器和证书的关系
其实CSP主要是对容器里的密钥对操作的,和证书关系不大. 容器里的密钥对有两种类型:一种是AT_KEYEXCHANGE,表示加密的密钥对,一种是AT_SIGNATURE表示签名的密钥对. 由于美国的出 ...
- 2019-2020-2 20174314王方正 《网络对抗》 Exp0 Kali安装
本博旨记录安装Kali的具体步骤. 一.Vmware的安装 略. 二.Vmware的配置 选择[文件]-[新建虚拟机]. 出现新建虚拟机导向,按照以下图示配置每一步.
随机推荐
- PE安装原版XP系统(含高版本PE安装选项灰色处理办法)
PE 安装 XP 镜像流程准备原版 XP 安装光盘镜像放到硬盘非 C 盘. 可解压到本地经行安装, 也可以使用虚拟光驱载入安装 (本教程主要讲 PE 内虚拟光驱载入安装) 第一步:用 U 盘或硬盘/光 ...
- MyEclipse 10 和 2014 两个版本共存破解 - imsoft.cnblogs
第一步:运行 (run.bat)文件, 输入任意用户名 第二步:点击Systemid... 按钮,自动生成本机器的systemid. 第三步: 点菜单Tools->RebuildKey 第四 ...
- python矩阵运算 不断收集整理
python矩阵运算 转自:http://blog.sina.com.cn/s/blog_5f234d4701012p64.html Python使用NumPy包完成了对N-维数组的快速便捷操作.使用 ...
- 设置SAPgui自动退出功能
当客户端长时间没有使用时,为了不占用SAP服务器的资源,我们可以设置当客户端在一段时间没有 进行操作时自动退出SAP系统. 设置步骤如下: 用Tcode rz10打开参数配置窗口,选择你当前的实例参数 ...
- 215. Kth Largest Element in an Array
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...
- poj2367 拓扑序
题意:有一些人他们关系非常复杂,一个人可能有很多后代,现在要制定一种顺序,按照前辈在后代前排列就行 拓扑序裸题,直接建边拓扑排序一下就行了. #include<stdio.h> #incl ...
- Linux-dd命令详解【转】
转自http://www.cnblogs.com/dkblog/archive/2009/09/18/1980715.html Linux-dd命令详解 dd 是 Linux/UNIX 下的一个非 ...
- 小心对待query_cache_size
作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#gmail.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 对于使用My ...
- java linux book
calvin1978.blogcn.com/articles/javabookshelf.html
- 解决方法:loadrunner 场景下执行webservice脚本是---报错10492 Error: Exception was raised when calling per-process-init function in extens
在vug下执行时,脚本无异常,但是在controller下执行时报下面错误,网上查了下,解决方法千奇百怪,但无一可行. 分析了下错误,似乎是初始化进程有关.想到rts中的设置习惯时以线程方式执行. 遂 ...