SafeEngine Java接口说明v122.docx
《SafeEngine Java接口说明v122.docx》由会员分享,可在线阅读,更多相关《SafeEngine Java接口说明v122.docx(31页珍藏版)》请在冰豆网上搜索。
SafeEngineJava接口说明v122
JavaSafeEngineforWindows
(AlsoForLinux&AIX)
接口说明
上海市电子商务安全证书管理中心有限公司
2004-1-16
文档说明:
SafeEngineforJava的接口说明和单点登录接口。
版本信息:
当前Java接口版本1.2
最新版本:
1.22更新时间:
2004年1月16日星期五
版权信息:
SHECA是上海市电子商务安全证书管理中心有限公司的注册商标和缩写。
UCA是上海市电子商务安全证书管理中心有限公司研究开发的通用证书系统的商标和缩写。
本文的版权属于上海市电子商务安全证书管理中心有限公司,未经许可,任何个人和团体不得转载、粘贴或发布本文,也不得部分的转载、粘贴或发布本文,更不得更改本文的部分词汇进行转贴。
未经许可不得拷贝,影印。
Copyright@2000上海市电子商务安全证书管理中心有限公司
一.SafeEngineforJava接口的目的:
该接口是为所有应用程序开发者提供安全平台接口,提供程序开发人员1024/128位强度的加密算法,任何使用SHECA证书的应用软件都可以实现无痛苦的切入,所有的安全机制有该接口实现(包括证书验证,黑名单查询等等)。
V1.22版:
新增了对单点登录功能的支持接口,需要SafeEngineComV2.0以上版本和UniTrustSSOAgentV1.0以上版本的支持。
二.SafeEngineforJava说明:
本接口提供以下版本:
Win9x/NT,Solaris,AIX,HP,UnixWare,Linux。
接口提供以下功能:
数字信封,数字签名,验证签名,摘要。
从磁盘等介质中读取证书,私钥,证书验证(包括CRL,OCSP验证),证书解码。
V1.22版中增加了对单点登录功能的支持接口,包含登录初始化,登录验证和登录凭证解码等功能。
三.版本说明:
当前的JAVA版本所调用到的safeengine为2.2版本以上。
1.2较之1.1版新增6部份的函数:
●初始化扩展(1函数)
●数字信封扩展(2函数)
●对称加密(4函数)
●对称加密扩展(4函数)
●生成公私要对(4函数)
●生成随机数(2函数)
1.22较之1.2版新增部份:
●Sheca_login类,该类包含5个主要方法。
四.SafeEngineforJava方法定义:
获取出错代码
得到调用方法的返回值.调用返回值类型不是数字的方法后,请调用该方法判断
是否调用成功。
intgetErrorCode()
初始化环境
由三个方法可以完成初始化环境功能:
intshecaInitEnviroment(intintPrivateKeyType,StringstrPrivateKeyDeviceParameter,
StringstrPrivateKeyPassword,intintPrivateKeyTimeout,
intintRootCertDeviceType,StringstrRootCertDeviceParameter,
StringstrRootCertPassword)
intshecaInitEnviromentByte(intintPrivateKeyType,byte[]bytePrivateKeyDeviceParameter,
byte[]bytePrivateKeyPassword,intintPrivateKeyTimeout,
intintRootCertDeviceType,byte[]byteRootCertDeviceParameter,
byte[]byteRootCertPassword)
longshecaInitEnvironmentEx(StringstrPrivateKey,StringstrPrivateKeyPassword,
StringstrRootCert);
功能:
初始化环境.从设备中读取私钥,根证书。
在调用以下方法前必须先调用此三个方法之一初始化.
参数:
参数名
含义
In/out
参数选项
intPrivateKeyType
存储私钥的设备类型
In
2为文件
其他见设备类型编码表
strPrivateKeyDeviceParameter
bytePrivateKeyDeviceParameter
存储私钥设备的参数
In
如privatekeydevicetpe=2为文件名,
其他可为”com1”,“com2”
若不需要私钥,可设为空字符串“”,表示不取私钥
strPrivateKeyPassword
bytePrivateKeyPassword
私钥密码
In
intPrivateKeyTimeout
私钥超时时间.秒为单位
In
IntRootCertDeviceType
存储根证书的设备类型
In
2为文件
其他见设备类型编码表
strRootCertDeviceParameter
byteRootCertDeviceParameter
存储根证书设备的参数
In
如privatekeydevicetpe=2为文件名,
其他可为”com1”,“com2”
若不需要根证书,可设为空字符串“”,表示不取根证书
strRootCertPassword
byteRootCertPassword
根证书密码
In
仅当rootcertdevicetype为IC卡时有效
strPrivateKey
私钥BASE64编码
IN
必须输入项
strPrivateKeyPassword
私钥密码
IN
必须输入项
strRootCert
根证书BASE64编码
IN
必须输入项
返回:
=0
正常返回,
0x82040000
装载动态库出错
0x82040002
读写私钥设备失败
0x82040003
私钥密码错误
0x82040004
读写根证书设备失败
0x82040005
根证书密码错误
0x8204000A
初始化错误
0x82040001
内存分配错误
其他错误
0xFFFFFFF4
没有正确安装Safeengine.dll
0xFFFFFFF3
分配系统内存异常
清除环境
intshecaClearEnviroment()
功能:
清除环境变量.
和初始化方法配对使用.
返回:
=0
正常返回,
0x8204000A
没有初始化
0x82040000
装载动态库出错
0x8204000B
清除环境错误
PEM编码/解码
PEM编码
byte[]shecaPEMEncode(byte[]indata)
将二进制字符串转成可见字符串。
参数:
参数名
含义
输入?
输出
参数选项
indata
待编码的数据
in
返回值:
0
正常返回
0x8204000A
没有初始化
0x82040024
编码错误
PEM解码
byte[]shecaPEMDecode(byte[]pemdata)
参数:
参数名
含义
输入?
输出
参数选项
pemdata
待解码的数据
in
返回值:
0
正常返回
0x8204000A
没有初始化
0x82040025
解码错误
PKCS12接口
从PKCS12中获取证书
StringshecaGetCertFromPKCS12(StringstrPKCS12,StringstrPKCS12Password);
参数:
参数名
含义
In/out
参数选项
strPKCS12
PKCS12数据块
In
strPKCS12Password
PKCS12数据密码
In
getErrorCode()方法返回值:
=0
正常返回,
0x8204000A
没有初始化
0x82040000
装载动态库出错
0x8204000C
签名错误
0x82040008
超时,私钥密码错误.
-5
PEM编码出错
数字签名
签名
由两个方法可以实现签名
StringshecaSignData(StringstrOriginData,intintSignmethod)
byte[]shecaSignData(byte[]byteOriginData,intintSignmethod)
参数:
参数名
含义
In/out
参数选项
strOriginData
byteOriginData
原始数据块
In
intSignmethod
签名类型
In
1:
MD2
2:
MD5
3:
SHA1
getErrorCode()方法返回值:
=0
正常返回,
0x8204000A
没有初始化
0x82040000
装载动态库出错
0x8204000C
签名错误
0x82040008
超时,私钥密码错误.
0x82040024
PEM编码出错
0x82040025
PEM解码出错
0x82040029
公私钥不匹配
0x8204002B
非法的P12值
0x8204002C
P12解码错误
摘要
由两个方法可以实现摘要
StringshecaDigest(StringstrOrigindata,intintMethod)
byte[]shecaDigestByte(byte[]byteOrigindata,intintMethod)
参数:
参数名
含义
In/out
参数选项
strOrigindata
byteOrigindata
原始数据块
In
intMethod
摘要方法
In
1:
MD2
2:
MD5
3:
SHA1
getErrorCode()方法返回值:
=0
正常返回,
0x82040000
装载动态库出错
0x8204000A
没有初始化
0x8204000E
摘要错误
-4
PEM编码出错
验证签名
由两个方法可以实现验证签名
intshecaVerifySignData(StringstrOriginData,intintSignmethod,StringstrSignedData,
StringstrCeritificate)
intshecaVerifySignDataByte(byte[]byteOriginData,intintSignmethod,byte[]byteSignedData,
byte[]byteCeritificate)
参数:
参数名
含义
In/out
参数选项
strOriginData
byteOriginData
原始数据块
In
IntSignmethod
签名类型
In
1:
MD2
2:
MD5
3:
SHA1
strSignedData
byteSignedData
签名数据块
In
strCertificate
byteCertificate
证书内容
In
返回:
=0
正常返回,
0x8204000A
没有初始化
0x82040000
装载动态库出错
0x8204000D
验证错误
0x8204000F
证书错误
0x82040001
内存分配错误
-5
证书PEM解码出错
-6
签名数据PEM解码出错
数字信封
由两个方法可以实现数字信封加密
StringshecaEnvelope(intintEnvelopetype,StringstrIndata,StringstrCertificate);
byte[]shecaEnvelope(intintEnvelopetype,byte[]byteIndata,byte[]byteCertificate);
功能:
数字信封打包或拆解
参数:
参数名
含义
In/out
参数选项
IntEnvelopetype
信封类型
In
1组成数字信封
2拆解数字信封
strIndata
byteIndata
原始数据块
In
strCertificate
byteCertificate
证书内容
In
在解数字信封时不起作用
getErrorCode()方法返回值:
=0
正常返回,
0x8204000A
没有初始化
0x82040000
装载动态库出错
0x82040010
数字信封错误
0x82040008
超时,私钥密码错误.
0x8204000F
证书无效.
0x82040001
内存分配错误
-6
证书PEM解码出错
-7
信封PEM编码出错
-8
信封PEM解码出错
解数字信封时,若私钥超时,先重读私钥,若密码错误,返回–3,此时需重新初始化.
数字信封扩展
由两个方法可以实现数字信封加解密扩展
StringshecaEnvelopeEx(intintEnvelopetype,StringstrIndata,StringstrCertificate);
byte[]shecaEnvelopeExBytes(intintEnvelopetype,byte[]byteIndata,byte[]byteCertificate);
功能:
数字信封打包或拆解
参数:
参数名
含义
In/out
参数选项
IntEnvelopetype
信封类型
In
1组成数字信封
2拆解数字信封
strIndata
byteIndata
原始数据块
In
strCertificate
byteCertificate
证书内容
In
在解数字信封时不起作用
getErrorCode()方法返回值:
=0
正常返回,
0x8204000A
没有初始化
0x82040000
装载动态库出错
0x82040010
数字信封错误
0x82040008
超时,私钥密码错误.
0x8204000F
证书无效.
0x82040001
内存分配错误
-6
证书PEM解码出错
-7
信封PEM编码出错
-8
信封PEM解码出错
解数字信封时,若私钥超时,先重读私钥,若密码错误,返回–3,此时需重新初始化.
对称加密
由两个方法可以实现对称加密
StringshecaEncryptData(byte[]byteIndata,StringstrKey);
byte[]shecaEncryptDataBytes(byte[]byteIndata,byte[]byteKey);
功能:
数据对称加密
参数:
参数名
含义
In/out
参数选项
strIndata
byteIndata
原始数据块
In
strKey,
byteKey
对称密钥
In
getErrorCode()方法返回值:
=0
正常返回,
0x8XXXXX
请查看SafeEngine的说明
-1,-2,-4
分配内存错
-3
密码长度错
对称解密
由两个方法可以实现对称解密
StringshecaDecryptData(StringstrIndata,StringstrKey);
byte[]shecaDecryptDataBytes(byte[]byteIndata,byte[]byteKey);
功能:
数据对称解密
参数:
参数名
含义
In/out
参数选项
strIndata
byteIndata
加密数据块
In
strKey,
byteKey
对称密钥
In
getErrorCode()方法返回值:
=0
正常返回,
0x8XXXXX
请查看SafeEngine的说明
-1,-2,-4,-5
分配内存错
-3
密码长度错
对称加密扩展
由两个方法可以实现对称加密扩展
StringshecaEncryptDataEx(byte[]byteIndata,StringstrKey,intintAlgID);
nativebyte[]shecaEncryptDataExBytes(byte[]byteIndata,byte[]byteKey,intintAlgID);
功能:
数据对称加密扩展
参数:
参数名
含义
In/out
参数选项
strIndata
byteIndata
原始数据块
In
strKey,
byteKey
对称密钥
In
AlgID
加密算法
In
getErrorCode()方法返回值:
=0
正常返回,
0x8XXXXX
请查看SafeEngine的说明
-1,-2,-3,-4,-5
分配内存错
对称解密扩展
由两个方法可以实现对称解密扩展
StringshecaDecryptDataEx(StringstrIndata,StringstrKey,intintAlgID);
byte[]shecaDecryptDataExBytes(byte[]byteIndata,byte[]byteKey,intintAlgID);
功能:
数据对称解密扩展
参数:
参数名
含义
In/out
参数选项
strIndata
byteIndata
加密数据块
In
strKey,
byteKey
对称密钥
In
AlgID
加密算法
In
getErrorCode()方法返回值:
=0
正常返回,
0x8XXXXX
请查看SafeEngine的说明
-1,-2,-3,-4,-5
分配内存错
证书
从介质中获取证书
由两个方法可以实现从介质中获取证书
StringshecaGetSelfCertificate(intintDevicetype,StringstrDeviceParameter,StringstrPassword)
byte[]shecaGetSelfCertificate(intintDevicetype,byte[]byteDeviceParam,byte[]bytePassword)
功能:
从设备中读取证书,证书的来源可以是IC卡,磁盘。
参数:
参数名
含义
In/out
参数选项
intDevicetype
设备类型
in
2为文件
其他见设备类型编码表
strDeviceParameter
byteDeviceParam
设备参数
In
如privatekeydevicetpe=2为文件名,
其他可为”com1”,“com2”
strPassword
bytePassword
密码
In
getErrorCode()方法返回值:
=0
正常返回,
0x8204000A
没有初始化
0x82040000
装载动态库出错
0x82040006
读证书失败
0x82040009
缓冲区不够长
0x82040007
密码错误
0x82040001
内存分配错误
-6
证书PEM编码出错
从网络获取证书
由两个方法可以实现从网络获取证书
StringshecaGetCertificate(StringstrSerialNo,StringstrUrl);
byte[]shecaGetCertificate(byte[]byteSerialNo,byte[]byteUrl);
功能:
先读取本地缓冲库,然后检查CA证书库。
参数:
参数名
含义
In/out
参数选项
strSerialNo
byteSerialNo
证书序列号
In
strUrl
byteUrl
证书查询url
In
格式:
IP:
PORT
getErrorCode()方法返回值:
=0
正常返回,
0x8204000A
没有初始化
0x82040000
装载动态库出错
0x82040011
得证书失败
0x82040009
缓冲区不够长
0x82040001
内存分配错误
-6
证书PEM编码出错
通过黑名单验证证书
由两个方法可以实现通过黑名单验证证书
intshecaVerifyCertificate(byte[]byteCertificate)
功能:
验证证书有效性,先验有效期,ca签发,根据配置决定是否验证本地黑名单,ca黑名单。
配置方式见SE_SetConfiguration说明。
参数:
参数名
含义
In/out
参数选项
strCertificate
byteCertificate
证书内容
In
证书内容
返回:
=0
证书有效
0x8204000A
没有初始化
0x82040000
装载动态库出错
0x8204000F
证书错误
0x82040012
有效期外
0x82040015
非ca签发
0x82040016
黑名单中
0x82040017
黑名单文件错误
0x82040001
内存分配错误
-8
证书PEM解码出错
通过OCSP验证证书
由两个方法可以实现通过OCSP验证证书
intshecaVerifyCertificateOnline(StringstrCertificate)
intshecaVerifyCertificateOnline(byte[]byteCertificate)
功能:
在线验证证书有效性,先验有效期,ca签发,本地黑名单,然后ocsp
参数:
参数名
含义
In/out
参数选项
strCertificate
byteCertificate
证书内容
In
返回:
=0
证书有效
0x8204000A
没有初始化
0x82040000
装载动态库出错
0x82040018
连接失败
0x8204000F
证书错误
0x82040012
有效期外
0x82040015
非ca签发
0x8204001A
OCSP回包无效
0x8204001B
OCSP回包错误
0x8204001C