添加中移指令接口
This commit is contained in:
@@ -371,6 +371,6 @@ interface SydSYMApi {
|
||||
public String SYMDecrytByKeyIndex(String key,String intPutData);
|
||||
|
||||
//通过索引读取对称秘钥
|
||||
String readKey(String index);
|
||||
RetWrap readKey(String index);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,258 @@
|
||||
package com.sunyard.inf;
|
||||
|
||||
import com.sunyard.RetWrap;
|
||||
import com.sunyard.entity.Struct;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Auther: wp
|
||||
* @Date: 2021/6/1 19:59
|
||||
* @Description: 中移电子指令接口
|
||||
*/
|
||||
public interface SydZYOption {
|
||||
|
||||
/**
|
||||
* @param storageType 存储类型 0-使用内部密钥,1-使用外部密钥
|
||||
* @param key 使用内部密钥时,该值传后八位密钥索引;使用外部密钥时,该值为外部密钥
|
||||
* @param algFlag 算法类型支持算法:3DES、AES、SM1、SM4
|
||||
* @param iv IV 数据域,当算法标识为3DES-CBC、DES-CBC 时,该域为8B。
|
||||
* 当算法标识为AES-CBC、SM1-CBC、SM4-CBC 时,该域为16B。
|
||||
* @param divNum 密钥分散级数 ,0~3
|
||||
* @param divData 分散因子
|
||||
* @param divAlgFlag 分散算法标识
|
||||
* @param divIv 分散算法的初始向量
|
||||
* @param inputData 输入数据
|
||||
* @return byte[] 数据
|
||||
* @author wp
|
||||
* @Description:(A0)对称加密接口
|
||||
* @date 2021/5/31
|
||||
*/
|
||||
byte[] SYMEncryt(int storageType, String key, int algFlag, byte[] iv, int divNum, List<byte[]> divData, int[] divAlgFlag, List<byte[]> divIv, byte[] inputData);
|
||||
|
||||
/**
|
||||
* @param storageType 存储类型 0-使用内部密钥,1-使用外部密钥
|
||||
* @param key 使用内部密钥时,该值传后八位密钥索引;使用外部密钥时,该值为外部密钥
|
||||
* @param algFlag 算法类型支持算法:3DES、AES、SM1、SM4
|
||||
* @param iv IV 数据域,当算法标识为3DES-CBC、DES-CBC 时,该域为8B。
|
||||
* 当算法标识为AES-CBC、SM1-CBC、SM4-CBC 时,该域为16B。
|
||||
* @param divNum 密钥分散级数 ,0~3
|
||||
* @param divData 分散因子
|
||||
* @param divAlgFlag 分散算法标识
|
||||
* @param divIv 分散算法的初始向量
|
||||
* @param inputData 输入数据
|
||||
* @return byte[] 数据
|
||||
* @author wp
|
||||
* @Description:(A1)对称解密接口
|
||||
* @date 2021/5/31
|
||||
*/
|
||||
byte[] SYMDecryt(int storageType, String key, int algFlag, byte[] iv, int divNum, List<byte[]> divData, int[] divAlgFlag, List<byte[]> divIv, byte[] inputData);
|
||||
|
||||
/**
|
||||
* @param storageType 存储类型 0-使用内部密钥,1-使用外部密钥
|
||||
* @param key 使用内部密钥时,该值传后八位密钥索引;使用外部密钥时,该值为外部密钥
|
||||
* @param algFlag 当存储类型为0时:仅支持3DES-ECB(07)、3DES-CBC(08)
|
||||
* 当存储类型为1时:仅支持3DES-ECB、3DES-CBC、HMAC-SHA256(14)
|
||||
* @param iv 仅当算法为3DES-CBC模式下有此域
|
||||
* @param divNum 密钥分散级数 ,0~3
|
||||
* @param divData 分散因子
|
||||
* @param divAlgFlag 分散算法标识
|
||||
* @param divIv 分散算法的初始向量
|
||||
* @param inputData 输入数据
|
||||
* @param macDataLen 需要的MAC数据长度
|
||||
* @return byte[] 输出的MAC数据
|
||||
* @author wp
|
||||
* @Description:(A2)产生MAC接口
|
||||
* @date 2021/5/31
|
||||
*/
|
||||
byte[] genMAC(int storageType, String key, int algFlag, byte[] iv, int divNum, List<byte[]> divData, int[] divAlgFlag, List<byte[]> divIv, byte[] inputData, int macDataLen);
|
||||
|
||||
/**
|
||||
* @param keyIndex 密钥索引
|
||||
* @param iv 仅当算法为3DES-CBC模式下有此域
|
||||
* @param divNum 密钥分散级数 ,0~3
|
||||
* @param divData 分散因子
|
||||
* @param divAlgFlag 分散算法标识
|
||||
* @param divIv 分散算法的初始向量
|
||||
* @param inputData 输入数据
|
||||
* @return byte[] 输出的MacAndNextIv数据16字节,前8字节为MAC,后8字节为下一次IV
|
||||
* @author wp
|
||||
* @Description: (A3)尾端3DES-CBC算法计算MAC及下一次IV(内部密钥
|
||||
* @date 2021/5/31
|
||||
*/
|
||||
byte[] genMacAndNextIv(String keyIndex, byte[] iv, int divNum, List<byte[]> divData, int[] divAlgFlag, List<byte[]> divIv, byte[] inputData);
|
||||
|
||||
/**
|
||||
* @param storageType 存储类型,0-存储在内部 1-存储在外部
|
||||
* @param algFlag 算法类型:仅支持RSA、SM2
|
||||
* @param keyLength 密钥长度:RSA密钥长度:1024、2048 SM2密钥长度:256
|
||||
* @param keyIndex 密钥索引
|
||||
* @return com.sunyard.RetWrap publicKey:公钥, privateKey-私钥
|
||||
* @author wp
|
||||
* @Description: (A4)生成非对称密钥
|
||||
* @date 2021/5/31
|
||||
*/
|
||||
RetWrap genSYMkey(int storageType, int algFlag, int keyLength, String keyIndex);
|
||||
|
||||
/**
|
||||
* @param storageType 存储类型 0-使用内部密钥,1-使用外部密钥
|
||||
* @param algFlag 算法类型:仅支持RSA、SM2
|
||||
* @param key 使用内部密钥时,该值传后八位密钥索引;使用外部密钥时,该值为签名私钥
|
||||
* @param inputData 数据
|
||||
* @return byte[] 签名数据
|
||||
* @author wp
|
||||
* @Description: (A5)签名接口
|
||||
* @date 2021/5/31
|
||||
*/
|
||||
byte[] signData(int storageType, int algFlag, String key, byte[] inputData);
|
||||
|
||||
/**
|
||||
* @param storageType 存储类型 0-使用内部密钥,1-使用外部密钥
|
||||
* @param algFlag 算法类型:仅支持RSA、SM2
|
||||
* @param key 使用内部密钥时,该值传后八位密钥索引;使用外部密钥时,该值为验签公钥
|
||||
* @param orgData 原数据
|
||||
* @param signData 签名数据
|
||||
* @return java.lang.Boolean
|
||||
* @author wp
|
||||
* @Description: (A6)验签接口——(自定义)
|
||||
* @date 2021/5/31
|
||||
*/
|
||||
Boolean verifySignData(int storageType, int algFlag, String key, byte[] orgData, byte[] signData);
|
||||
|
||||
/**
|
||||
* @param storageType 存储类型 0-使用内部密钥,1-使用外部密钥
|
||||
* @param algFlag 算法类型:仅支持RSA、SM2
|
||||
* @param key 使用内部密钥时,该值传后八位密钥索引;使用外部密钥时,该值为公钥
|
||||
* @param inputData 明文
|
||||
* @return byte[] 密文
|
||||
* @author wp
|
||||
* @Description: (A7)非对称加密接口——(自定义)
|
||||
* @date 2021/5/31
|
||||
*/
|
||||
byte[] ASYMEnData(int storageType, int algFlag, String key, byte[] inputData);
|
||||
|
||||
/**
|
||||
* @param storageType 存储类型 0-使用内部密钥,1-使用外部密钥
|
||||
* @param algFlag 算法类型:仅支持RSA、SM2
|
||||
* @param key 使用内部密钥时,该值传后八位密钥索引;使用外部密钥时,该值为私钥
|
||||
* @param cipherText 密文
|
||||
* @return byte[] 明文
|
||||
* @author wp
|
||||
* @Description: (A8)非对称解密接口
|
||||
* @date 2021/5/31
|
||||
*/
|
||||
byte[] ASYMDeData(int storageType, int algFlag, String key, byte[] cipherText);
|
||||
|
||||
/**
|
||||
* @author wp
|
||||
* @Description:
|
||||
* @date 2021/6/1
|
||||
* @param protectedKeyIndex 保护密钥的索引
|
||||
* @param algFlag 保护密钥算法
|
||||
* @param iv IV 数据域
|
||||
* @param protectedKeyDivNum 保护密钥分散级数
|
||||
* @param protectedKeyDivData 分散因子
|
||||
* @param protectedKeyDivAlgFlag 分散算法标识
|
||||
* @param protectedKeyDivIv 分散算法的初始向量
|
||||
* @param exportKeyNum 导出的密钥索引个数
|
||||
* @param structList 导出的密钥结构体集合
|
||||
* @return com.sunyard.RetWrap
|
||||
*/
|
||||
RetWrap exportKeyAndCalc(String protectedKeyIndex, int algFlag, byte[] iv, int protectedKeyDivNum, List<byte[]> protectedKeyDivData, int[] protectedKeyDivAlgFlag, List<byte[]> protectedKeyDivIv, int exportKeyNum, List<? extends Struct> structList);
|
||||
|
||||
/**
|
||||
* @param keyIndex 密钥索引
|
||||
* @param divNum 密钥分散级数 ,0~3
|
||||
* @param divData 分散因子
|
||||
* @param divAlgFlag 分散算法标识
|
||||
* @param divIv 分散算法的初始向量
|
||||
* @param clientRandom 客户端随机数
|
||||
* @param serverRandom 服务端随机数
|
||||
* @return byte[] 会话密钥
|
||||
* @author wp
|
||||
* @Description: (B1)HTTPS密钥协商
|
||||
* @date 2021/5/31
|
||||
*/
|
||||
byte[] consultKey(String keyIndex, int divNum, List<byte[]> divData, int[] divAlgFlag, List<byte[]> divIv,
|
||||
byte[] clientRandom, byte[] serverRandom);
|
||||
|
||||
/**
|
||||
* @param key 外部密钥
|
||||
* @param seed 种子
|
||||
* @param outLen 输出数据长度
|
||||
* @return byte[] pHash
|
||||
* @author wp
|
||||
* @Description:(B2)HTTPS PHash算法(外部密钥)
|
||||
* @date 2021/5/31
|
||||
*/
|
||||
byte[] pHash(String key, String seed, int outLen);
|
||||
|
||||
/**
|
||||
* @param decryptKeyIndex 存储类型 0-使用内部密钥,1-使用外部密钥
|
||||
* @param decryptAlgFlag 解密算法类型
|
||||
* @param decryptIv 解密初始向量
|
||||
* @param decryptKeyDivNum 解密密钥分散级数
|
||||
* @param decryptKeyDivData 解密分散因子
|
||||
* @param decryptKeyDivAlgFlag 解密分散算法标识
|
||||
* @param decryptKeyDivIv 解密分散算法的初始向量
|
||||
* @param encryptKeyIndex 加密密钥索引
|
||||
* @param encryptAlgFlag 加密密钥算法
|
||||
* @param encryptIv 加密密钥IV
|
||||
* @param encryptKeyDivNum 加密密钥分散级数
|
||||
* @param encryptKeyDivData 加密分散因子
|
||||
* @param encryptKeyDivAlgFlag 加密分散算法标识
|
||||
* @param encryptKeyDivIv 加密分散算法的初始向量
|
||||
* @param inputData 输入数据
|
||||
* @return byte[] 加密后的数据
|
||||
* @author wp
|
||||
* @Description: (B3)内部密钥1解密并使用内部密钥2加密
|
||||
* @date 2021/6/1
|
||||
*/
|
||||
byte[] decrytAndEn(String decryptKeyIndex, int decryptAlgFlag, byte[] decryptIv, int decryptKeyDivNum, List<byte[]> decryptKeyDivData, int[] decryptKeyDivAlgFlag, List<byte[]> decryptKeyDivIv,
|
||||
String encryptKeyIndex, int encryptAlgFlag, byte[] encryptIv, int encryptKeyDivNum, List<byte[]> encryptKeyDivData, int[] encryptKeyDivAlgFlag, List<byte[]> encryptKeyDivIv,
|
||||
byte[] inputData);
|
||||
|
||||
/**
|
||||
* @param storageType 存储类型 0-使用内部密钥 1-使用外部密钥
|
||||
* @param key 使用内部密钥时为解密私钥索引,使用外部密钥时为解密私钥
|
||||
* @param decryptAlgFlag 解密算法类型
|
||||
* @param inputData 待转加密的数据
|
||||
* @param prefixIgnoreCount 使用解密后、加密前,需要对数据的前指定直接做截断(接口不做处理,提供给客户需要)
|
||||
* @param suffixIgnoreCount 使用解密后、加密前,需要对数据的后指定直接做截断(接口不做处理,提供给客户需要)
|
||||
* @return byte[] 使用加密机主密钥加密的对称密钥
|
||||
* @author wp
|
||||
* @Description:(B4)非对称密钥解密并输出主密钥加密对称密钥密文
|
||||
* @date 2021/6/1
|
||||
*/
|
||||
byte[] ASYMDecryptAndEn(int storageType, String key, int decryptAlgFlag, byte[] inputData, int prefixIgnoreCount, int suffixIgnoreCount);
|
||||
|
||||
/**
|
||||
* @param decryptKey 解密密钥
|
||||
* @param decryptAlgFlag 解密算法类型
|
||||
* @param decryptIv IV 数据域
|
||||
* @param inputData 待转加密的数据
|
||||
* @return byte[] 密码机主密钥加密的密钥密文
|
||||
* @author wp
|
||||
* @Description: (B5)外部对称密钥解密并输出主密钥加密对称密钥密文
|
||||
* @date 2021/6/1
|
||||
*/
|
||||
byte[] SYMDecryptAndEn(String decryptKey, int decryptAlgFlag, byte[] decryptIv, byte[] inputData);
|
||||
|
||||
/**
|
||||
* @param encryptKeyIndex enKeyIndex
|
||||
* @param encryptAlgFlag 加密算法类型
|
||||
* @param encryptIv 加密算法IV
|
||||
* @param encryptKeyDivNum 加密密钥分散级数
|
||||
* @param encryptKeyDivData 加密分散因子
|
||||
* @param encryptKeyDivAlgFlag 加密分散算法标识
|
||||
* @param encryptKeyDivIv 加密分散算法的初始向量
|
||||
* @param inputData 待加密机主密钥解密的数据
|
||||
* @return byte[] 离散密钥加密的数据密文
|
||||
* @author wp
|
||||
* @Description:(B6)主密钥解密并输出内部密钥加密的对称密钥密文
|
||||
* @date 2021/6/1
|
||||
*/
|
||||
byte[] decryptByMainAndSYMEn(String encryptKeyIndex, int encryptAlgFlag, byte[] encryptIv, int encryptKeyDivNum,
|
||||
List<byte[]> encryptKeyDivData, int[] encryptKeyDivAlgFlag, List<byte[]> encryptKeyDivIv, byte[] inputData);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user