CSP接口说明分析.docx
- 文档编号:3063247
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:23
- 大小:19.49KB
CSP接口说明分析.docx
《CSP接口说明分析.docx》由会员分享,可在线阅读,更多相关《CSP接口说明分析.docx(23页珍藏版)》请在冰豆网上搜索。
CSP接口说明分析
CSP接口函数介绍(转)
(2012-05-0715:
21:
30)
标签:
it
分类:
csp
1. CSP接口说明
1.1CSP连接函数
CSP连接函数包括以下函数:
CPAcquireContext
获得CSP的指定密钥容器的句柄
CPReleaseContext
释放由CPAcquireContext得到的句柄
CPGetProvParam
得到CSP的属性
CPSetProvParam
设置CSP的属性
1.2密钥的产生和交换函数
密钥产生函数创建、配置和销毁加密密钥。
他们也用于和其他用户进行交换密钥。
下面
就是主要的一些函数:
CPDeriveKey
从一个密码中派生一个密钥
CPDestoryKey
销毁密钥
CPDuplicateKey
制作一个密钥和密钥状态的精确复制
CPExportKey
把密钥做成BLOB输出
CPGenKey
创建一个随机密钥
CPGenRandom
产生一个随机数
CPGetKeyParam
得到密钥的参数
CPGetUserKey
得到一个密钥交换或签名密钥的句柄
CPImportKey
把一个密钥BLOB传送到CSP中
CPSetKeyParam
指定一个密钥的参数
1.3 数据加密/解密函数
这些函数支持数据的加密/解密操作。
CPEncrypt和CPDecrypt要求在被调用前指定
一个密钥。
这个密钥可以由CPGenKey、CPDeriveKey或CPImportKey产生。
创建密
钥时要指定加密算法。
CPSetKeyParam函数可以指定额外的加密参数。
CPDecrypt
使用指定加密密钥来解密一段密文
CPEncrypt
使用指定加密密钥来加密一段明文
1.4哈希和数字签名函数
这些函数在完成计算哈希、创建和校验数字签名。
CPCreateHash
创建一个空哈希对象
CPDestoryHash
销毁一个哈希对象
CPDuplicateHash
复制一个哈希对象
CPGetHashParam
得到一个哈希对象参数
CPHashData
对一块数据进行哈希,把它加到指定的哈希对象中
CPHashSessionKey
对一个会话密钥进行哈希,把它加到指定的哈希对象中
CPSetHashParam
设置一个哈希对象的参数
CPSignHash
对一个哈希对象进行签名
CPVerifySignature
校验一个数字签名
1.5函数详解
1.5.1CPAcquireContext
BOOLCPAcquireContext(
HCRYPTPROV*phProv, //out
CHAR*pszContainer, //in
DWORDdwFlags, //in
PVTableProvStrucpVTable //in
);
参数:
phProv
[out]CSP句柄指针
pszContainer
[in]密钥容器名称,指向密钥容器的字符串指针。
如果dwFlags为CRYPT_VERIFYCONTEXT,pszContainer必须为NULL。
dwFlags
[in]标志。
CRYPT_VERIFYCONTEXT
此选项指出应用程序不需要使用公钥/私钥对,如程序只执行哈希和对称加密。
只有程序需要创建签名和解密消息时才需要访问私钥。
CRYPT_NEWKEYSET
使用指定的密钥容器名称创建一个新的密钥容器。
如果pszContainer为NULL,
密钥容器就使用却省的名称创建。
CRYPT_MACHINE_KEYSET
由此标志创建的密钥容器只能由创建者本人或有系统管理员身份的人使用。
CRYPT_DELETEKEYSET
删除由pszContainer指定的密钥容器。
如果pszContainer为NULL,却省名称
的容器就会被删除。
此容器里的所有密钥对也会被删除。
CRYPT_SLIENT
应用程序要求CSP不显示任何用户界面。
说明:
这个函数是用来取得CSP密钥容器句柄,以后的任何加密操作就是针对此句柄而言。
由适当的dwFlags标志,这个函数就可以创建和销毁密钥容器。
1.5.2CPReleaseContext
BOOLCPReleaseContext(
HCRYPTPROVhProv, //in
DWORDdwFlags //in
);
参数:
hProv
[in]由CPAcquireContext获得的CSP句柄。
dwFlags
[in]保留。
必须为0。
说明:
此函数释放CSP的句柄。
3CPGetProvParam
BOOLCPGetProvParam(
HCRYPTPROVhProv, //in
DWORDdwParam, //in
BYTE*pbData, //out
DWORD*pdwDataLen,//in,out
DWORDdwFlags //in
);
参数:
hProv
[in]CSP句柄。
dwParam
[in]指定查询的参数。
PP_CONTAINER指向密钥名称的字符串
PP_ENUMALGS不断的读出CSP支持的所有算法
PP_ENUMALGS_EX比PP_ENUMALGS获得更多的算法信息
PP_ENUMCONTAINERS不断的读出CSP支持的密钥容器PP_IMPTYPE指出CSP怎样实现的
PP_NAME指向CSP名称的字符串
PP_VERSIONCSP的版本号
PP_KEYSIZE_INCAT_SIGNATURE的位数
PP_KEYX_KEYSIZE_INCAT_KEYEXCHANGE的位数
PP_KEYSET_SEC_DESCR密钥的安全描述符
PP_UNIQUE_CONTAINER当前密钥容器的唯一名称
PP_PROVTYPECSP类型
PP_USE_HARDWARE_RNG指出硬件是否支持随机数发生器
PP_KEYSPEC返回CSP密钥的信息
pbData
[out]指向接收数据的缓冲区指针。
pdwDataLen
[in/out]指出pbData数据长度。
dwFlags
[in]根据dwParam不同设定不同值。
说明:
此函数获得CSP的各种参数。
1.5.4CPSetProvParam
BOOLCPSetProvParam(
HCRYPTPROVhProv, //in
DWORDdwParam, //in
BYTE*pbData, //in
DWORDdwFlags //in
);
参数:
hProv
[in]CSP句柄。
dwParam
[in]指定查询的参数。
pbData
[out]指向接收数据的缓冲区指针。
dwFlags
[in][in]根据dwParam不同设定不同值。
说明:
此函数设置CSP的各种参数。
1.5.5CPDeriveKey
BOOLCPDeriveKey(
HCRYPTPROV hProv, //in
ALG_ID Algid, //in
HCRYPTHASH hBaseData, //in
DWORD dwFlags, //in
HCRYPTKEY *phKey //out
);
hProv
[in]CSP句柄
Algid
[in]要产生密钥的对称加密算法
hBaseData
[in]哈希对象的句柄
dwFlags
[in]指定密钥的类型
CRYPT_CREATE_SALT典型地,由哈希值产生一个会话密钥,有一些需要补位。
如果用此标志,密钥将会赋予一个盐值CRYPT_EXPORTABLE如果置此标志,密钥就可以用CryptExportKey函数导出。
CRYPT_NO_SALT如果置此标志,表示40位的密钥不需要分配盐值。
CRYPT_UPDATE_KEY有些CSP从多个哈希值中派生会话密钥。
如果这种情况,CryptDeriveKey需要多次调用。
phKey
[in/out]密钥的句柄
说明:
此函数从一基本数据值中派生会话密钥。
函数保证当CSP和算法相同时,从相同基本数据值中产生的密钥是唯一的。
1.5.6CPDestoryKey
BOOLCPDestroyKey(
HCRYPTPROVhProv, //in
HCRYPTKEY hKey //in
);
参数:
hProv
[in]CSP句柄
hKey
[in]需要销毁的密钥句柄
说明:
此函数释放密钥句柄。
1.5.7CPDuplicateKey
BOOLCPDuplicateKey(
HCRYPTPROVhUID, //in
HCRYPTKEYhKey, //in
DWORD*pdwReserved, //in
DWORDdwFlags, //in
HCRYPTKEY*phKey //out
);
参数:
hUID
[in]CSP句柄
hKey
[in]源密钥句柄
pdwReserved
[in]保留,必须为NULL
dwFlags
[in]保留,必须为0
phKey
[out]目标密钥句柄
说明:
目标密钥是源密钥的一个精确复制。
1.5.8CPExportKey
BOOLCPExportKey(
HCRYPTPROVhProv, //in
HCRYPTKEYhKey, //in
HCRYPTKEYhPubKey, //in
DWORDdwBlobType, //in
DWORDdwFlags, //in
BYTE*pbData, //out
DWORD*pdwDataLen //in,out
);
参数:
hUID
[in]CSP句柄
hKey
[in]被导出的密钥
hPubKey
[in]用来加密的公钥句柄
dwBlobType
[in]导出KEYBLOB的类型
SIMPLEBLOB表示导出的是对称密钥,密钥用hPubKey指定的公钥加密
PUBLICKEYBLOB表示导出的是hKey指定的公钥,此时hPubKey应该为0
PRIVATEKEYBLOB表示导出的是hKey指定的密钥对,此时hPubKey应该为0
dwFlags
[in]保留,必须为0
pbData
[in/out]导出KEYBLOB的地址
pdwDataLen
[in/out]指向DWORD值的指针,此值指出导出KEYBLOB的长度。
在调用此函数前,此值为pbData缓冲区长度,调用此函数后,此值为导出KEYBLOB的长度。
说明:
把密钥以KEYBLOB形式导出。
1.5.9CPGenKey
BOOLCPGenKe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CSP 接口 说明 分析