⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htcspact.h

📁 作为信息安全的一辅助工具,主要用于初始化USBKEY,从而使USBKEY存储用户的相关信息.
💻 H
📖 第 1 页 / 共 2 页
字号:
	IN LPVOID hContext,
	IN LPCTSTR szReader,
	IN LPCTSTR szUserPin,
	IN LPCTSTR szContainerName,
	OUT BYTE *pbRetryNum
);
	
// 生成RSA公私钥对
// IN LPVOID hContext:PC/SC上下文
// IN LPCTSTR szReader:读卡器名字
// IN LPCTSTR szUserPin:HaiKey的用户口令
// IN LPCTSTR szContainerName:密钥容器名字
// IN DWORD dwKeySpec:密钥属性,为AT_KEYEXCHANGE或AT_SIGNATURE之一
// IN BOOL fShowUI:是否显示提示的用户界面
// OUT BYTE *pbRetryNum:当HaiKey的用户口令错误时,返回用户口令还能重试的次数
// 返回0成功,其它失败
DWORD _stdcall HC_GenRSA
(
	IN LPVOID hContext,
	IN LPCTSTR szReader,
	IN LPCTSTR szUserPin,
	IN LPCTSTR szContainerName,
	IN DWORD dwKeySpec,
	IN BOOL fShowUI,
	OUT BYTE *pbRetryNum
);

// 导入RSA公钥或私钥,在导入RSA私钥时,将同时导入RSA公钥
// IN LPVOID hContext:PC/SC上下文
// IN LPCTSTR szReader:读卡器名字
// IN LPCTSTR szUserPin:HaiKey的用户口令
// IN LPCTSTR szContainerName:密钥容器名字
// IN DWORD dwKeySpec:密钥属性,为AT_KEYEXCHANGE或AT_SIGNATURE之一
// IN DWORD dwRSAKeyType:RSA公钥或私钥的类型,为HT_RSA_PUB_KEY或HT_RSA_PRI_KEY之一
// IN BYTE *pbRSAKey:RSA公钥或私钥,PKCS#1的DER编码形式
// IN DWORD dwRSAKeyLen:RSA公钥或私钥长度
// OUT BYTE *pbRetryNum:当HaiKey的用户口令错误时,返回用户口令还能重试的次数
// 返回0成功,其它失败
DWORD _stdcall HC_ImportRSA
(
	IN LPVOID hContext,
	IN LPCTSTR szReader,
	IN LPCTSTR szUserPin,
	IN LPCTSTR szContainerName,
	IN DWORD dwKeySpec,
	IN DWORD dwRSAKeyType,
	IN BYTE *pbRSAKey,
	IN DWORD dwRSAKeyLen,
	OUT BYTE *pbRetryNum
);
	
// 导出RSA公钥
// IN LPVOID hContext:PC/SC上下文
// IN LPCTSTR szReader:读卡器名字
// IN LPCTSTR szContainerName:密钥容器名字
// IN DWORD dwKeySpec:密钥属性,为AT_KEYEXCHANGE或AT_SIGNATURE之一
// OUT BYTE *pbPubKey:返回RSA公钥,PKCS#1的DER编码形式
// IN OUT DWORD *pdwPubKeyLen:输入时,为pbPubKey缓冲区长度;输出时,为RSA公钥的DER长度
// 返回0成功,其它失败
DWORD _stdcall HC_ExportRSAPubKey
(
	IN LPVOID hContext,
	IN LPCTSTR szReader,
	IN LPCTSTR szContainerName,
	IN DWORD dwKeySpec,
	OUT BYTE *pbPubKey,
	IN OUT DWORD *pdwPubKeyLen
);
	
// RSA公钥加密
// IN LPVOID hContext:PC/SC上下文
// IN LPCTSTR szReader:读卡器名字
// IN LPCTSTR szContainerName:密钥容器名字
// IN DWORD dwKeySpec:密钥属性,为AT_KEYEXCHANGE或AT_SIGNATURE之一
// IN DWORD dwPadMode:补码模式,为RSA_ZERO_PADDING、RSA_PKCS1_PADDING、RSA_NO_PADDING、RSA_PKCS1_OAEP_PADDING之一
// IN BYTE *pbInData:输入数据
// IN DWORD dwInDataLen:输入数据长度
// OUT BYTE *pbOutData:输出数据
// IN OUT DWORD *pdwOutDataLen:输入时,为pbOutData缓冲区长度;输出时,为输出数据长度
// 返回0成功,其它失败
DWORD _stdcall HC_RSAEncrypt
(
	IN LPVOID hContext,
	IN LPCTSTR szReader,
	IN LPCTSTR szContainerName,
	IN DWORD dwKeySpec,
	IN DWORD dwPadMode,
	IN BYTE *pbInData,
	IN DWORD dwInDataLen,
	OUT BYTE *pbOutData,
	IN OUT DWORD *pdwOutDataLen
);
	
// RSA私钥解密
// IN LPVOID hContext:PC/SC上下文
// IN LPCTSTR szReader:读卡器名字
// IN LPCTSTR szUserPin:HaiKey的用户口令
// IN LPCTSTR szContainerName:密钥容器名字
// IN DWORD dwKeySpec:密钥属性,为AT_KEYEXCHANGE或AT_SIGNATURE之一
// IN DWORD dwPadMode:补码模式,为RSA_ZERO_PADDING、RSA_PKCS1_PADDING、RSA_NO_PADDING、RSA_PKCS1_OAEP_PADDING之一
// IN BYTE *pbInData:输入数据
// IN DWORD dwInDataLen:输入数据长度
// OUT BYTE *pbOutData:输出数据
// IN OUT DWORD *pdwOutDataLen:输入时,为pbOutData缓冲区长度;输出时,为输出数据长度
// OUT BYTE *pbRetryNum:当HaiKey的用户口令错误时,返回用户口令还能重试的次数
// 返回0成功,其它失败
DWORD _stdcall HC_RSADecrypt
(
	IN LPVOID hContext,
	IN LPCTSTR szReader,
	IN LPCTSTR szUserPin,
	IN LPCTSTR szContainerName,
	IN DWORD dwKeySpec,
	IN DWORD dwPadMode,
	IN BYTE *pbInData,
	IN DWORD dwInDataLen,
	OUT BYTE *pbOutData,
	IN OUT DWORD *pdwOutDataLen,
	OUT BYTE *pbRetryNum
);

// RSA私钥签名
// IN LPVOID hContext:PC/SC上下文
// IN LPCTSTR szReader:读卡器名字
// IN LPCTSTR szUserPin:HaiKey的用户口令
// IN LPCTSTR szContainerName:密钥容器名字
// IN DWORD dwKeySpec:密钥属性,为AT_KEYEXCHANGE或AT_SIGNATURE之一
// IN DWORD dwPadMode:补码模式,为RSA_ZERO_PADDING、RSA_PKCS1_PADDING、RSA_NO_PADDING之一
// IN BYTE *pbInData:输入数据
// IN DWORD dwInDataLen:输入数据长度
// OUT BYTE *pbOutData:输出数据
// IN OUT DWORD *pdwOutDataLen:输入时,为pbOutData缓冲区长度;输出时,为输出数据长度
// OUT BYTE *pbRetryNum:当HaiKey的用户口令错误时,返回用户口令还能重试的次数
// 返回0成功,其它失败
DWORD _stdcall HC_RSASign
(
	IN LPVOID hContext,
	IN LPCTSTR szReader,
	IN LPCTSTR szUserPin,
	IN LPCTSTR szContainerName,
	IN DWORD dwKeySpec,
	IN DWORD dwPadMode,
	IN BYTE *pbInData,
	IN DWORD dwInDataLen,
	OUT BYTE *pbOutData,
	IN OUT DWORD *pdwOutDataLen,
	OUT BYTE *pbRetryNum
);
	
// RSA公钥验证签名
// IN LPVOID hContext:PC/SC上下文
// IN LPCTSTR szReader:读卡器名字
// IN LPCTSTR szContainerName:密钥容器名字
// IN DWORD dwKeySpec:密钥属性,为AT_KEYEXCHANGE或AT_SIGNATURE之一
// IN DWORD dwPadMode:补码模式,为RSA_ZERO_PADDING、RSA_PKCS1_PADDING、RSA_NO_PADDING之一
// IN BYTE *pbInData:输入数据
// IN DWORD dwInDataLen:输入数据长度
// OUT BYTE *pbOutData:输出数据
// IN OUT DWORD *pdwOutDataLen:输入时,为pbOutData缓冲区长度;输出时,为输出数据长度
// 返回0成功,其它失败
DWORD _stdcall HC_RSAVerify
(
	IN LPVOID hContext,
	IN LPCTSTR szReader,
	IN LPCTSTR szContainerName,
	IN DWORD dwKeySpec,
	IN DWORD dwPadMode,
	IN BYTE *pbInData,
	IN DWORD dwInDataLen,
	OUT BYTE *pbOutData,
	IN OUT DWORD *pdwOutDataLen
);

// 读证书
// IN LPVOID hContext:PC/SC上下文
// IN LPCTSTR szReader:读卡器名字
// IN LPCTSTR szContainerName:密钥容器名字
// IN DWORD dwKeySpec:密钥属性,为AT_KEYEXCHANGE或AT_SIGNATURE之一
// OUT BYTE *pbCert:返回证书数据,der编码,当pbCert==NULL时,pdwCertLen返回证书数据的长度
// IN OUT DWORD *pdwCertLen:输入时,为pbCert缓冲区的长度;输出时,为证书数据的长度
// 返回0成功,其它失败
DWORD _stdcall HC_ReadCert
(
	IN LPVOID hContext,
	IN LPCTSTR szReader,
	IN LPCTSTR szContainerName,
	IN DWORD dwKeySpec,
	OUT BYTE *pbCert,
	IN OUT DWORD *pdwCertLen
);
	
// 写证书,写证书前必须已经生成RSA公私钥对,该函数不负责检查证书是否与公私钥对相匹配
// 通过密钥容器名及相关属性能够对应唯一的RSA公私钥对和证书
// IN LPVOID hContext:PC/SC上下文
// IN LPCTSTR szReader:读卡器名字
// IN LPCTSTR szUserPin:HaiKey的用户口令
// IN LPCTSTR szContainerName:密钥容器名字
// IN DWORD dwKeySpec:密钥属性,为AT_KEYEXCHANGE或AT_SIGNATURE之一
// IN BYTE *pbCert:证书数据,der编码
// IN DWORD dwCertLen:证书数据的长度
// OUT BYTE *pbRetryNum:当HaiKey的用户口令错误时,返回用户口令还能重试的次数
// 返回0成功,其它失败
DWORD _stdcall HC_WriteCert
(
	IN LPVOID hContext,
	IN LPCTSTR szReader,
	IN LPCTSTR szUserPin,
	IN LPCTSTR szContainerName,
	IN DWORD dwKeySpec,
	IN BYTE *pbCert,
	IN DWORD dwCertLen,
	OUT BYTE *pbRetryNum
);
	
// 利用CSP导入PKCS#12证书,同时将导入公私钥对。在该函数中,如果有根证书,将忽略根证书
// 仅用于windows 2000及其以上版本
// IN LPVOID hContext:PC/SC上下文
// IN LPCTSTR szReader:读卡器名字
// IN LPCTSTR szUserPin:HaiKey的用户口令
// IN LPCTSTR szContainerName:密钥容器名字,如果szContainerName为NULL或长度为0,则在函数内部生成GUID做为密钥容器的名字
//                             密钥容器名字的长度最长为MAX_CON_NAME_LEN
// IN BYTE *pbP12Data:PKCS#12证书数据
// IN DWORD dwP12DataLen:PKCS#12证书数据的长度
// IN LPCTSTR szP12PWD:PKCS#12证书的保护口令
// OUT BYTE *pbRetryNum:当HaiKey的用户口令错误时,返回用户口令还能重试的次数
// 返回0成功,其它失败
DWORD _stdcall HC_CSPImportP12Cert
(
	IN LPVOID hContext,
	IN LPCTSTR szReader,
	IN LPCTSTR szUserPin,
	IN LPCTSTR szContainerName,
	IN BYTE *pbP12Data,
	IN DWORD dwP12DataLen,
	IN LPCTSTR szP12PWD,
	OUT BYTE *pbRetryNum
);

// DES的ECB运算,支持DES、3DES、3DES_112
// IN CONST BYTE *pbKey:DES密钥
// IN DWORD dwKeyLen:DES密钥的长度,可以为8、16或24
// IN DWORD dwMode:加密或解密模式,为ENCRYPT_MODE(加密)或DECRYPT_MODE(解密)
// IN CONST BYTE *pbInData:输入数据
// IN DWORD dwDataLen:数据长度,必须为8的整数倍,输入数据长度与输出数据长度相等
// OUT BYTE *pbOutData:输出数据
// 返回0成功,其它失败
DWORD _stdcall HC_DESEcb
(
	IN CONST BYTE *pbKey,
	IN DWORD dwKeyLen,
	IN DWORD dwMode,
	IN CONST BYTE *pbInData,
	IN DWORD dwDataLen,
	OUT BYTE *pbOutData
);
	
// DES的CBC运算,支持DES、3DES、3DES_112,采用PKCS#5补码
// IN CONST BYTE *pbKey:DES密钥
// IN DWORD dwKeyLen:DES密钥的长度,可以为8、16或24
// IN BYTE bIV[8]:初始向量,长度必须为8字节
// IN DWORD dwMode:加密或解密模式,为ENCRYPT_MODE(加密)或DECRYPT_MODE(解密)
// IN CONST BYTE *pbInData:输入数据
// IN DWORD dwInDataLen:输入数据长度,解密时,必须是8的整数倍
// OUT BYTE *pbOutData:输出数据
// IN OUT DWORD *pdwOutDataLen:输入时,为pbOutData的缓冲区长度,必须足够大;输出时,为输出数据长度
//                              加密时,输出数据长度可能比输入数据长度要长
//                              解密时,输出数据长度可能比输入数据长度要短
// 返回0成功,其它失败
DWORD _stdcall HC_DESCbc
(
	IN CONST BYTE *pbKey,
	IN DWORD dwKeyLen,
	IN BYTE bIV[8],
	IN DWORD dwMode,
	IN CONST BYTE *pbInData,
	IN DWORD dwInDataLen,
	OUT BYTE *pbOutData,
	IN OUT DWORD *pdwOutDataLen
);
	
// SHA1
// IN CONST BYTE *pbData:输入数据
// IN DWORD dwDataLen:输入数据长度
// OUT BYTE bHash[20]:Hash值
// 返回0成功,其它失败
DWORD _stdcall HC_SHA1
(
	IN CONST BYTE *pbData,
	IN DWORD dwDataLen,
	OUT BYTE bHash[20]
);

// MD5
// IN CONST BYTE *pbData:输入数据
// IN DWORD dwDataLen:输入数据长度
// OUT BYTE bHash[16]:Hash值
// 返回0成功,其它失败
DWORD _stdcall HC_MD5
(
	IN CONST BYTE *pbData,
	IN DWORD dwDataLen,
	OUT BYTE bHash[16]
);

// 写密钥,密钥类型可以是DES、3DES_112(16字节)、SSF33密钥
// IN LPVOID hContext:PC/SC上下文
// IN LPCTSTR szReader:读卡器名字
// IN LPCTSTR szSOPin:HaiKey的管理员口令
// IN DWORD dwKeyType:密钥类型,为HT_DES_KEY、HT_3DES_112_KEY、HT_SSF33_KEY之一
// IN DWORD dwUserRight:密钥的使用权限,可以为HT_SO_PIN、HT_USER_PIN或HT_NEEDNT_PIN之一
// IN BYTE *pbKey:密钥值
// IN DWORD dwKeyLen:密钥长度
// OUT BYTE *pbRetryNum:当HaiKey的用户口令错误时,返回用户口令还能重试的次数
// 返回0成功,其它失败
DWORD _stdcall HC_WriteKey
(
	IN LPVOID hContext,
	IN LPCTSTR szReader,
	IN LPCTSTR szSOPin,
	IN DWORD dwKeyType,
	IN DWORD dwUserRight,
	IN BYTE *pbKey,
	IN DWORD dwKeyLen,
	OUT BYTE *pbRetryNum
);
	
// DES硬件ECB加解密
// IN LPVOID hContext:PC/SC上下文
// IN LPCTSTR szReader:读卡器名字
// IN DWORD dwPinType:读文件时要使用的口令类型,可以为HT_SO_PIN、HT_USER_PIN或HT_NEEDNT_PIN之一
// IN LPCTSTR szPin:读文件时需要的口令,当dwPinType为HT_NEEDNT_PIN时,忽略该参数
// IN DWORD dwMode:加密或解密模式,为ENCRYPT_MODE(加密)或DECRYPT_MODE(解密)
// IN CONST BYTE *pbInData:输入数据
// IN DWORD dwDataLen:数据长度,必须为8的整数倍,输入数据长度与输出数据长度相等
// OUT BYTE *pbOutData:输出数据
// OUT BYTE *pbRetryNum:当HaiKey的口令错误时,返回口令还能重试的次数
// 返回0成功,其它失败
DWORD _stdcall HC_HWDESEcb
(
	IN LPVOID hContext,
	IN LPCSTR szReader,
	IN DWORD dwPinType,
	IN LPCTSTR szPin,
	IN DWORD dwMode,
	IN BYTE *pbInData,
	IN DWORD dwDataLen,
	OUT BYTE *pbOutData,
	OUT BYTE *pbRetryNum
);

// 3DES_112硬件ECB加解密
// IN LPVOID hContext:PC/SC上下文
// IN LPCTSTR szReader:读卡器名字
// IN DWORD dwPinType:读文件时要使用的口令类型,可以为HT_SO_PIN、HT_USER_PIN或HT_NEEDNT_PIN之一
// IN LPCTSTR szPin:读文件时需要的口令,当dwPinType为HT_NEEDNT_PIN时,忽略该参数
// IN DWORD dwMode:加密或解密模式,为ENCRYPT_MODE(加密)或DECRYPT_MODE(解密)
// IN CONST BYTE *pbInData:输入数据
// IN DWORD dwDataLen:数据长度,必须为8的整数倍,输入数据长度与输出数据长度相等
// OUT BYTE *pbOutData:输出数据
// OUT BYTE *pbRetryNum:当HaiKey的口令错误时,返回口令还能重试的次数
// 返回0成功,其它失败
DWORD _stdcall HC_HW3DES112Ecb
(
	IN LPVOID hContext,
	IN LPCSTR szReader,
	IN DWORD dwPinType,
	IN LPCTSTR szPin,
	IN DWORD dwMode,
	IN BYTE *pbInData,
	IN DWORD dwDataLen,
	OUT BYTE *pbOutData,
	OUT BYTE *pbRetryNum
);

// SSF33硬件ECB加解密
// IN LPVOID hContext:PC/SC上下文
// IN LPCTSTR szReader:读卡器名字
// IN DWORD dwPinType:读文件时要使用的口令类型,可以为HT_SO_PIN、HT_USER_PIN或HT_NEEDNT_PIN之一
// IN LPCTSTR szPin:读文件时需要的口令,当dwPinType为HT_NEEDNT_PIN时,忽略该参数
// IN DWORD dwMode:加密或解密模式,为ENCRYPT_MODE(加密)或DECRYPT_MODE(解密)
// IN CONST BYTE *pbInData:输入数据
// IN DWORD dwDataLen:数据长度,必须为16的整数倍,输入数据长度与输出数据长度相等
// OUT BYTE *pbOutData:输出数据
// OUT BYTE *pbRetryNum:当HaiKey的口令错误时,返回口令还能重试的次数
// 返回0成功,其它失败
DWORD _stdcall HC_SSF33Ecb
(
	IN LPVOID hContext,
	IN LPCSTR szReader,
	IN DWORD dwPinType,
	IN LPCTSTR szPin,
	IN DWORD dwMode,
	IN BYTE *pbInData,
	IN DWORD dwDataLen,
	OUT BYTE *pbOutData,
	OUT BYTE *pbRetryNum
);
	

#ifdef __cplusplus
}
#endif
		

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -