返回首页
 
 
1、控件简介

ocx控件是运行在windows下的证书应用安全控件,支持证书解析、证书有效性验证、加密及解密,签名和验证等功能。

C/S结构调用方式为首先注册控件,然后直接调用即可。

B/S结构调用方式为将控件的CAB包放在指定目录下,在网页脚本里引用该CAB包,创建控件对象后进行调用。

具体调用方法,请参考附件示例,该控件支持asp.netjspWeb开发语言和VBVC++DelphiPowerBuilder等多种windows下编程语言。

操作系统支持:WIN98/2000/XP/2003等各种版本操作系统。

IE支持:IE5.0或以上版本。

2、安装说明

C/S结构使用安装方法:

      点击开始->点击运行->输入”regsvr32 capicom.dll”->点击回车

点击开始->点击运行->输入”regsvr32 AXSecurity.ocx”->点击回车,控件安装成功。

         制作应用系统安装包时,将capicom.dll及AXSecurity.ocx安装到系统目录并注册。

B/S结构使用安装方法:

将AXSecurity.cab放到接口调用页面目录下,第一次运行网页系统将会提示是否安装,点击安装即可。

    注意:Web方式使用该控件,为防止IE下载该控件出安全警告,建议首先用户安装安信CA的根证书。

3、控件接口说明

   3.1 证书解析

    3.1.1 OpenCert(打开证书库中证书)

       

函数名称:

BOOL OpenCert(short nFindType, BSTR strKey, short nKeyUsage)

功能说明

按照选定的搜索模式查找证书

参数说明

    nFindType

        [in] 查询证书方式代码

    nFindType = 0: 图形界面查询证书

        nFindType = 1: 根据主题查询证书

        nFindType = 2: 根据序列号查询证书

strKey

[in] 查找键字

        当nFindType = 0,该参数没用

        当nFindType = 1,输入全部或部分证书主题。如CN=singer

        当nFindType = 2, 输入证书序列号,注意序列号中应不含空格

nKeyUsage

[in] 密钥用途代码

        nKeyUsage = 0: 不区分密钥用途

        nKeyUsage = 1: 用于签名

        nKeyUsage = 2: 用于加密 

返回值: 

    找到证书 ,返回TRUE; 否则,返回FALSE ,可用GetLastError 查看具体原因。

说明:

       执行成功后使用GetCertInfo()可以获取的证书的相关信息

    3.1.2 LoadCert(从证书文件打开证书)

函数名称:

boolean LoadCert(BSTR bstrFileName, BSTR bstrPassword)

功能说明

从证书文件打开证书

参数说明 

    bstrFileName

        [in] 证书文件的路径

    bstrPassword

        [in] 证书的密码

返回值:  

打开成功TRUE,否则返回FALSE

说明:  

如果失败,可用GetLastError ()查看具体原因。

    3.1.3 GetCertInfo(解析证书属性信息)

函数名称:

BSTR GetCertInfo(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 = 0,该参数不添或为“”

        当nInfoType = 1,输入全部或部分证书主题。如CN=singer

        当nInfoType = 2,输入证书序列号,注意序列号中应不含空格

        当nInfoType = 3,输入全部或部分证书颁发者信息。如CN=***,OU=**

nInfoType = 4,证书主题密钥标识(Subject Unique identifiability)

返回值:  

证书的相关信息,失败返回“”

  3.2 签名/验证

对字符串/文件进行签名时,首先要设置签名证书SetSignerCert(),然后调用SignString()/SignFile()对字符串/文件进行签名,并返回签名的密文。

对字符串/文件验证时,调用验证函数VerifyString ()/VerifyFile(),返回值为,TRUE或 FALSE ,如果验证通过,对于字符串操作可以调用GetSignedString() 得到签名原文;对于文件操作可以在验证函数中设置原文输出路径得到签名原文。

还可以调用GetSignerCertInfo()查看获取签名证书信息。

目前,签名所采用的算法为MD5。

3.2.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 ()查看具体原因。

3.2.2 SignString(对字符串签名)

函数名称:

BSTR SignString(BSTR bstrMessage, BOOL bDetached)

功能说明

对字符串签名

参数说明 

bstrMessage         

[in] 要签名的字符串

bDetached     

[in] 签名是否包含原文,FALSE 包含原文,TRUE 不包含原文

返回值:  

成功返回签名结果,否则为null

说明:    

签名前应调用SetSignerCert()设置签名函数。

3.2.3 VerifyString(验证签名字符串)

函数名称:

BOOL VerifyString(BSTR      bstrSignature,

BOOL  bDetached,             

BOOL  bIsCheckedCert,

BSTR  bstrMessage)   

功能说明:签证签名字符串

参数说明:

bstrSignature 

[in] 包含签名的字符串

          bDetached       

[in] 签名是否包含原文,FALSE 包含原文,TRUE 不包含原文

bIsCheckedCert    

[in] 是否验证签名证书, TRUE验证 

bstrMessage         

[in] 签名原文,bDetachedTRUE,输入签名原文,否则为null

返回值:  验证通过返回TRUE ,否则为FALSE

说明:    如果失败,可用GetLastError ()查看具体原因。

3.2.4 GetSigndString(返回验证签名后取到的原文)

函数名称:

BSTR GetSignedString()

    功能说明:

返回验证签名后取到的原文

    返回值:  

签名的原文

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()

    功能说明:

         返回错误消息

    返回值: 

           错误信息

  说明:   

此函数可在上述函数调用过程中或查看执行结果时调用,查看错误信息。