3.2.5 SignFile(对文件进行签名)
函数名称:
BOOL SignFile(BSTR
bstrInFileName,
BSTR
bstrOutFileName,
BOOL
bDetached,
BOOL
bEncoded)
功能说明:
对文件进行签名
参数说明:
bstrInFileName
[in]
要签名文件的路径
bstrOutFileName
[in]
输出签名文件路径
bDetached
[in]
签名是否包含原文,FALSE
包含原文,TRUE
不包含原文
bEncoded
[in]
签名是否编码,
TRUE为编码
返回值:
签名成功返回TRUE,否则返回FALSE
说明:
如果失败,可用GetLastError
()查看具体原因。
3.2.6 VerifyFile(验证签名文件)
函数名称:
BOOL VerifyFile (BSTR
bstrSignedFilePath,
BSTR
bstrDataFilePath,
BOOL
bDetached,
BOOL bEncoded,
BOOL
bIsCheckedCert)
功能说明:
验证签名文件
参数说明:
bstrSignedFilePath
[in]
签名文件路径
bstrDataFilePath
[in]
输出签名原文文件路径
bDetached
[in]
签名是否包含原文,FALSE
包含原文,TRUE
不包含原文
bEncoded
[in]
签名是否编码,
TRUE为编码
bIsCheckedCert
[in]
是否验证签名证书,
TRUE验证
返回值:
验证通过为TRUE
否则为FALSE
说明:可用GetLastError查看错误
3.2.7 GetSignerCertInfo(获取签名证书信息)
函数名称:
BSTR
GetSignerCertInfo(short nInfoType, BSTR
bstrKeyID)
功能说明:
获取签名证书信息
参数说明:
nInfoType
[in] 属性信息代码(设定搜索方式)
nInfoType = 0 图形界面显示证书(Common Name)
nInfoType = 1 证书主题(Subject
Name)
nInfoType = 2 证书序列号(Serial
Number)
nInfoType = 3 证书颁发者(Issue
Name)
nInfoType = 4 证书主题密钥标识(Subject
Unique identifiability)
bstrKeyID
[in] 属性信息关键字
当nInfoType = 1,返回证书主题中的指定项。
如:GetSignerCertInfo(1,”CN”)
nInfoType为其他值时,暂无意义为保留字段。
返回值:
返回签名证书的信息
,失败返回“”
3.3 加密/解密
此部分函数完成对字符串及文件进行加,解密的工作。
对字符串/文件进行加密时,首先要设置接受者的证书AddRecipientCert(),然后调用EncryptString
()/EncryptFile ()对字符串/文件进行加密,并返回加密的密文。
对字符串/文件解密,对于字符串操作可以调用调用解密函数DecryptString
() 得原文,对于文件操作调用DecryptFile()并设置原文输出路径
,返回值为,TRUE或 FALSE
,如果验证通过,在原文输出路径得到加密的原文。
还可以调用GetRecipientCertInfo()来查看接受者证书的信息。
目前,加密所采用的算法为3DES。
3.3.1
AddRecipientCert(设置加密数字信封接收者的证书)
函数名称:
BOOL
AddRecipientCert(short nFindType, BSTR
bstrKey)
功能说明:
设置加密数字信封接收者的证书
参数说明:
nFindType
[in]
查询证书方式代码
nFindType = 0:
图形界面查询证书
nFindType = 1: 根据主题查询证书
nFindType = 2:
根据序列号查询证书
strKey
[in] 查找键字
当nFindType = 0,该参数没用
当nFindType = 1,输入全部或部分证书主题。如CN=singer
当nFindType = 2, 输入证书序列号,注意序列号中应不含空格
返回值:
设置成功为true,否则为
false
3.3.2 EncryptString(用证书加密字符串)
函数名称:
BSTR EncryptString(BSTR bstrMessage)
功能说明:
用证书加密字符串
参数说明:
bstrMessage
[in]
要加密的原文
返回值:
加密后的字符串,失败返回null
说明:
调用该函数前,一定要设置接受者的证书,即要调用此AddRecipientCert()函数。
3.3.3 DecryptString(解密已被加密字符串)
函数名称:
BSTR
DecryptString(BSTR bstrEncrypedMessage)
功能说明:
解密已被加密字符串
参数说明:
bstrEncrypedMessage
[in]
被加密的字符串
返回值:
解密后的字符串,失败返回null
3.3.4 EncryptFile(用证书加密文件)
函数名称:
BOOL EncryptFile(BSTR
bstrInFilePath,
BSTR bstrEncryptedFilePath,
BOOL bEncoded)
功能说明:
对文件进行非对称加密
参数说明:
bstrInFilePath
[in]
要加密的文件路径
bstrEncryptedFilePath
[in]
加密后的文件路径
bEncoded
[in]
密文是否编码,
TRUE为编码
返回值:
加密成功返回TRUE,否则为FALSE
说明:
调用该函数前,一定要设置接受者的证书,即要调用此AddRecipientCert()函数
3.3.5 DecryptFile(解密文件)
函数名称:
BOOL DecryptFile (BSTR
bstrEncrypedFilePath,
BSTR bstrDecryptedFilePath,
BOOL bEncoded)
功能说明:
对非对称加密的文件解密
参数说明:
bstrEncrypedFilePath
[in]
要解密的文件路径
bstrDecryptedFilePath
[in]
解密后的文件路径
bEncoded
[in]
密文是否编码, TRUE为编码
返回值:
解密成功返回TRUE,否则为FALSE
说明:
如果失败,可用GetLastError
()查看具体原因。
3.3.6 GetRecipientCertInfo(获取接收者证书信息)
函数名称:
BSTR
GetRecipientCertInfo( short n
Index,
Short nInfoType,
BSTR bstrKeyID)
功能说明:
获取接收者证书信息
参数说明:
nIndex
[in]
接收证书索引
nInfoType
[in]
属性信息代码(设定搜索方式)
nInfoType = 0
图形界面显示证书(Common
Name)
nInfoType = 1
证书主题(Subject
Name)
nInfoType = 2
证书序列号(Serial
Number)
nInfoType = 3
证书颁发者(Issue
Name)
nInfoType = 4
证书主题密钥标识(Subject
Unique identifiability)
bstrKeyID
[in]
属性信息关键字
当nInfoType
= 0,该参数不添或为“”
当nInfoType
= 1,输入全部或部分证书主题。如CN=singer
当nInfoType
= 2,输入证书序列号,注意序列号中应不含空格
当nInfoType
= 3,输入全部或部分证书颁发者信息。如CN=***,OU=**
当nInfoType
= 4,证书主题密钥标识(Subject
Unique identifiability)
返回值:
返回接收者证书信息,失败返回“”
3.4 签名加密
首先使用AddRecipientCert来获取加密证书,用GetSignerCert来获得签名证书,然后调用签名加密函数即可。
3.4.1 SetSignerCert(设置签名证书选择方式)
函数名称:
BOOL
SetSignerCert(short nFindType, BSTR
bstrKey)
功能说明:
设置签名证书选择方式
参数说明:
nFindType
[in]
查询证书方式代码
nFindType = 0:
图形界面查询证书
nFindType = 1: 根据主题查询证书
nFindType = 2:
根据序列号查询证书
strKey
[in] 查找键字
当nFindType = 0,该参数没用
当nFindType = 1,输入全部或部分证书主题。如CN=singer
当nFindType = 2,输入证书序列号,注意序列号中应不含空格
返回值:
设置成功返回TRUE,否则返回FALSE
说明:
如果失败,可用GetLastError
()查看具体原因
4.4.2 AddRecipientCert(设置加密数字信封接收者的证书)
函数名称:
BOOL
AddRecipientCert(short nFindType, BSTR
bstrKey)
功能说明:
设置加密数字信封接收者的证书
参数说明:
nFindType
[in]
查询证书方式代码
nFindType = 0:
图形界面查询证书
nFindType = 1: 根据主题查询证书
nFindType = 2:
根据序列号查询证书
strKey
[in] 查找键字
当nFindType = 0,该参数没用
当nFindType = 1,输入全部或部分证书主题。如CN=singer
当nFindType = 2, 输入证书序列号,注意序列号中应不含空格
返回值:
设置成功为true,否则为
false
4.4.3 SignAndEncryptString(字符串签名加密)
函数名称:BSTR
SignAndEncryptString(BSTR bstrMessage);
功能说明:对字符串进行签名加密操作
参数说明:bstrMessage:要进行签名加密操作的字符串
返回值:返回签名加密密文信息,失败返回NULL
说明:失败可用GetLastError查看错误信息。
4.4.4 DecryptAndVerifyString(字符转解密验证签名)
函数名称:BSTR
DecryptAndVerifyString(BSTR
bstrSignature, boolean bIsCheckedCert)
功能说明:对字符串解密验证签名
参数说明:[in]
bstrSignature:签名加密的密文字符串
[in]
bIsCheckedCert
是否检测签名证书
返回值:返回签名加密密文信息,失败返回NULL
说明:失败可用GetLastError查看错误信息。
4.4.5
SignAndEncryptFile(文件签名加密)
函数名称:boolean
SignAndEncryptFile(BSTR pszInFileName,
BSTR pszOutFileName, boolean bEncoded);
功能说明:对文件进行签名加密操作
参数说明:pszInFileName:要进行签名加密操作的文件路径
pszOutFileName生成签名加密密文信息文件的文件路径
bEncoded
是否需要编码。
返回值:操作成功返回TRUE,否则返回FALSE
说明:失败可用GetLastError查看错误信息。
4.4.6
DecryptAndVerifyFile(文件解密验证签名)
函数名称:boolean
DecryptAndVerifyFile(BSTR bstrInFilePath,
BSTR bstrOutFilePath, boolean bEncoded,
boolean bIsCheckedCert);
功能说明:对文件进行解密验证签名操作
参数说明:bstrInFilePath:密文文件路径
bstrOutFilePath:明文文件路径
bEncoded:是否为编码文件
bIsCheckedCert:是否需要检验证书
返回值:成功返回TRUE,失败返回FALSE
说明:失败可用GetLastError查看错误信息。
4.5 错误报告
4.5.1 GetLastError(返回错误信息)
函数名称:
BSTR GetLastError()
功能说明:
返回错误消息
返回值:
错误信息
说明:
此函数可在上述函数调用过程中或查看执行结果时调用,查看错误信息。