sydapi-java-sge-database/src/main/java/com/sunyard/sge/database/SydApi.java
2022-08-31 18:23:03 +08:00

281 lines
10 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.sunyard.sge.database;
import com.sunyard.sge.log.LogFactory;
import org.apache.logging.log4j.Logger;
import racal.sunyard.main.SydApi4j;
import java.util.List;
/**
* 上海黄金交易所 - 数据库加密方案
*/
public interface SydApi {
/**
* 设置全局日志相应的配置
*
* @param pcLogPath 输入。日志存储路径
* @param iLogLevel 输入。日志级别设置
* 0不记录日志
* 1记录网络层错误日志
* 2记录接口错误日志及网络层错误日志
* 3记录正确日志及错误日志
* @return 无
**/
static void SYD_SetLogConfig(
String pcLogPath,
int iLogLevel) {
if (pcLogPath == null || iLogLevel < 0 || iLogLevel > 3) {
throw new IllegalArgumentException("地址不能为空且等级范围为0到3");
}
Logger logger = LogFactory.createLogger(pcLogPath, iLogLevel);
SydApi4j.setLogger(logger);
}
/**
* 建立到指定地址和端口号的签名服务器的 TCP/IP 连接,返回 API 操作对象 SydApi。
* 如果采用短连接,交易结束,要调用 SydApi 的方法SYD_Disconnect_Ex 进行释放连接。
*
* @param pcIpList 签名服务器的IP地址
* @param iPortList 签名服务器的端口号
* @param iConnectTimeOut 连接超时,单位毫秒。
* @param iDealTimeOut 交易接口超时设定,单位毫秒(不超过10ms)。
* @return SydApi 的对象,只要有设备可用则返回。
*/
SydApi SYD_Short_Connect_Ex(
String[] pcIpList,
int[] iPortList,
int iConnectTimeOut,
int iDealTimeOut
);
/**
* 关闭与签名服务器的TCP/IP连接
*/
void SYD_Disconnect_Ex();
// /**
// * 对指定数据进行SM4加解密处理。
// *
// * @param iKeyIndex 会话密钥索引值
// * @param pcData 报文密文或明文。
// * @param iFlag 加解密标识,0:表示ECB解密1:表示ECB加密
// * @return 报文明文或密文。
// */
// byte[] SYD_SM4_ShortData(
// int iKeyIndex,
// byte[] pcData,
// int iFlag
// );
//
//
// /**
// * 对指定批量数据进行SM4加解密处理。
// *
// * @param iKeyIndex 会话密钥索引值数组
// * @param pcData 要加密的报文明文或密文数组。
// * @param iFlag 加解密标识,0:表示ECB解密1:表示ECB加密
// * @return List<byte [ ]>对象List 的长度与输入参数 pcData 的长度相同。
// */
// List<byte[]> SYD_SM4_BatchData(
// int[] iKeyIndex,
// List<byte[]> pcData,
// int iFlag
// );
/**
* 短数据hash计算对指定数据进行SM3哈希处理
*
* @param pcData输入。原始数据。
* @return 哈希值固定长度32字节转HEX 字符串格式
*/
String SYD_SM3_Hash_ShortData(
byte[] pcData
);
/**
* 长数据hash计算对指定数据进行SM3 哈希处理。
*
* @param pcData输入。要加密的数据。
* @param iPkgNum输入。包序号0 仅一包 pcHash为输出hash结果
* 1 第一包 输出过程数据pcProcData
* 2 中间包 pcProcData为输入上一包返回的过程数据输出本包返回的过程数据
* 3 最后一包 pcHash为输出hash结果
* @param pcProcData输入。过程数据 包序号为0或1时传入null包序号为2或3时需要有值
* @return LongDataReturn<String, String>对象。属性如下:
* procData过程数据 包序号为1或2时有值字符串格式
* data哈希值固定长度32字节转HEX 字符串格式
*/
LongDataReturn<String, String> SYD_SM3_Hash_LongData(
byte[] pcData,
int iPkgNum,
String pcProcData
);
/**
* 短数据加解密
* <p>
* 输入对指定的原始数据和公钥,通过 SM4 算法计算数据的散列值。
*
* @param iKeyIndex 输入。会话密钥索引值
* @param pcData 输入。 报文密文或明文。
* @param iFlag 输入。加解密标识,0:表示ECB解密1:表示ECB加密
* @return 明文或密文
*/
byte[] SYD_SM4_ShortData(
int iKeyIndex,
byte[] pcData,
int iFlag
);
/**
* 批量数据加解密
* <p>
* 输入对指定的原始数据和公钥,通过 SM4 算法计算数据的散列值。
*
* @param iKeyIndex 输入。会话密钥索引值数组
* @param pcData 输入。要加密的报文明文或密文数组。
* @param iFlag: 输入。加解密标识0:表示ECB解密
* 1:表示ECB加密
* @return List<byte [ ]>对象List 的长度与输入参数 pcData 的长度相同。
*/
List<byte[]> SYD_SM4_BatchData(
int[] iKeyIndex,
List<byte[]> pcData,
int iFlag
);
/**
* 长数据加解密
* 输入对指定的原始数据和公钥,通过 SM4 算法计算数据的散列值。
*
* @param iKeyIndex输入。会话密钥索引值
* @param pcData 输入。要加密的数据。(数据的长度第一包以及中间包时需为16的整数倍)
* @param iPkgNum输入。包序号0仅一包1第一包2中间包3结束包
* @param iFlag输入。加解密标识,0:表示ECB解密1:表示ECB加密
* @return 输出数据;
*/
byte[] SYD_SM4_LongData(
int iKeyIndex,
byte[] pcData,
int iPkgNum,
int iFlag
);
/**
* 批量数据MAC校验接口对批量数据进行SM4 MAC计算。
*
* @param iKeyIndex输入。计算mac所需要的密钥索引值数组
* @param pcData 输入。要做MAC的数据组
* @return String[] 数组,长度等于 pcData List 的长度。
* String[] 数组中的每个值为 mac值固定长度16字节的 HEX字符串。
*/
String[] SYD_SM4Mac_BatchData(
int[] iKeyIndex,
List<byte[]> pcData
);
/**
* 对批量数据进行SM4 MAC校验。有一条数据失败则抛出异常。
*
* @param iKeyIndex输入。计算mac所需要的密钥索引值数组
* @param pcData 输入。 要做MAC的数据组
* @param pcMac 输入。输入的mac值数组组每个 ma从固定长度16字节的HEX字符串。
* @return boolean[] 数组长度等于 pcData List 的长度。
* boolean[] 数组中的每个值为对应索引 pcData 和 pcMac 的校验结果。 true表示校验成功false 表示校验失败。
*/
boolean[] SYD_SM4Mac_BatchData(
int[] iKeyIndex,
List<byte[]> pcData,
String[] pcMac
);
/**
* 长数据mac计算接口对数据进行SM4 MAC计算。
*
* @param iKeyIndex输入。计算mac所需要的密钥索引值
* @param pcData输入。要做MAC的数据
* @param iPkgNum输入。 包序号0 仅一包 pcHash为输出hash结果
* 1 第一包 输出过程数据pcProcData
* 2 中间包 pcProcData为输入上一包返回的过程数据输出本包返回的过程数据
* 3 最后一包 pcHash为输出hash结果
* @return LongDataReturn<String, String> 的对象,
* 属性 procData 过程数据 包序号为1或2时有值字符串
* 属性 data 输出的mac值固定长度16字节HEX 字符串
*/
LongDataReturn<String, String> SYD_SM4Mac_LongData(
int iKeyIndex,
byte[] pcData,
int iPkgNum,
String pcProcData
);
/**
* 长数据MAC数据校验接口对长数据进行MAC SM4校验处理。
*
* @param iKeyIndex输入。计算mac所需要的密钥索引值
* @param pcData 输入。要做MAC的数据
* @param iPkgNum 输入。 包序号0 仅一包 pcHash为输出hash结果
* 1 第一包 输出过程数据pcProcData
* 2 中间包 pcProcData为输入上一包返回的过程数据输出本包返回的过程数据
* 3 最后一包 pcHash为输出hash结果
* @param pcProcData输入。过程数据 包序号为1或2时有值
* @param pcMac 输入。输出的mac值固定长度16字节 HEX 字符串
* @return LongDataReturn<String, Boolean> 的对象
* 属性 procData 过程数据 包序号为1或2时有值字符串
* 属性 data 输出的mac校验结果。Boolean 类型true表示校验成功false 表示校验失败。
*/
LongDataReturn<String, Boolean> SYD_SM4Mac_LongData(
int iKeyIndex,
byte[] pcData,
int iPkgNum,
String pcProcData,
String pcMac
);
/**
* 短数据MAC计算接口对数据进行SM4 MAC计算
*
* @param iKeyIndex输入。计算mac所需要的密钥索引值
* @param pcData 输入。计算mac所需要的数据。
* @return mac值(固定长度16字节)转HEX 字符串格式
*/
String SYD_SM4Mac_ShortData(
int iKeyIndex,
byte[] pcData
);
/**
* 短数据MAC验证接口对数据进行SM4 MAC校验
*
* @param iKeyIndex输入计算mac所需要的密钥索引值
* @param pcData 输入。计算mac所需要的数据。
* @param pcMac 输入。mac值(固定长度16字节)HEX字符串
* @return true表示校验成功false 表示校验失败
*/
boolean SYD_SM4Mac_ShortData(
int iKeyIndex,
byte[] pcData,
String pcMac
);
public SydApiSM4 initSM4( int iKeyIndex, int ende);
public SydApiSM3 initSM3();
public SydSM4Mac initSM4Mac(int iKeyIndex);
}