API(Java版)程序员手册_第1页
API(Java版)程序员手册_第2页
API(Java版)程序员手册_第3页
API(Java版)程序员手册_第4页
API(Java版)程序员手册_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JIT 应用应用 Toolkits API(Java 版)程序员手册版)程序员手册JIT 版权所有版权所有(2001)吉吉 大大 正正 元元 信信 息息 技技 术术 股股 份份 有有 限限 公公 司司JilinJilin UniversityUniversity InformationInformation TechnologiesTechnologies Co.,Co., Ltd.Ltd.目 录1引言引言.41.1概述.41.2开发平台及编程语言.41.3注意事项.41.4名词解释.42系统结构系统结构.42.1接口说明.42.2配置文件说明.43数据结构数据结构.53.1基于口令产生密钥的

2、基本信息.53.2初始化 CRL 参数.53.3时间基本信息.63.4证书有效期类.73.5初始化证书信息.74全局常量定义全局常量定义.84.1标识常量.8所用到的配置文件.8文件长度及密码长度.8数据类型定义;.8信封类型定义.8证书扩展类型定义.9证书用户类型定义.9证书状态定义.9CRL验证证书方式.9证书SN类型.9证书存储方式.10加密、解密、签名 等算法.10标准扩展域.104.2错误代码.115函数说明函数说明.135.1类 JIT_ENGINE.13构造函数.13获取错误信息.14释放引擎资源.145.2类 JIT_OCSP .14构造方法.14查询证书状态.15获取错误信息

3、.16释放OCSP资源.165.3类 JIT_CRL.16构造方法.17获取CRL验证证书的方式getMode.17CRL验证证书.18验证CRL签名.18获取错误信息.19释放CRL资源.195.4类 JIT_CERTIFICATE.19构造方法.19获取证书中eMail.21获取证书颁发者.22获取证书序列号.22获取证书主题.22获取证书版本号.23获取证书有效期.23获取证书的应用类型.23获取证书编码(二进制).24获取证书的个人身份标识码.24提取所需对象标识符对应的内容.25验证证书的有效性.26验证证书的有效性(手工输入时间).26获取错误信息.27释放Certificate资

4、源.27扩展接口.285.5类 JIT_KEY.29构造方法.29产生对称密钥.29基于口令产生对称密钥.30包装密钥.30解包装密钥.31获取错误信息.31释放Key资源.325.6类 JIT_BIN.32构造方法.32数据数字签名.32验证数字签名.33数据非对称加密.34数据非对称解密.35产生数据的MAC.35验证数据的MAC.36数据文摘.37数据对称加密.38数据对称解密.38产生PKCS7数字信封.39验证PKCS7数字信封.42二进制数据转换成PEM编码.44获取错误信息.44释放bin资源.455.7类 JIT_BASE64.45构造方法.45数据数字签名.45验证数字签名.

5、46数据非对称加密.47数据非对称解密.48数据产生MAC.48验证数据的MAC.49数据文摘.50数据对称加密.51数据对称解密.51产生PKCS7数字信封.52验证PKCS7数字信封.54PEM编码转换成二进制.57获取错误信息.57释放Base64资源.575.8类 JIT_ENVFILE.58构造方法.58产生PKCS7数字信封文件.58验证PKCS7数字信封文件.61获取错误信息.62释放EnvFile资源.625.9类 JIT_LDAP.62构造方法.62获取用户证书.63释放获取的证书.64获取错误信息.64释放Ldap资源.645.10类 JIT_RANDOM.65创造随机数.

6、651 1引言引言1.1 概述概述JIT Toolkit_API(Java 版)是以吉大正元电子证书认证系统为基础,方便用户进行二次开发,整合先进的 Java 技术,提供的工具包。用户利用工具包中各种接口可以作电子证书系统客户化,电子证书应用等方面的开发工作。主要功能如下:对客户和服务器证书的操作(包括验证和获取证书内容)对用户数据的操作(包括签名、加密、数字信封和他们相对应的校验工作)对用户文件的各种操作(包括封装数字信封和验证数字信封)各种辅助操作(包括对对称密钥的操作、产生随机数、 )对 Ldap、CRL、OCSP 等各种辅助功能的操作1.2 开开发发平台平台及及编编程程语语言言开发平台

7、Windows 2000 Server编程语言JavaC+开发工具(Sun Microsystems, Inc.)Borland Jbuilder 7 EnterpriseMicrosoft Visual C+ 6.0 Enterprise Edition1.3 注意事项注意事项系统中的错误码均为负数。本接口不支持加密机,除 windwos 外不支持 key 使用除 windows 外不支持 OCSP1.4 名词解释名词解释无2 2系统结构系统结构2.1 接口说明接口说明JIT 应用 Toolkits API(Java 版)对用户提供 10 个类共 70 个接口:jit.toolkitsToo

8、lkits 主要功能类。提供各对外接口。jit.parameters结构。用于存放程序中各种用到的结构体。2.2 配置文件说明配置文件说明JIT 应用 Toolkits API(JNI 版)共需要 5 个配置文件,说明如下:cryptodevice.ini加密设备配置文件。文件证书使用时修改 DeviceCount 对应软加密库 ID,DeviceCount =1Key 证书使用时修改 DeviceCount 对应 Key 的 IDDeviceCount =2两种证书同时使用时修改 DeviceCount 对应 Key 的 IDDeviceCount =2MultiDeviceFile.ini

9、管理员证书介质使用 JPF 文件时使用此配置文件。 (无论那种情况该文件必须存在)MultiDeviceCard.ini管理员证书介质使用 USB Key 时使用此文件。 (无论那种情况该文件必须存在)card.iniUSB Key 的配置文件,通常不需要用户改动。jitocsp.ini与 OCSP 服务器连接时需要的一些连接参数,用户可根据实际情况进行改动jcaapi.ini与 Ldap 服务器连接时需要的一些连接参数,用户可根据实际情况进行改动3 3数据结构数据结构3.1 基于口令产生密钥的基本信息基于口令产生密钥的基本信息类名称:类名称:JIT_PBE_PARAMS功能:功能:存储 PK

10、CS5 基于口令产生密钥的参数。声明:声明:public class JIT_PBE_PARAMS public byte sPassword; public byte bSalt; public int lIteration;public JIT_PBE_PARAMS() 数据成员:数据成员:pPassword 口令的内容。pSalt盐值的内容。 (PKCS5 基于口令产生密钥的协商好的附加信息)nIterationPKCS5 基于口令密钥产生的循环叠代次数。3.2 初始化初始化 CRL 参数参数类名称:类名称:JIT_CRLPARAM功能:功能:存储初始化 CRL 的参数。声明:声明:pu

11、blic class JIT_CRLPARAM public byte szCRLFile; public int nMode; public JIT_CRLPARAM() 数据成员:数据成员:szCRLFile 用户指定的 CRL 文件路径。这个路径必须是绝对路径。这个路径不能为 NULL。在线方式验证,这个路径是下载的 CRL 存储在本地的 CRL 文件路径。离线方式验证,这个路径是验证证书时使用的 CRL 文件路径。nMode通过 CRL 验证证书的方式。包括在线方式验证和离线方式验证。在线方式验证设置为 VERIFY_MODE_ONLINE离线方式验证设置为 VERIFY_MODE_O

12、FFLINE3.3 时间基本信息时间基本信息类名称:类名称:JIT_Time功能:功能:存储证书中时间的值声明:声明: public class JIT_Timepublic long lType; public long diffGMT; public long year; public long month; public long day; public long hour; public long min; public long second;public JIT_Time() 数据成员:数据成员:lType 证书中时间的编码类型。1:格林威治时间 2:本地时间diffGMT 本地时

13、间和格林威治时间的差值。本地时间比格林威治时间早用负数表示。本地时间比格林威治时间晚用正数表示。0表示格林威治时间。year 本地时间年month本地时间月day 本地时间日hour本地时间时min 本地时间分second本地时间秒3.4 证书有效期类证书有效期类类名称:类名称:JIT_Valid功能功能:存储证书的有效期声明:声明:public class JIT_Validpublic JIT_Time notBeforpublic JIT_Time notAfterpublic JIT_Valid() 数据成员:数据成员:notBefor证书有效期开始的时间notAfter证书有效期结束

14、的时间3.5 初始化证书信息初始化证书信息类名称:类名称:JIT_CERTDEVPARAM(保留未用)功能功能:存储了从非数据流形式初始化证书时所需要的信息声明:声明: public class JIT_CERTDEVPARAM public byte szDevInfo; public byte szPWD; public JIT_CERTDEVPARAM() 数据成员:数据成员:szDevInfo 描述证书存储的描述串。描述串由两部分组成。第一部分是存储介质描述符,第二部分是证书存储路径。存储介质描述符:“file:/”表示证书的存储介质是磁盘。“usb:/”表示证书的存储介质是 USB

15、接口设备。“com1:/”表示证书的存储介质是 COM 接口设备。证书存储路径:表示证书存储的位置和名字例如:“file:/d:mycert.jpf”表示 D 盘根目录下的 mycert.jpf 文件“file:/d:mycert.pfx”表示 D 盘根目录下的 mycert.pfx 文件“file:/d:mycert.cer”表示 D 盘根目录下的 mycert.cer 文件“usb:/.jpf”表示 USB 接口中的.jpf 文件“usb:/.jpf”表示 USB 接口中的.jpf 文件szPWD 证书密码4 4全局常量定义全局常量定义该类定义 API 中的常量。在本文档中引用常量时直接引

16、用常量名。4.1 标识常量标识常量4.1.14.1.1 所用到的配置文件所用到的配置文件 public static String CRYPT_INI_FILE_NAME=cryptodevice.ini; public static String OCSP_INI_FILE_NAME=jitocsp.ini; public static String CARD_INI_FILE_NAME=card.ini; public static String MULITYCARD_FILE_NAME=MultiDeviceCard.ini; public static String MULITYFIL

17、E_FILE_NAME=MultiDeviceFile.ini; public static String JCAAPI_INI_FILE_NAME =jcaapi.ini;4.1.24.1.2 文件长度及密码长度文件长度及密码长度文件长度 public static intFILE_NAME_LEN=256;密码长度 public static intPWD_LEN=128;4.1.34.1.3 数据类型定义数据类型定义; ;Base64 类型 public static intDATA_TYPE_BASE64=0;Bin 类型 public static intDATA_TYPE_BIN=

18、1;4.1.44.1.4 信封类型定义信封类型定义签名信封 public static intENVELOP_SIGN=0;加密信封 public static intENVELOP_ENC=1;既签名又加密信封 public static intENVELOP_SIGN_ENC=2;文摘信封 public static intENVELOP_DIGEST=3;MAC 信封 public static intENVELOP_MAC=4;4.1.54.1.5 证书扩展类型定义证书扩展类型定义jpf 管理员证书文件 public static intCERT_EXP_TYPE_JPF =0;pfx

19、 包含私钥证书文件 public static intCERT_EXP_TYPE_PFX=1;cer 公钥证书文件 public static intCERT_EXP_TYPE_CER=2;4.1.64.1.6 证书用户类型定义证书用户类型定义个人单证书 public static intCERT_USE_TYPE_SINGLE =0;jpf 双证书 public static intCERT_USE_TYPE_DOUBLE=1;电子邮件保护证书 public static intCERT_USE_TYPE_MAIL =2;服务器证书 public static intCERT_USE_TYP

20、E_SERVER=3;CA 证书 public static intCERT_USE_TYPE_CA =4;4.1.74.1.7 证书状态定义证书状态定义正常状态 public static intCERT_STATUS_NOMAL =0;证书已注销 public static intCERT_STATUS_REVOKE =1;未知状态 public static intCERT_STATUS_UNKNOWN=2;4.1.84.1.8 CRLCRL 验证证书方式验证证书方式在线验证证书 public static intVERIFY_MODE_ONLINE =0;离线验证证书 public s

21、tatic intVERIFY_MODE_OFFLINE =1;4.1.94.1.9 证书证书 SNSN 类型类型签名证书 public static intCERT_SN_TYPE_SIGN =1;加密证书 public static intCERT_SN_TYPE_ENC =2;签名加密证书 public static intCERT_SN_TYPE_SIGNENC =3;4.1.104.1.10证书存储方式证书存储方式文件方式存储 public static int CERT_DEV_TYPE_FILE =0;USB Key 中存储 public static int CERT_DEV_

22、TYPE_USB =1;COM 接口设备存储 public static int CERT_DEV_TYPE_COM =2;4.1.114.1.11加密、解密、签名加密、解密、签名 等算法等算法 RSA 加密解密; public static int CT_ALGO_RSA_PKCS =0 x00000001;MD2WithRSA 签名验证 public static int CT_ALGO_MD2_RSA_PKCS =0 x00000004;MD5WithRSA 签名验证 public static int CT_ALGO_MD5_RSA_PKCS =0 x00000005;SHA1With

23、RSA 签名验证 public static int CT_ALGO_SHA1_RSA_PKCS =0 x00000006;MD2 文摘 public static int CT_ALGO_MD2 = 0 x00000200;MD5 文摘 public static int CT_ALGO_MD5 = 0 x00000210;SHA1 文摘 public static int CT_ALGO_SHA_1 = 0 x00000220;RC2 ECB 方式加密解密 public static int CT_ALGO_RC2_ECB = 0 x00000101;RC4 加密解密 public sta

24、tic int CT_ALGO_RC4 = 0 x00000111;DES ECB 方式加密解密 public static int CT_ALGO_DES_ECB = 0 x00000121;3DES ECB 方式加密解密 public static int CT_ALGO_DES3_ECB = 0 x00000132;4.1.124.1.12标准扩展域标准扩展域public static int CERT_EXT_OID_IDENTIFYCARD=12861171; public static int CERT_EXT_OID_INSURANCENUM=12861172; public s

25、tatic int CERT_EXT_OID_ORGANIZATIONCODE=12861173; public static int CERT_EXT_OID_ICREGNUM =12861174; public static int CERT_EXT_OID_TAXNUM =12861175; 4.2 错误代码错误代码成功public static intCT_SUCCESS=0参数错误public static intCT_ERR_PARAM =-9000内存错误public static intCT_ERR_MEMORY=-9001内存分配少public static intCT_ER

26、R_BUFFER_TOO_SMALL=-9090加密库初始化错误public static intCT_ERR_CRYPTODEV_INIT=-9999不能打开加密库public static intCT_ERR_CRYPTO_SESSION = -9002不能访问加密设备public static intCT_ERR_CRYPTODEV_NO_ACCESS =-9003 OCS 引擎未初始化public static intCT_ERR_OCSP_ENGINE_NOT_INIT = -9004证书不完整public static intCT_ERR_CERT_NOT_INTEGRITY =

27、-9005取证书状态失败public static intCT_ERR_GET_CERT_STATUS = -9006OCSP 初始化错误public static intCT_ERR_OCSP_INIT = -9007 LDAP 错误public static intCT_ERR_ACCESS_LDAP = -9008 CRL 不完整public static intCT_ERR_CRL_NOT_INTEGRITY = -9009证书颁发者或主题错误public static intCT_ERR_ISSUER_OR_SUBJECT = -9010 CRL 引擎未初始化public stati

28、c intCT_ERR_CRL_ENGINE_NOT_INIT = -9011证书链不完整public static intCT_ERR_CERT_CHAIN_NOT_INTEGRITY=-9012证书过期public static intCT_ERR_CERT_OVER = -9013根证书无效public static intCT_ERR_ROOT_CERT_INVALID = -9014 CRL 初始化错误public static intCT_ERR_CRL_INIT = -9015口令错误public static intCT_ERR_PWD = -9016打开文件错误public

29、static intCT_ERR_FILE_OPEN = -9017文件不存在public static intCT_ERR_FILE_NO_EXIST = -9018证书不存在public static intCT_ERR_CERT_NOT_EXIST = -9019证书不匹配public static intCT_ERR_CERT_NO_MATCH = -9020私钥不存在public static intCT_ERR_PRIVATEKEY_NO_EXIST =-9021算法和密钥不匹配public static intCT_ERR_KEY_AND_ALGO_NO_MATCH =-9022

30、密钥不存在 public static intCT_ERR_KEY_NO_EXIST = -9023不支持的算法public static intCT_ERR_ALGO_NOT_SUPPORT = -9024数据长度不匹配public static intCT_ERR_DATA_LENGTH_NO_MATCH =-9025证书和算法不匹配public static intCT_ERR_CERT_AND_ALGO_NO_MATCH =-9026 签名失败public static intCT_ERR_SIGNATURE =-9027 验证签名失败public static intCT_ERR_V

31、ERIFY_SIGNATURE =-9028加密失败public static intCT_ERR_ENCRYPT =-9029 解密失败public static intCT_ERR_DECRYPT =-9030产生 MAC 失败public static intCT_ERR_MAC =-9031 验证 MAC 失败public static intCT_ERR_VERIFY_MAC =-9032产生密钥失败public static intCT_ERR_GENERATEKEY =-9033 产生摘要失败public static intCT_ERR_DIGEST =-9034数据格式错误p

32、ublic static intCT_ERR_DATA_FORMAT =-9040验证模式错误public static intCT_ERR_VERIFY_MODE =-9041Email 地址不存在public static intCT_ERR_NO_EMAIL_ADDRESS =-9042/cryptodevice.ini 文件不存在public static intCT_ERR_NO_CRYPT_INI =-9043jitocsp.ini 文件不存在public static intCT_ERR_NO_OCSP_INI =-9044jcaapi.ini 文件不存在public stati

33、c intCT_ERR_NO_JCAAPI_INI =-9045card.ini 文件不存在public static intCT_ERR_NO_CARD_INI =-9046MultiDeviceCard.ini 文件不存在public static intCT_ERR_NO_MULCARD_INI =-9047MultiDeviceFile.ini 文件不存在public static intCT_ERR_NO_MULFILE_INI =-9048初始化 LDAP 错误public static intCT_ERR_LDAP_INIT =-9049LDAP 引擎未初始化public sta

34、tic intCT_ERR_LDAP_ENGINE_NOT_INIT =-9050产生随机数失败public static intCT_ERR_GEN_RANDOM =-9051 没有匹配的 OIDpublic static intCT_ERR_OID_NO_MATCH =-9053 证书初始化错误 public static intCT_ERR_CERT_INIT =-9081引擎初始化错误 public static intCT_ERR_ENGINE_INIT =-90805 5函数说明函数说明5.1 类类 JIT_Engine这个类提供初始化 JIT_CA30 应用 API 引擎的功能。

35、用户在使用 JIT_CA30 应用API 的其它功能前,必须初始化引擎。该引擎在一个程序中只能初始化一次。它提供以下功能初始化方法。5.1.15.1.1 构造函数构造函数JIT_Engine声明:声明:public JIT_Engine(byte bWorkpath)参数:参数:in sWorkPathJIT_CA30 应用 API 的工作路径。该路径下存放需要的配置文件和 CRL根证书等。这个路径必须是绝对路径。这个路径不能为 NULL。返回值:返回值:由于构造方法无返回值,所以用户在初始化引擎后,调用 getErrcode()方法返回引擎是否初始化成功。示例:示例:byte bWorkPa

36、th = null;bWorkPath =”配置文件路径”JIT_Engine Engine = null;Engine = new JIT_Engine(bWorkPath); iRet = Engine.getErrcode();if(iRet =0)/*引擎初始化成功*/else/*引擎初始化失败,返回相应的错误码*/Engine.delete();相关主题相关主题GetLastErrDelete5.1.25.1.2 获取错误信息获取错误信息 getErrcode声明:声明:public int getErrcode()参数:参数:无返回值:返回值:函数成功时返回 0,失败时返回错误码示

37、例:示例:5.1.35.1.3 释放引擎资源释放引擎资源 delete声明:声明:public void delete();参数:参数:无返回值:返回值:无示例:示例:5.2 类类 JIT_OCSP这个类提供通过 OCSP 在线查询证书状态的功能。5.2.15.2.1 构造方法构造方法JIT_OCSP声明:声明: public int JIT_OCSP( JIT_Engine pEng, JIT_Certificate pRootCert, JIT_Certificate pServerCert)参数:参数:in pEngJIT_CA30 应用 API 引擎。用户先构造一个 JIT_Engin

38、e 的实例,然后将对象传递给方法。in pRootCertCA 的证书对象,必须先初始化 CA 证书。此参数必须非空。pServerCertOCSP 服务器证书,此参数保留(置为 null) 。返回值:返回值:由于构造方法无返回值,调用 getErrcode()方法返回错误码。注释:注释:在参数 pRootCert 中指明 CA 的证书,是用来验证用户要在线查询的证书是否是由 pRootCert 参数指定的 CA 签发的。示例:示例: .初始化引擎JIT_OCSP OCSP = null;JIT_Certificate cerRootCert = null; 初始化 CA 根证书OCSP =

39、new JIT_OCSP(Engine, cerRootCert, null); iRet = OCSP.getErrCode(); if (0 != iRet) 初始化引擎失败 else 初始化引擎成功 OCSP.delete();相关主题:相关主题:GetLastErrJIT_CertificateDelete5.2.25.2.2 查询证书状态查询证书状态getCertStatus声明:声明:public int (JIT_Certificate pCert, int iCertType)参数:参数:in pCert输入用户要在线查询的证书对象,必须先初始化该证书。此参数必须非空。in i

40、CertType输入用户要在线查询的证书的类型。如果参数 pCert 中指定的证书是双证书。则在参数 nCertType 中指明要查询的证书。nCertType证书类型证书类型数值数值CERT_SN_TYPE_SIGN签名证书1CERT_SN_TYPE_ENC加密证书2返回值:返回值:证书状态或者错误代码常量定义常量定义证书状态证书状态数值数值CERT_STATUS_NOMAL表示证书有效0CERT_STATUS_REVOKE表示证书被注销1CERT_STATUS_UNKNOWN表示证书状态未知2其他错误代码示例:示例:JIT_Certificate cerEncCert = null;初始化

41、证书iRet = OCSP.getCertStatus(cerEncCert, cerEncCert.getCertType(); if (0 iRet) 查询证书状态失败 else 返回证书状态 相关主题:相关主题:JIT_Certificate5.2.35.2.3 获取错误信息获取错误信息 getErrcode声明:声明:public int getErrcode()参数:参数:无返回值:返回值:函数成功时返回 0,失败时返回错误码示例:示例:5.2.45.2.4 释放释放 OCSPOCSP 资源资源 delete声明:声明:public void delete();参数:参数:无返回值:

42、返回值:无示例:示例:5.3 类类 JIT_CRL这个类提供通过 CRL 验证证书状态的功能。可以通过在线或离线方式验证5.3.15.3.1 构造方法构造方法 JIT_CRL声明:声明:public JIT_CRL(JIT_Engine pEng, JIT_CRLPARAM stCRLInfo)参数:参数:inpEngJIT_CA30 应用 API 引擎。用户先构造一个 JIT_Engine 的实例,然后将对象传递给方法。instCRLInfoJIT_CRLPARAM 类的引用。详见 JIT_CRLPARAM 类的定义。返回值:返回值:由于构造方法无返回值,调用 getErrcode()方法返

43、回错误码。注释:注释:此方法初始化通过 CRL 验证证书的功能和方式(在线或离线) 。示例:示例: JIT_CRLPARAM ParamCRL = new JIT_CRLPARAM(); ParamCRL.szCRLFile =“CRL 路径“; ParamCRL.nMode = 验证方式;JIT_CRL CRL = null; CRL = new JIT_CRL(Engine,ParamCRL); iRet = CRL.getErrCode(); if (0 != iRet) CRL 初始化失败 else 初始化成功 CRL.delete() ;相关主题:相关主题: delete getEr

44、rCode5.3.25.3.2 获取获取 CRLCRL 验证证书的方式验证证书的方式 getModegetMode getMode声明:声明:public int getMode()参数:参数:无返回值返回值: CRL 验证证书的方式。pnMode状态状态数值数值VERIFY_MODE_ONLINE在线0VERIFY_MODE_OFFLINE离线1其他错误代码示例:示例: iRet = CRLZX.getMode(); if(0 iRet) 获取状态失败 else 获取状态成功5.3.35.3.3 CRLCRL 验证证书验证证书verifyCert声明:声明:public int verify

45、Cert(JIT_Certificate cCert)参数:参数:in cCert输入 CRL 验证的证书(必须先初始化证书)返回值:返回值:示例:示例: JIT_Certificate cerCert = null; 初始化证书 iRet = CRL.verifyCert(cerCert); if (0 iRet) 验证失败 else 输出验证状态相关主题 JIT_Certificate5.3.45.3.4 验证验证 CRLCRL 签名签名 verifyCRL声明:声明:public int verifyCRL(byte bCertChain)参数:参数:in bCertChain 输入签发

46、 CRL 的根证书文件名(全路径)。返回值:返回值: 成功返回 0,失败返回错误代码。注释:注释:验证 CRL 签名采用离线方式验证。根证书文件必须是.p7b 文件。并且根证书 文件中的证书组必须完整。只有离线验证证书时需要验证 CRL,在线验证证书不需要验证 CRL示例:示例:byte P7BPath “根证书文件路径”pnMode状态状态数值数值CERT_STATUS_NOMAL表示证书有效0CERT_STATUS_REVOKE表示证书被注销1其他大于 0 的数未知状态小于 0 的数错误代码iRet = CRL.verifyCRL(P7BPath); if (0 != iRet) 验证 C

47、RL 失败 else 验证 CRL 成功5.3.55.3.5 获取错误信息获取错误信息 getErrcode声明:声明:public int getErrcode()参数:参数:无返回值:返回值:函数成功时返回 0,失败时返回错误码示例:示例:5.3.65.3.6 释放释放 CRLCRL 资源资源 delete声明:声明:public void delete();参数:参数:无返回值:返回值:无示例:示例:5.4 类类 JIT_Certificate5.4.15.4.1 构造方法构造方法 JIT_Certificate声明:声明:通过证书路径初始化 cer 证书public JIT_Certi

48、ficate(byte bDevinfo, byte bWorkPath) 通过证书路径初始化 pfx 证书public JIT_Certificate(byte bDevinfo, byte bPassword, byte bWorkPath)通过内存初始化证书public JIT_Certificate(byte certBuf, byte certPassword, byte workPath, int certType);参数:参数:in bDevInfo描述证书存储的描述串。描述串由两部分组成。第一部分是存储介质描述符,第二部分是证书存储路径。存储介质描述符:“file:/”表示证书

49、的存储介质是磁盘。“usb:/”表示证书的存储介质是 USB 接口设备且证书是 jpf 管理员证书。“com1:/”表示证书的存储介质是 COM 接口设备。 “usbcsp:/”表示证书的存储介质是 USB 接口设备且证书是用户证书。 ”证书存储路径:表示证书存储的位置和名字例如:“file:/d:mycert.jpf”表示 D 盘根目录下的 mycert.jpf 文件“file:/d:mycert.pfx”表示 D 盘根目录下的 mycert.pfx 文件“file:/d:mycert.cer”表示 D 盘根目录下的 mycert.cer 文件“usb:/.jpf”表示 USB 接口中的.j

50、pf 文件“usbcsp:/.2cer”表示 USB 接口中用户证书文件文件 注意:Key 中用户证书文件只支持双证(签名证书,加密证书在同一 key 中) ,初始化时默认两个一起初始化成一个证书实例,使用时自动进行证书用法的判断,不需要用户处理。in bPWD访问存储介质的口令。in bWorkPathIT_CA30 应用 API 的工作路径。这个路径必须是绝对路径。这个路径不能为NULL。incertBuf证书内容缓冲区。incertType证书扩展名类型。取值如下:证书类型标识证书类型标识后缀后缀数值数值CERT_EXP_TYPE_JPFJPF 证书0CERT_EXP_TYPE_PFXP

51、FX 证书1CERT_EXP_TYPE_CERCER 证书2返回值:返回值:由于构造方法无返回值,调用 getErrcode()方法返回错误码。注释:注释:通过内存空间初始化证书需要将证书读入内存或通过网络获得证书内容。初始化 pfx 证书时,密码项可以设为 null示例:示例:JIT_Certificate cerRootCert null bytecerCertPath “证书路径” byte bWorkPath “工作路径” byte bpassword “证书密码”cerRootCert = new JIT_Certificate(cerCertPath, bWorkPath);iRe

52、t = cerRootCert.getErrCode();if (0 iRet) 初始化证书失败else 初始化证书成功cerRootCert = new JIT_Certificate(cerCertPath, bpassword,bWorkPath);iRet = cerRootCert.getErrCode();if (0 iRet) 初始化证书失败else 初始化证书成功byte Certbuffer = “证书内容”int CertType 证书类型cerRootCert = new JIT_Certificate(Certbuffer, bpassword,bWorkPath,Ce

53、rtType);iRet = cerRootCert.getErrCode();if (0 iRet) 初始化证书失败else 初始化证书成功cerRootCert.delete();/初始化 Key 证书 byte USBCertPath = USBCSP:/.2CER.getBytes();(固定此写法) byte USBPassword = 卡密码 JIT_Certificate USBCert = null; USBCert = new JIT_Certificate(USBCertPath, USBPassword, bWorkPath); iRet = USBCert.getErr

54、Code(); if (0 iRet) 初始化 USBKey 证书失败 else 初始化 USBKey 证书成功 USBCert.delete();相关主题:相关主题:getErrCodedelete5.4.25.4.2 获取证书中获取证书中 eMaileMail getMail声明:声明:public byte getMail() 参数:参数: 无返回值:返回值:证书主题中的 e_mail 地址如果证书中没有 e_mail 地址,返回值为 null示例:示例: JIT_Certificate pfxCert null 初始化证书pfxCert.getMail()5.4.35.4.3 获取证书

55、颁发者获取证书颁发者 getIssuer声明:声明:public byte getIssuer()参数:参数: 无返回值:返回值:证书主题中的颁发者信息示例:示例: JIT_Certificate pfxCert null 初始化证书pfxCert. getIssuer ()5.4.45.4.4 获取证书序列号获取证书序列号 getCertSN声明:声明:public byte getCertSN(int nCertType)参数:参数:innCertType输入证书的密钥用法类型。 注意:如果证书是文件证书(注意:如果证书是文件证书(.cer,.pfx)此处取值为)此处取值为1 如果证书是如

56、果证书是key中证书或中证书或jpf证书用以下参数获取,证书用以下参数获取, 证书类型标识证书类型标识类型类型数值数值CERT_SN_TYPE_SIGN签名证书1CERT_SN_TYPE_ENC加密证书2 返回值:返回值: 证书序列号示例:示例: JIT_Certificate pfxCert null 初始化证书pfxCert. getCertSN ()5.4.55.4.5 获取证书主题获取证书主题 getSubject声明:声明:public byte getSubject()参数:参数: 无返回值:返回值:证书主题信息示例:示例: JIT_Certificate pfxCert null

57、 初始化证书pfxCert. getSubject ()5.4.65.4.6 获取证书版本号获取证书版本号 getVer声明:声明:public int getVer() 参数:参数: 无返回值:返回值:参数返回 1,版本 1 的证书参数返回 2,版本 2 的证书参数返回 3,版本 3 的证书示例:示例: JIT_Certificate pfxCert null 初始化证书pfxCert. getVer()5.4.75.4.7 获取证书有效期获取证书有效期 getValidity声明:声明:public valid_st getValidity(int nCertType)参数:参数:nCer

58、tType输入证书的密钥用法类型。 注意:如果证书是文件证书(注意:如果证书是文件证书(.cer,.pfx)此处取值为)此处取值为1 如果证书是如果证书是key中证书或中证书或jpf证书用以下参数获取,证书用以下参数获取, 证书类型标识证书类型标识类型类型数值数值CERT_SN_TYPE_SIGN签名证书1CERT_SN_TYPE_ENC加密证书2返回值:返回值:返回值是证书的有效期。详见 valid_st 类的定义。示例:示例: JIT_Certificate pfxCert null 初始化证书pfxCert. getValidity()5.4.85.4.8 获取证书的应用类型获取证书的应

59、用类型getCertType声明:声明:public int getCertType()参数:参数:无返回值:返回值:获取证书的应用类型。返回值是证书的应用类型。示例:示例:JIT_Certificate pfxCert null 初始化证书pfxCert. getCertType()5.4.95.4.9 获取证书编码获取证书编码( (二进制二进制) ) getCert声明:声明:public byte getCert( int nCertType)参数:参数:innCertType:输入证书的密钥用法类型。 注意:如果证书是文件证书(注意:如果证书是文件证书(.cer,.pfx)此处取值为)

60、此处取值为1 如果证书是如果证书是key中证书或中证书或jpf证书用以下参数获取,证书用以下参数获取, 证书类型标识证书类型标识类型类型数值数值CERT_SN_TYPE_SIGN签名证书1CERT_SN_TYPE_ENC加密证书2 返回值返回值: 正确返回证书内容(只提取出公钥证书) ,错误返回 NULL5.4.105.4.10获取证书的获取证书的个人身份标识码个人身份标识码 GetIdCode声明:声明:public byte GetIdCode(int iIDType)参数:参数:in iIDType证书类型标识证书类型标识类型类型数值数值CERT_USE_TYPE_SINGLE个人单证书

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论