APIJava版程序员手册.docx
《APIJava版程序员手册.docx》由会员分享,可在线阅读,更多相关《APIJava版程序员手册.docx(114页珍藏版)》请在冰豆网上搜索。
APIJava版程序员手册
JIT应用ToolkitsAPI(Java版)程序员手册
JIT版权所有(2001)
吉大正元信息技术股份有限公司
JilinUniversityInformationTechnologiesCo.,Ltd.
1引言4
1.1概述4
1.2开发平台及编程语言4
1.3注意事项4
1.4名词解释4
2系统结构4
2.1接口说明4
2.2配置文件说明4
3数据结构5
3.1基于口令产生密钥的基本信息5
3.2初始化CRL参数5
3.3时间基本信息6
3.4证书有效期类7
3.5初始化证书信息7
4全局常量定义8
4.1标识常量8
4.1.1所用到的配置文件8
4.1.2文件长度及密码长度8
4.1.3数据类型定义;8
4.1.4信封类型定义8
4.1.5证书扩展类型定义9
4.1.6证书用户类型定义9
4.1.7证书状态定义9
4.1.8CRL验证证书方式9
4.1.9证书SN类型9
4.1.10证书存储方式10
4.1.11加密、解密、签名等算法10
4.1.12标准扩展域10
4.2错误代码11
5函数说明13
5.1类JIT_Engine13
5.1.1构造函数13
5.1.2获取错误信息14
5.1.3释放引擎资源14
5.2类JIT_OCSP14
5.2.1构造方法14
5.2.2查询证书状态15
5.2.3获取错误信息16
5.2.4释放OCSP资源16
5.3类JIT_CRL16
5.3.1构造方法17
5.3.2获取CRL验证证书的方式getMode17
5.3.3CRL验证证书18
5.3.4验证CRL签名18
5.3.5获取错误信息19
5.3.6释放CRL资源19
5.4类JIT_Certificate19
5.4.1构造方法19
5.4.2获取证书中eMail21
5.4.3获取证书颁发者22
5.4.4获取证书序列号22
5.4.5获取证书主题22
5.4.6获取证书版本号23
5.4.7获取证书有效期23
5.4.8获取证书的应用类型23
5.4.9获取证书编码(二进制)24
5.4.10获取证书的个人身份标识码24
5.4.11提取所需对象标识符对应的内容25
5.4.12验证证书的有效性26
5.4.13验证证书的有效性(手工输入时间)26
5.4.14获取错误信息27
5.4.15释放Certificate资源27
5.4.16扩展接口28
5.5类JIT_Key29
5.5.1构造方法29
5.5.2产生对称密钥29
5.5.3基于口令产生对称密钥30
5.5.4包装密钥30
5.5.5解包装密钥31
5.5.6获取错误信息31
5.5.7释放Key资源32
5.6类JIT_Bin32
5.6.1构造方法32
5.6.2数据数字签名32
5.6.3验证数字签名33
5.6.4数据非对称加密34
5.6.5数据非对称解密35
5.6.6产生数据的MAC35
5.6.7验证数据的MAC36
5.6.8数据文摘37
5.6.9数据对称加密38
5.6.10数据对称解密38
5.6.11产生PKCS7数字信封39
5.6.12验证PKCS7数字信封42
5.6.13二进制数据转换成PEM编码44
5.6.14获取错误信息44
5.6.15释放bin资源45
5.7类JIT_Base6445
5.7.1构造方法45
5.7.2数据数字签名45
5.7.3验证数字签名46
5.7.4数据非对称加密47
5.7.5数据非对称解密48
5.7.6数据产生MAC48
5.7.7验证数据的MAC49
5.7.8数据文摘50
5.7.9数据对称加密51
5.7.10数据对称解密51
5.7.11产生PKCS7数字信封52
5.7.12验证PKCS7数字信封54
5.7.13PEM编码转换成二进制57
5.7.14获取错误信息57
5.7.15释放Base64资源57
5.8类JIT_EnvFile58
5.8.1构造方法58
5.8.2产生PKCS7数字信封文件58
5.8.3验证PKCS7数字信封文件61
5.8.4获取错误信息62
5.8.5释放EnvFile资源62
5.9类JIT_LDAP62
5.9.1构造方法62
5.9.2获取用户证书63
5.9.3释放获取的证书64
5.9.4获取错误信息64
5.9.5释放Ldap资源64
5.10类JIT_Random65
5.10.1创造随机数65
1引言
1.1概述
ØJITToolkit_API(Java版)是以吉大正元电子证书认证系统为基础,方便用户进行二次开发,整合先进的Java技术,提供的工具包。
用户利用工具包中各种接口可以作电子证书系统客户化,电子证书应用等方面的开发工作。
主要功能如下:
◆对客户和服务器证书的操作(包括验证和获取证书内容)
◆对用户数据的操作(包括签名、加密、数字信封和他们相对应的校验工作)
◆对用户文件的各种操作(包括封装数字信封和验证数字信封)
◆各种辅助操作(包括对对称密钥的操作、产生随机数、)
◆对Ldap、CRL、OCSP等各种辅助功能的操作
1.2开发平台及编程语言
⏹开发平台
Windows2000Server
⏹编程语言
Java
C++
⏹开发工具
Java2SDKStandardEditionv1.3.1_09(SunMicrosystems,Inc.)
BorlandJbuilder7Enterprise
MicrosoftVisualC++6.0EnterpriseEdition
1.3注意事项
⏹系统中的错误码均为负数。
⏹本接口不支持加密机,除windwos外不支持key使用
⏹除windows外不支持OCSP
1.4名词解释
无
2系统结构
2.1接口说明
JIT应用ToolkitsAPI(Java版)对用户提供10个类共70个接口:
⏹jit.toolkits
Toolkits主要功能类。
提供各对外接口。
⏹jit.parameters
结构。
用于存放程序中各种用到的结构体。
2.2配置文件说明
JIT应用ToolkitsAPI(JNI版)共需要5个配置文件,说明如下:
⏹cryptodevice.ini
加密设备配置文件。
文件证书使用时修改DeviceCount对应软加密库ID,
DeviceCount=1
Key证书使用时修改DeviceCount对应Key的ID
DeviceCount=2
两种证书同时使用时修改DeviceCount对应Key的ID
DeviceCount=2
⏹MultiDeviceFile.ini
管理员证书介质使用JPF文件时使用此配置文件。
(无论那种情况该文件必须存在)
⏹MultiDeviceCard.ini
管理员证书介质使用USBKey时使用此文件。
(无论那种情况该文件必须存在)
⏹card.ini
USBKey的配置文件,通常不需要用户改动。
⏹jitocsp.ini
与OCSP服务器连接时需要的一些连接参数,用户可根据实际情况进行改动
⏹jcaapi.ini
与Ldap服务器连接时需要的一些连接参数,用户可根据实际情况进行改动
3数据结构
3.1基于口令产生密钥的基本信息
类名称:
JIT_PBE_PARAMS
功能:
存储PKCS5基于口令产生密钥的参数。
声明:
publicclassJIT_PBE_PARAMS{
publicbyte[]sPassword;
publicbyte[]bSalt;
publicintlIteration;
publicJIT_PBE_PARAMS(){
}
}
数据成员:
pPassword
口令的内容。
pSalt
盐值的内容。
(PKCS5基于口令产生密钥的协商好的附加信息)
nIteration
PKCS5基于口令密钥产生的循环叠代次数。
3.2初始化CRL参数
类名称:
JIT_CRLPARAM
功能:
存储初始化CRL的参数。
声明:
publicclassJIT_CRLPARAM{
publicbyte[]szCRLFile;
publicintnMode;
publicJIT_CRLPARAM(){
}
}
数据成员:
szCRLFile
用户指定的CRL文件路径。
这个路径必须是绝对路径。
这个路径不能为NULL。
在线方式验证,这个路径是下载的CRL存储在本地的CRL文件路径。
离线方式验证,这个路径是验证证书时使用的CRL文件路径。
nMode
通过CRL验证证书的方式。
包括在线方式验证和离线方式验证。
在线方式验证设置为VERIFY_MODE_ONLINE
离线方式验证设置为VERIFY_MODE_OFFLINE
3.3时间基本信息
类名称:
JIT_Time
功能:
存储证书中时间的值
声明:
publicclassJIT_Time{
publiclonglType;
publiclongdiffGMT;
publiclongyear;
publiclongmonth;
publiclongday;
publiclonghour;
publiclongmin;
publiclongsecond;
publicJIT_Time(){
}
}
数据成员:
lType
证书中时间的编码类型。
1:
格林威治时间
2:
本地时间
diffGMT
本地时间和格林威治时间的差值。
本地时间比格林威治时间早用负数表示。
本地时间比格林威治时间晚用正数表示。
0表示格林威治时间。
year本地时间年
month本地时间月
day本地时间日
hour本地时间时
min本地时间分
second本地时间秒
3.4证书有效期类
类名称:
JIT_Valid
功能:
存储证书的有效期
声明:
publicclassJIT_Valid{
publicJIT_TimenotBefor
publicJIT_TimenotAfter
publicJIT_Valid(){
}
}
数据成员:
notBefor
证书有效期开始的时间
notAfter
证书有效期结束的时间
3.5初始化证书信息
类名称:
JIT_CERTDEVPARAM(保留未用)
功能:
存储了从非数据流形式初始化证书时所需要的信息
声明:
publicclassJIT_CERTDEVPARAM{
publicbyte[]szDevInfo;
publicbyte[]szPWD;
publicJIT_CERTDEVPARAM(){
}
}
数据成员:
szDevInfo
描述证书存储的描述串。
描述串由两部分组成。
第一部分是存储介质描述符,第二部分是证书存储路径。
存储介质描述符:
“file:
//”表示证书的存储介质是磁盘。
“usb:
//”表示证书的存储介质是USB接口设备。
“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全局常量定义
该类定义API中的常量。
在本文档中引用常量时直接引用常量名。
4.1标识常量
4.1.1所用到的配置文件
publicstaticStringCRYPT_INI_FILE_NAME="cryptodevice.ini";
publicstaticStringOCSP_INI_FILE_NAME="jitocsp.ini";
publicstaticStringCARD_INI_FILE_NAME="card.ini";
publicstaticStringMULITYCARD_FILE_NAME="MultiDeviceCard.ini";
publicstaticStringMULITYFILE_FILE_NAME="MultiDeviceFile.ini";
publicstaticStringJCAAPI_INI_FILE_NAME="jcaapi.ini";
4.1.2文件长度及密码长度
文件长度
publicstaticintFILE_NAME_LEN=256;
密码长度
publicstaticintPWD_LEN=128;
4.1.3数据类型定义;
Base64类型
publicstaticintDATA_TYPE_BASE64=0;
Bin类型
publicstaticintDATA_TYPE_BIN=1;
4.1.4信封类型定义
签名信封
publicstaticintENVELOP_SIGN=0;
加密信封
publicstaticintENVELOP_ENC=1;
既签名又加密信封
publicstaticintENVELOP_SIGN_ENC=2;
文摘信封
publicstaticintENVELOP_DIGEST=3;
MAC信封
publicstaticintENVELOP_MAC=4;
4.1.5证书扩展类型定义
jpf管理员证书文件
publicstaticintCERT_EXP_TYPE_JPF=0;
pfx包含私钥证书文件
publicstaticintCERT_EXP_TYPE_PFX=1;
cer公钥证书文件
publicstaticintCERT_EXP_TYPE_CER=2;
4.1.6证书用户类型定义
个人单证书
publicstaticintCERT_USE_TYPE_SINGLE=0;
jpf双证书
publicstaticintCERT_USE_TYPE_DOUBLE=1;
电子邮件保护证书
publicstaticintCERT_USE_TYPE_MAIL=2;
服务器证书
publicstaticintCERT_USE_TYPE_SERVER=3;
CA证书
publicstaticintCERT_USE_TYPE_CA=4;
4.1.7证书状态定义
正常状态
publicstaticintCERT_STATUS_NOMAL=0;
证书已注销
publicstaticintCERT_STATUS_REVOKE=1;
未知状态
publicstaticintCERT_STATUS_UNKNOWN=2;
4.1.8CRL验证证书方式
在线验证证书
publicstaticintVERIFY_MODE_ONLINE=0;
离线验证证书
publicstaticintVERIFY_MODE_OFFLINE=1;
4.1.9证书SN类型
签名证书
publicstaticintCERT_SN_TYPE_SIGN=1;
加密证书
publicstaticintCERT_SN_TYPE_ENC=2;
签名加密证书
publicstaticintCERT_SN_TYPE_SIGNENC=3;
4.1.10证书存储方式
文件方式存储
publicstaticintCERT_DEV_TYPE_FILE=0;
USBKey中存储
publicstaticintCERT_DEV_TYPE_USB=1;
COM接口设备存储
publicstaticintCERT_DEV_TYPE_COM=2;
4.1.11加密、解密、签名等算法
RSA加密解密;
publicstaticintCT_ALGO_RSA_PKCS=0x00000001;
MD2WithRSA签名验证
publicstaticintCT_ALGO_MD2_RSA_PKCS=0x00000004;
MD5WithRSA签名验证
publicstaticintCT_ALGO_MD5_RSA_PKCS=0x00000005;
SHA1WithRSA签名验证
publicstaticintCT_ALGO_SHA1_RSA_PKCS=0x00000006;
MD2文摘
publicstaticintCT_ALGO_MD2=0x00000200;
MD5文摘
publicstaticintCT_ALGO_MD5=0x00000210;
SHA1文摘
publicstaticintCT_ALGO_SHA_1=0x00000220;
RC2ECB方式加密解密
publicstaticintCT_ALGO_RC2_ECB=0x00000101;
RC4加密解密
publicstaticintCT_ALGO_RC4=0x00000111;
DESECB方式加密解密
publicstaticintCT_ALGO_DES_ECB=0x00000121;
3DESECB方式加密解密
publicstaticintCT_ALGO_DES3_ECB=0x00000132;
4.1.12标准扩展域
publicstaticintCERT_EXT_OID_IDENTIFYCARD=12861171;
//个人身份标识码:
OID=1.2.86.11.7.1
publicstaticintCERT_EXT_OID_INSURANCENUM=12861172;
//个人社会保险号:
OID=1.2.86.11.7.2
publicstaticintCERT_EXT_OID_ORGANIZATIONCODE=12861173;
//企业组织机构代码:
OID=1.2.86.11.7.3
publicstaticintCERT_EXT_OID_ICREGNUM=12861174;
//企业工商注册号:
OID=1.2.86.11.7.4
publicstaticintCERT_EXT_OID_TAXNUM=12861175;
//企业税号:
OID=1.2.86.11.7.5
4.2错误代码
成功
publicstaticintCT_SUCCESS=0
参数错误
publicstaticintCT_ERR_PARAM=-9000
内存错误
publicstaticintCT_ERR_MEMORY=-9001
内存分配少
publicstaticintCT_ERR_BUFFER_TOO_SMALL=-9090
加密库初始化错误
publicstaticintCT_ERR_CRYPTODEV_INIT=-9999
不能打开加密库
publicstaticintCT_ERR_CRYPTO_SESSION=-9002
不能访问加密设备
publicstaticintCT_ERR_CRYPTODEV_NO_ACCESS=-9003
OCS引擎未初始化
publicstaticintCT_ERR_OCSP_ENGINE_NOT_INIT=-9004
证书不完整
publicstaticintCT_ERR_CERT_NOT_INTEGRITY=-9005
取证书状态失败
publicstaticintCT_ERR_GET_CERT_STATUS=-9006
OCSP初始化错误
publicstaticintCT_ERR_OCSP_INIT=-9007
LDAP错误
publicstaticintCT_ERR_ACCESS_LDAP=-9008
CRL不完整
publicstaticintCT_ERR_CRL_NOT_INTEGRITY=-9009
证书颁发者或主题错误
publicstaticintCT_ERR_ISSUER_OR_SUBJECT=-9010
CRL引擎未初始化
publicstaticintCT_ERR_CRL_ENGINE_NOT_INIT=-9011
证书链不完整
publicstaticintCT_ERR_CERT_CHAIN_NOT_INTEGRITY=-9012
证书过期
publicstaticintCT_ERR_CERT_OVER=-9013
根证书无效
publicstaticintCT_ERR_ROOT_CERT_INVALID=-9014
CRL初始化错误
publicstaticintCT_ERR_CRL_INIT=-9015
口令错误
publicstaticintCT_ERR_PWD=-9016
打开文件错误
publicstaticintCT_ERR_FIL