diff --git a/kit.json b/kit.json new file mode 100644 index 0000000..5949328 --- /dev/null +++ b/kit.json @@ -0,0 +1,66 @@ +{ + "vars": { + "version": "git()", + "out_path": "./pack", + "target_f1": "./target/sydapi4j-jar-with-dependencies.jar", + "target_t1": "%out_path%/sydapi4j-jar-with-dependencies.jar", + "target_f2": "./target/sydapi4j.jar", + "target_t2": "%out_path%/sydapi4j.jar" + }, + "clear": [ + { + "func": "rmdir", + "path": "%out_path%" + } + ], + "init": [ + { + "func": "mkdir", + "path": "%out_path%" + }, + { + "func": "mkdir", + "path": "%out_path%/jar" + }, + { + "func": "mkdir", + "path": "%out_path%/jar/dependences" + }, + { + "func": "mkdir", + "path": "%out_path%/doc" + } + ], + "dependencies": [{ + "func" : "pom", + "xml" : "%out_path%/jar" + }, { + "cmd" : "mvn dependency:copy-dependencies -DincludeScope=runtime -DoutputDirectory=%out_path%/jar/dependences", + "check": "BUILD SUCCESS" + }], + "gen" : [{ + "cmd" : "dproto" + }], + "build": [ + { + "cmd": "mvn package -DskipTests", + "check": "BUILD SUCCESS" + }, + { + "func": "rename", + "from": "%target_f1%", + "to": "%target_t1%" + }, + { + "func": "rename", + "from": "%target_f2%", + "to": "%target_t2%" + }, + { + "func": "zip", + "from": "%out_path%", + "to": "%out_path%/sydapi-%version%.zip" + } + ] + +} diff --git a/src/main/java/com/sunyard/inf/SydSVApi.java b/src/main/java/com/sunyard/inf/SydSVApi.java index 6446d79..01d0bf1 100644 --- a/src/main/java/com/sunyard/inf/SydSVApi.java +++ b/src/main/java/com/sunyard/inf/SydSVApi.java @@ -58,8 +58,8 @@ interface SydAttachedSVApi { * @param orgData 要签名的信息 * @return 签名结果 */ - String SM2SignC(int flag, String privateKey, byte[] publicKey, byte[] orgData); - String SM2SignC(int flag, String pUserID, String privateKey, byte[] publicKey, byte[] orgData); + byte[] SM2SignC(int flag, String privateKey, byte[] publicKey, byte[] orgData); + byte[] SM2SignC(int flag, String pUserID, String privateKey, byte[] publicKey, byte[] orgData); /** * SM2 私钥签名 * @param pUserID 使用者的 ID,最大长度为 16 位数字,右对齐。 @@ -140,7 +140,7 @@ interface SydAttachedSVApi { int nOrgDataType, byte[] publicKey, byte[] orgData, - String sign + byte[] sign ); diff --git a/src/main/java/com/sunyard/inf/customize/SydHAApi.java b/src/main/java/com/sunyard/inf/customize/SydHAApi.java index 7517298..95b48e2 100644 --- a/src/main/java/com/sunyard/inf/customize/SydHAApi.java +++ b/src/main/java/com/sunyard/inf/customize/SydHAApi.java @@ -117,13 +117,13 @@ public interface SydHAApi { * @param nOrgDataType 签名数据类型,SydApi.DATA_ORIGIN(1) 原始数据 SydApi.DATA_HASH(0) : hash 后的类型 * @param publicKey 公钥串,DER编码,HEX格式 * @param orgData 待签名的原始数据,“签名数据类型”为 0 时:HASH 值。“签名数据类型”为 1 时:要签名的信息 - * @param base64Sign 签名数据 (DER 编码 + Base64 编码) + * @param sign S+R * @return 验签是否通过 */ public boolean SM2Verify( int nOrgDataType, byte[] publicKey, byte[] orgData, - String base64Sign + byte[] sign ); } diff --git a/src/main/java/racal/sunyard/main/SydApi4j.java b/src/main/java/racal/sunyard/main/SydApi4j.java index 5df8a00..18dcbe9 100644 --- a/src/main/java/racal/sunyard/main/SydApi4j.java +++ b/src/main/java/racal/sunyard/main/SydApi4j.java @@ -3347,6 +3347,13 @@ public class SydApi4j implements SydApi { // 测试通过 public String SM2GetPrivateKeyC(String privateKeyTag) { + if ( privateKeyTag.length() < 16 ) { + privateKeyTag = "0000000000000000" + privateKeyTag; + privateKeyTag = privateKeyTag.substring( privateKeyTag.length() -16 ); + privateKeyTag += "00000000001"; + } + + ProtoQP proto = new ProtoQP(); HashMap packet = new HashMap(); HashMap data = new HashMap(); @@ -3591,12 +3598,12 @@ public class SydApi4j implements SydApi { * @param orgData 要签名的信息 * @return 签名结果 */ - public String SM2SignC(int flag, String privateKey, byte[] publicKey, byte[] orgData) { + public byte[] SM2SignC(int flag, String privateKey, byte[] publicKey, byte[] orgData) { return SM2SignC( flag, "1234567812345678", privateKey, publicKey, orgData); } // 测试通过 @Override - public String SM2SignC(int flag, String uid, String privateKey, byte[] publicKey, byte[] orgData) { + public byte[] SM2SignC(int flag, String uid, String privateKey, byte[] publicKey, byte[] orgData) { Proto74 proto = new Proto74(); @@ -3637,7 +3644,7 @@ public class SydApi4j implements SydApi { byte[] s = new byte[a]; bb.get(s, 0, a); - return SYMUtil.derSign2Base64Sign(s); + return Util.decodeBase64( SYMUtil.derSign2Base64Sign(s) ); } @@ -3813,10 +3820,10 @@ public class SydApi4j implements SydApi { int nOrgDataType, byte[] publicKey, byte[] orgData, - String base64Sign + byte[] sign ){ String certNo = "1234567812345678"; - return SM2Verify(certNo, nOrgDataType, publicKey, orgData, base64Sign); + return SM2Verify(certNo, nOrgDataType, publicKey, orgData, sign); } @Override @@ -3915,7 +3922,7 @@ public class SydApi4j implements SydApi { // 测试通过 @Override - public boolean SM2Verify(String certNo, int nOrgDataType, byte[] publicKey, byte[] orgData, String base64Sign) { + public boolean SM2Verify(String certNo, int nOrgDataType, byte[] publicKey, byte[] orgData, byte[] sign) { if (certNo.length() > 32) { certNo = certNo.substring(0, 32); @@ -3923,7 +3930,7 @@ public class SydApi4j implements SydApi { Proto75 proto = new Proto75(); //pset.getProtocolReqRender("75"); - byte[] sign = SYMUtil.base64Sign2DerSign(base64Sign); + sign = SYMUtil.base64Sign2DerSign( Util.encodeBase64(sign) ); // 填充数据 HashMap packet = new HashMap(); diff --git a/src/test/java/com/sunyard/sydapi/loadrunner/raw/Actions.java b/src/test/java/com/sunyard/sydapi/loadrunner/raw/Actions.java new file mode 100644 index 0000000..50f6557 --- /dev/null +++ b/src/test/java/com/sunyard/sydapi/loadrunner/raw/Actions.java @@ -0,0 +1,75 @@ +package com.sunyard.sydapi.loadrunner.raw; + +/* + * LoadRunner Java script. (Build: _build_number_) + * + * Script Description: + * + */ + +import lrapi.lr; +import racal.sunyard.main.SydApi4j; +import racal.sunyard.main.SydApiBuilder; +import com.sunyard.proto.Util; +import com.sunyard.SydApi; + +public class Actions +{ + + private static final String inHexData = "67c6697351ff4aec29cdbaabf2fbe346"; + + private static String pk ; + private static String sk ; + private SydApi api; + + + + public int init() throws Throwable { + SydApiBuilder builder = new SydApiBuilder().setIp("192.168.1.123"); + api = builder.build(); + + this.pk = api.SM2GetPublicKeyC("123", 0 ); + this.sk = api.SM2GetPrivateKeyC("123"); + + return 0; + }//end of init + + + public int action() throws Throwable { + lr.start_transaction("auto");//设置事务开始点 + + try { + + System.out.println("begin SYD_Sign_P1"); + byte[] sign = this.api.SM2SignC( 0 , sk, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData) ); + System.out.println("sign=" + Util.bytes2HexString( sign )); + + System.out.println("begin SYD_Verify_P1"); + boolean pass = api.SM2Verify(1, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData), sign ); + System.out.println("验签结果 " + pass); + System.out.println("end SYD_Verify_P1"); + + } finally { + lr.end_transaction("auto", lr.AUTO);//设置事务结束点 + } + + return 0; + }//end of action + + + public int end() throws Throwable { + return 0; + }//end of end + + + public static void main(String[] args) throws Throwable { + + Actions actions = new Actions(); + actions.init(); + actions.action(); + actions.end(); + } + +} + + diff --git a/src/test/java/com/sunyard/sydapi/loadrunner/raw_uid/Actions.java b/src/test/java/com/sunyard/sydapi/loadrunner/raw_uid/Actions.java new file mode 100644 index 0000000..89ffd23 --- /dev/null +++ b/src/test/java/com/sunyard/sydapi/loadrunner/raw_uid/Actions.java @@ -0,0 +1,76 @@ +package com.sunyard.sydapi.loadrunner.raw_uid; + +/* + * LoadRunner Java script. (Build: _build_number_) + * + * Script Description: + * + */ + +import lrapi.lr; +import racal.sunyard.main.SydApi4j; +import racal.sunyard.main.SydApiBuilder; +import com.sunyard.proto.Util; +import com.sunyard.SydApi; + +public class Actions +{ + + private static final String inHexData = "67c6697351ff4aec29cdbaabf2fbe346"; + private static final String uid = "8765432187654321"; + + private static String pk ; + private static String sk ; + private SydApi api; + + + + public int init() throws Throwable { + SydApiBuilder builder = new SydApiBuilder().setIp("192.168.1.123"); + api = builder.build(); + + this.pk = api.SM2GetPublicKeyC("123", 0 ); + this.sk = api.SM2GetPrivateKeyC("123"); + + return 0; + }//end of init + + + public int action() throws Throwable { + lr.start_transaction("auto");//设置事务开始点 + + try { + + System.out.println("begin SYD_Sign_P1"); + byte[] sign = this.api.SM2SignC( 0, uid , sk, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData) ); + System.out.println("sign=" + Util.bytes2HexString( sign )); + + System.out.println("begin SYD_Verify_P1"); + boolean pass = api.SM2Verify( uid, 1, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData), sign ); + System.out.println("验签结果 " + pass); + System.out.println("end SYD_Verify_P1"); + + } finally { + lr.end_transaction("auto", lr.AUTO);//设置事务结束点 + } + + return 0; + }//end of action + + + public int end() throws Throwable { + return 0; + }//end of end + + + public static void main(String[] args) throws Throwable { + + Actions actions = new Actions(); + actions.init(); + actions.action(); + actions.end(); + } + +} + + diff --git a/src/test/java/com/sunyard/sydapi/test/ABCNorthBranch.java b/src/test/java/com/sunyard/sydapi/test/ABCNorthBranch.java deleted file mode 100644 index 4cf1c69..0000000 --- a/src/test/java/com/sunyard/sydapi/test/ABCNorthBranch.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.sunyard.sydapi.test; - -import com.sunyard.RetWrap; -import com.sunyard.SydApi; -import com.sunyard.proto.Util; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import racal.sunyard.main.SydApi4j; - -import java.io.UnsupportedEncodingException; - -import static com.sunyard.sydapi.util.PrintUtil.printByteArray; -import static com.sunyard.sydapi.util.PrintUtil.printRetWrap; - -/** - * 农行北分海淀支行-军队资金集中收付系统 - */ -public class ABCNorthBranch { - - SydApi4j api; - - // SM2密钥索引 - String SM2PrivateKeyTag = "111111111111115100000000001"; - // SM2公钥 - String SM2PublicKey = null; - // SM2私钥 - String SM2PrivateKey = null; - - // SM4密钥索引 - String SM4PrivateKeyTag = "000000000000000100011111111"; - // SM4密钥 - String SM4Key = null; - - - @Before - public void before() { - System.setProperty("com.sunyard.sydapi4j.debug", "true"); - api = (SydApi4j) new SydApi4j().connect("61.164.40.82", 8889, null, 5000); - - SM2PublicKey = api.SM2GetPublicKeyC(SM2PrivateKeyTag); - SM2PrivateKey = api.SM2GetPrivateKeyC(SM2PrivateKeyTag); - - - SM4Key = new String((byte[]) api.readKey(SM4PrivateKeyTag).get("key")); - - System.out.println("=========================================密钥获取完成========================================="); - } - - @After - public void after() { - try { - this.api.disconnect(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - // A4 - @Test - public void testComposeKey() { - String[] strs = {"583034303438393445374238444531323942344646344546393838394535364132", "583934443335443836454631463332313344353543343738323246383744333835"}; - RetWrap rw = api.composeKey("000", strs); - - printRetWrap(rw); - } - - - // 测试通过 - // 74 - @Test - public void testSM2SignC2() { - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(1, SM2PrivateKeyTag, Util.hexString2Bytes(SM2PublicKey), thisOrgData.getBytes()); - System.out.println(s); - } - - // 测试通过 - // 74 - @Test - public void testSM2SignC3() { - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(0, SM2PrivateKey, Util.hexString2Bytes(SM2PublicKey), thisOrgData.getBytes()); - System.out.println(s); - } - - // 75 - @Test - public void testSM2SignAndVerify() { - String orgData = "11111111111111"; - - // 这里,不管是签名还是验签,都需要在外部做一次hash。 - byte[] hash = api.SM3Hash(SM2PublicKey, orgData.getBytes()); - - /** - * 用私钥签名(外部私钥) - * @param nOrgDataType 签名数据类型,0 : hash 1 : 原数据 - * @param privateKey LMK34-35 下加密的私钥 - * @param orgData “签名数据类型”为 0 时:HASH 值。“签名数据类型”为 1 时:要签名的信息 - * @return 签名的 base64 编码 - */ - String s = api.SM2Sign(SydApi.DATA_HASH, Util.hexString2Bytes(SM2PrivateKey), hash); - - // 这里的签名结果已经符合条件了,不需要做转换 - System.out.println("签名结果: " + s); - System.out.println("decBase64:" + Util.bytes2HexString(Util.decodeBase64(s))); - /** - * 用指定的公钥对指定的原始数据进行数字签名验证(PKCS#1) - * @param nOrgDataType 签名数据类型,SydApi.DATA_ORIGIN(1) 原始数据 SydApi.DATA_HASH(0) : hash 后的类型 - * @param publicKey 公钥串,DER编码,HEX格式 - * @param orgData 待签名的原始数据,“签名数据类型”为 0 时:HASH 值。“签名数据类型”为 1 时:要签名的信息 - * @param base64Sign 签名数据 (DER 编码 + Base64 编码) - * @return 验签是否通过 - */ - boolean b = api.SM2Verify(SydApi.DATA_HASH, Util.hexString2Bytes(SM2PublicKey), hash, s); - System.out.println("验签结果: " + b); - } - - - // 测试通过 - // 75 - @Test - public void testSM2Verify3() { - - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(1, SM2PrivateKeyTag, Util.hexString2Bytes(SM2PublicKey), thisOrgData.getBytes()); - - System.out.println(s); - boolean b = api.SM2Verify(Util.hexString2Bytes(SM2PublicKey), thisOrgData.getBytes(), s); - System.out.println(b); - } - - // 测试通过 - // E0 - @Test - public void testSM4EncryptDataCBC() { - String msg = "1111111111111111111111"; - byte[] bytes = api.SM4EncryptDataCBC(0, SM4Key, 0, 0, msg.getBytes()); - printByteArray(bytes); - - } - - // 测试通过 - // E0 - @Test - public void testSM4DecryptDataCBC() { - String msg = "11111111111"; - byte[] bytes = api.SM4EncryptDataCBC(0, SM4Key, 0, 0, msg.getBytes()); - - byte[] bytes1 = api.SM4DecryptDataCBC(0, SM4Key, 0, 0, bytes); - - printByteArray(bytes1, false); - } - - // 测试通过 - // E0 - @Test - public void testSM4EncryptFileDataCBC() { - - String inFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in1.txt"; - String outFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in2.txt"; - boolean b = api.SM4EncryptFileDataCBC(0, SM4Key, 0, 0, inFilePath, outFilePath); - System.out.println(b); - } - - - // 测试通过 - // E0 - @Test - public void testSM4DecryptFileDataCBC() throws UnsupportedEncodingException { - - String outFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in2.txt"; - String outFilePath2 = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\out1.txt"; - boolean b = api.SM4DecryptFileDataCBC(0, SM4Key, 0, 0, outFilePath, outFilePath2); - System.out.println(b); - } - - // LF - @Test - public void testReadKey() { - RetWrap retWrap = api.readKey(SM4PrivateKeyTag); - printRetWrap(retWrap); - } - - // QQ - @Test - public void testSM2GetPublicKeyC3() { - - String s = api.SM2GetPublicKeyC(SM2PrivateKeyTag); - System.out.println(s); - } - - // QP - @Test - public void testSM2GetPrivateKeyC() { - String s = api.SM2GetPrivateKeyC(SM2PrivateKeyTag); - System.out.println(s); - } - -} diff --git a/src/test/java/com/sunyard/sydapi/test/TestAllMethods.java b/src/test/java/com/sunyard/sydapi/test/TestAllMethods.java deleted file mode 100644 index 3939db7..0000000 --- a/src/test/java/com/sunyard/sydapi/test/TestAllMethods.java +++ /dev/null @@ -1,2569 +0,0 @@ -package com.sunyard.sydapi.test; - -import com.sunyard.RetWrap; -import com.sunyard.SydApi; -import com.sunyard.SydApiException; -import com.sunyard.cert.X509; -import com.sunyard.proto.Util; -import com.sunyard.util.CoderUtil; -import com.sunyard.util.SYMUtil; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import racal.sunyard.main.SydApi4j; - -import java.io.*; -import java.lang.reflect.Method; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.net.SocketAddress; -import java.nio.ByteBuffer; -import java.nio.charset.StandardCharsets; -import java.util.Base64; - -import static com.sunyard.sydapi.util.PrintUtil.printByteArray; -import static com.sunyard.sydapi.util.PrintUtil.printRetWrap; - -/** - * 所有方法的测试类 - */ -public class TestAllMethods { - - SydApi4j api; - - String account = "157212737811"; - - @Before - public void before() { - // 通过设置debug的属性开启debug,如果不设置则默认不打开 - System.setProperty("com.sunyard.sydapi4j.debug", "true"); -// api = (SydApi4j) new SydApi4j().connect("172.16.18.59", 8889, null, 1000); -// api = (SydApi4j) new SydApi4j().connect("192.168.0.119", 8889, null, 1000); -// api = (SydApi4j) new SydApi4j().connect("61.164.40.82", 8889, null, 1000); -// api = (SydApi4j) new SydApi4j().connect("192.168.0.66", 8889, null, 1000); - api = (SydApi4j) new SydApi4j().connect("192.168.0.100", 8889, null, 1000); -// api = (SydApi4j) new SydApi4j().connect("192.168.0.99", 8889, null, 1000); -// api = (SydApi4j) new SydApi4j().connect("172.16.17.162", 8889, null, 1000); -// api = (SydApi4j) new SydApi4j().connect("192.168.1.7", 8889, null, 5000); - } - - // 测试通过 - // Y8 - @Test - public void testLink() { - String s = api.GenerateRandom(16); - System.out.println(s); - } - - @After - public void after() { - try { - this.api.disconnect(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - // 获取证书 - public String getCertStr(String path) { - - BufferedInputStream bis = null; - try { - bis = new BufferedInputStream(new FileInputStream(path)); - - StringBuilder str = new StringBuilder(); - - int len = 0; - - while ((len = bis.read()) != -1) { - str.append((char) len); - } - - return str.toString(); - } catch (IOException e) { - e.printStackTrace(); - } finally { - if (bis != null) { - try { - bis.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - return null; - } - - /** - * 将hex类型的数组转为byte型 - * {"X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385"} - * 转为 - * [583034303438393445374238444531323942344646344546393838394535364132, 583934443335443836454631463332313344353543343738323246383744333835] - * @param strs - * @return - */ - public String[] strArr2BytesStrArr(String[] strs) { - String[] requestStrs = new String[strs.length]; - - for (int i = 0, len = strs.length; i < len; i++) { - String changeStr = Util.bytes2HexString(strs[i].getBytes()); - requestStrs[i] = changeStr; - } - - return requestStrs; - } - - /** - * 删除字符串中的空格 - * @param str - * @return - */ - public String changeStr(String str) { - return str.replaceAll(" ", ""); - } - - - /** - * 读取文件中的信息,返回byte数组 - * @param filePath 文件路径 - * @return - */ - public byte[] inputStream2ByteArray(String filePath) { - - BufferedInputStream in = null; - ByteArrayOutputStream out = null; - byte[] data = null; - try { - in = new BufferedInputStream(new FileInputStream(filePath)); - - out = new ByteArrayOutputStream(); - - byte[] buffer = new byte[1024 * 4]; - int n = 0; - while ((n = in.read(buffer)) != -1) { - out.write(buffer, 0, n); - } - - data = out.toByteArray(); - } catch (IOException e) { - e.printStackTrace(); - } finally { - - if (in != null) { - try { - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - if (out != null) { - try { - out.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - return data; - } - - /** - * 自己发送及接收 - * @throws IOException - */ - @Test - public void testSendData() throws IOException { - String msg = "000D00000000000000005938303136"; - - String ip = "172.16.18.59"; - int port = 8889; - int timeout = 1000; - - // 连接socket - Socket socket = new Socket(); - SocketAddress address = new InetSocketAddress(ip, port); - - try { - socket.connect(address, timeout); - socket.setSoTimeout(timeout); - } catch (IOException e) { - e.printStackTrace(); - } - - InputStream is = null; - try { - // 发送数据 - socket.getOutputStream().write(Util.hexString2Bytes(msg)); - // 接收数据 - is = socket.getInputStream(); - } catch (IOException e) { - e.printStackTrace(); - } - - // 处理数据 - int d; - int high = is.read(); - int low = is.read(); - // 计算数据总长度 - int len = (high << 8) + low; - - len += 2; - - // 创建ByteBuffer - ByteBuffer bb = ByteBuffer.allocate(len); - bb.put((byte) (high & 0xFF)); - - bb.put((byte) (low & 0xFF)); - - // 将数据放入ByteBuffer中 - while ((d = is.read()) != -1) { - - bb.put((byte) (d & 0xFF)); - if (bb.position() == len) { - break; - } - } - - System.out.println("返回的hex: " + Util.bytes2HexString(bb.array())); - } - - - // A0 1.1.1 对称密钥产生, - // 测试通过 - // A0 - @Test - public void testGenSymmetricKey() { - RetWrap retWrap = api.genSymmetricKey("000", 'X'); - - printRetWrap(retWrap); - } - - // 002D3030303030303030 - // 4130 - // 31 - // 303030 - // 58 - // 534B393939393939393939393939303030303030303030303030303030 - // 58 - - // A0 1.1.2 对称密钥产生, 对比之前添加了可产生ZMK加密下的密钥, - // 测试通过 - // A0 - @Test - public void testGenSymKey() { - // 此密钥方案为: 1A+K+27位的索引号 - RetWrap retWrap = api.genSymKey(1, "000", 'X', "SK999999999999000000000000000"); - - printRetWrap(retWrap); - } - - // 00000000 - // A4 - // 2 - // 000 - // X - // 密钥成份1:X0404894E7B8DE129B4FF4EF9889E56A2 - // 密钥成份2:X94D35D86EF1F3213D55C47822F87D385 - - // 003300000000000000004135 - // 3030 - // 58 - // 4639334538393745423345383636413346314233324432303232324245333446 - // 314246383237 - - // 测试通过 - // A4 - @Test - public void testComposeKey() { - String[] strs = {"583034303438393445374238444531323942344646344546393838394535364132", "583934443335443836454631463332313344353543343738323246383744333835"}; - RetWrap rw = api.composeKey("000", strs); - - printRetWrap(rw); - } - - // 00503030303030303030 - // 4136 - // 303030 - // 584141414141414141414141414141414142424242424242424242424242424242 - // 583934443335443836454631463332313344353543343738323246383744333835 - // 58 - - // 00000000 - // A6 - // 000 - // ZMK:XAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB - // ZMK下加密的密钥:X94D35D86EF1F3213D55C47822F87D385 - // X - - // 测试通过 - // A6 - @Test - public void testInputKey() { - RetWrap retWrap = api.inputKey("000", 'X', "XAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB", "X94D35D86EF1F3213D55C47822F87D385"); - - printRetWrap(retWrap); - } - - // 00000000 - // A8 - // 000 - // XAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB - // X0404894E7B8DE129B4FF4EF9889E56A2 - // X - - // 测试通过 - // A8 - @Test - public void testOutputKey() { - RetWrap retWrap = api.outputKey("000", 'X', "XAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB", "X94D35D86EF1F3213D55C47822F87D385"); - printRetWrap(retWrap); - } - - // 测试通过 - // B0 - @Test - public void testConversionKey() { - RetWrap retWrap = api.conversionKey("000", "X0404894E7B8DE129B4FF4EF9889E56A2", 'U'); - printRetWrap(retWrap); - } - - // 测试通过 - // AA - @Test - public void testAAGenComposeKey() { - RetWrap retWrap = api.genComposeKey("000", 'Y', "0404894E7B8DE129B4FF4EF9889E56A2129B4FF4EF9889E5"); - printRetWrap(retWrap); - } - - // 005130303030303030304759 - // 32 - // 583034303438393445374238444531323942344646344546393838394535364132 - // 583934443335443836454631463332313344353543343738323246383744333835 - // 3B - // 58 - // 58 - // 30 - - // 测试通过 - // GY - @Test - public void testGYGenComposeKey() { - String[] strs = {"X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385"}; - - RetWrap retWrap = api.genComposeKey(strArr2BytesStrArr(strs)); - printRetWrap(retWrap); - } - - // 测试通过 - // BY - @Test - public void testChangZMK2LMK() { - String[] strs = {"X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385"}; - RetWrap retWrap = api.changZMK2LMK(strs[0], strs[1]); - printRetWrap(retWrap); - } - - // 测试通过 - // IA - @Test - public void testGenZPK() { - RetWrap retWrap = api.genZPK("X94D35D86EF1F3213D55C47822F87D385"); - printRetWrap(retWrap); - } - - // 测试通过 - // FA - @Test - public void testTranZPKFromZMKToLMK() { - RetWrap retWrap = api.tranZPKFromZMKToLMK("X94D35D86EF1F3213D55C47822F87D385", "51101CCAFBFE8300"); - printRetWrap(retWrap); - } - - // 测试通过 - // GC - @Test - public void testTranZPKFromLMKToZMK() { - RetWrap retWrap = api.tranZPKFromLMKToZMK("X94D35D86EF1F3213D55C47822F87D385", "958FA085C014833A"); - printRetWrap(retWrap); - } - - // 测试通过 - // FI - @Test - public void testGenZEKOrZAK() { - RetWrap retWrap = api.genZEKOrZAK(0, "X94D35D86EF1F3213D55C47822F87D385"); - printRetWrap(retWrap); - } - - // 测试通过 - // FK - @Test - public void testTranZEAKFromZMKToLMK() { - RetWrap retWrap = api.tranZEAKFromZMKToLMK(0, "X94D35D86EF1F3213D55C47822F87D385", "3B4887E5E9FDF339"); - printRetWrap(retWrap); - } - - // 测试通过 - // FM - @Test - public void testTranZEAKFromLMKToZMK() { - RetWrap retWrap = api.tranZEAKFromLMKToZMK(0, "X94D35D86EF1F3213D55C47822F87D385", "1D969301FFA4FB13"); - printRetWrap(retWrap); - } - - // 测试通过 - // HC - @Test - public void testGenKeyByTMKOrTPKOrPVK() { - RetWrap retWrap = api.genKeyByTMKOrTPKOrPVK("X94D35D86EF1F3213D55C47822F87D385"); - printRetWrap(retWrap); - } - - // 测试通过 - // AE - @Test - public void testTranKeyByTMKToAno() { - RetWrap retWrap = api.tranKeyByTMKToAno("7E3F0E0A2335046B", "162FDF5B93DFE4B8"); - printRetWrap(retWrap); - } - - // 测试通过 - // FC - @Test - public void testTranKeyByTMKFromZMKToLMK() { - RetWrap retWrap = api.tranKeyByTMKFromZMKToLMK("X94D35D86EF1F3213D55C47822F87D385", "51101CCAFBFE8300"); - printRetWrap(retWrap); - } - - // 测试通过 - // FE - @Test - public void testTranKeyByTMKFromLMKToZMK() { - RetWrap retWrap = api.tranKeyByTMKFromLMKToZMK("X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385"); - printRetWrap(retWrap); - } - - // 测试通过 - // HA - @Test - public void testGenTAK() { - RetWrap retWrap = api.genTAK("X0404894E7B8DE129B4FF4EF9889E56A2"); - printRetWrap(retWrap); - } - - // 测试通过 - // MF - @Test - public void testTransTAKFromZMKToLMK() { - RetWrap retWrap = api.transTAKFromZMKToLMK("X94D35D86EF1F3213D55C47822F87D385", "X46928685CAFD050DBF5CCFC049E41BF5"); - printRetWrap(retWrap); - } - - // 测试通过 - // MG - @Test - public void testTransTAKFromLMKToZMK() { - RetWrap retWrap = api.transTAKFromLMKToZMK("X94D35D86EF1F3213D55C47822F87D385", "X36CC70E4274AA879AD9AE5596124DFA7"); - printRetWrap(retWrap); - } - - // 测试通过 - // AG - @Test - public void testTransTAKFromLMKToTMK() { - RetWrap retWrap = api.transTAKFromLMKToTMK("X94D35D86EF1F3213D55C47822F87D385", "X36CC70E4274AA879AD9AE5596124DFA7"); - printRetWrap(retWrap); - } - - // 测试通过 - // JA - @Test - public void testGenPIN() { - String s = api.genPIN("157212737811"); - System.out.println(s); - } - - // 00713030303030303030 - // 4343 - // 583034303438393445374238444531323942344646344546393838394535364132 - // 583934443335443836454631463332313344353543343738323246383744333835 - // 50 - // 31 - // 31 - // 3132 - // 33373532373544313235363334384341 - // 3031 - // 3031 - // 313537323132373337383131 - - // 测试通过 - // CC - @Test - public void testTransPINFromZPKToZPK() { - String s = api.transPINFromZPKToZPK("X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385", 1, 1, 1, 1, "375275D1256348CA", "157212737811"); - System.out.println(s); - } - - // 测试通过 - // JE - @Test - public void testTransPINFromZPKToLMK() { - String str = api.transPINFromZPKToLMK("X0404894E7B8DE129B4FF4EF9889E56A2", 1, 1, 01, "375275D1256348CA", "157212737811"); - System.out.println(str); - } - - // 测试通过 - // JG - @Test - public void testTransPINFromLMKToZPK() { - String s = api.transPINFromLMKToZPK("958FA085C014833A", 1, 1, 01, "54367430851C073B", "157212737811"); - System.out.println(s); - } - - // 测试通过 - // CA - @Test - public void testTransPINFromTPKToZPK() { - String s = api.transPINFromTPKToZPK("189A8A973A9FF7CF", "F4663B51F823CFDC", 1, 1, 1, 1, "5162F23A8354424E", "157212737811"); - System.out.println(s); - } - - // 测试通过 - // JC - @Test - public void testTransPINFromTPKToLMK() { - String zpk = "189A8A973A9FF7CF"; - String pin = "5162F23A8354424E"; - String s = api.transPINFromTPKToLMK(zpk, 1, 1, 1, pin, account); - System.out.println(s); - } - - // 测试通过 - // BA - @Test - public void testEncryPIN() { - String pin = "06157212FFFFFFFF"; - String s = api.encryPIN(0, pin, account); - System.out.println(s); - } - - // 测试通过 - // NG - @Test - public void testDecryPIN() { - String pin = "EB53196BFAD34C39"; - String s = api.decryPIN(0, pin, account); - System.out.println(s); - } - - - // 006E00000000000000004342303030303030584B303030303030303030303030303030313030303030303030303031584B30303030303030303030303030303032303030303030303030303250313131313239384430324231433742433945303130313135373231323733373831314E - - // 没有该指令 - // CB - @Test - public void testTransPinFrOneKeyToAno() { - String srcKey = "XK000000000000000100000000001"; - String desKey = "XK000000000000000200000000002"; - String sPin = "11298D02B1C7BC9E"; - String s = api.transPinFrOneKeyToAno("000", "000", srcKey, desKey, 1, 1, sPin, account); - System.out.println(s); - } - - // 003B3030303030303030 - // 4D41 - // 583430423631363946363334393530363034304236313639463633343935303630 - // 31353732313237333738313130303030 - - // 测试通过 - // MAXF - @Test - public void testMAC_Data() { - String key = "X40B6169F6349506040B6169F63495060"; - String macData = "1572127378110000"; - byte[] bytes = api.MAC_Data( key, macData, null); - - System.out.println(new String(bytes)); - } - - // 00000000 - // MA - // P - // 1 - // 0 - // 0 - // 1 - // XK122222222222222200312222222 - // 11110000 - - // 00300000000000000000 - // 4D41 - // 50 - // 31 - // 30 - // 30 - // 31 - // 584B313232323232323232323232323232323030333132323232323232 - // 31313131 - - // 测试通过 - // MA - @Test - public void testMACCalc() { - - String s = api.MACCalc(1, 0, "XK122222222222222200312222222", 0, "1111".getBytes(), 1); - System.out.println(s); - } - - // 003C0000000000000000 - // 4D43 - // 50 - // 31 - // 30 - // 30 - // 32 - // 584B313232323232323232323232323232323030333132323232323232 - // 3131313131313131 - // 3131313131313131 - - // 00383030303030303030 - // 4D43 - // 50 - // 31 - // 30 - // 30 - // 31 - // 584B313232323232323232323232323232323030333132323232323232 - // 31313131 - // 3131313131313131 - - // MC - @Test - public void testMACCheck() { - String AK = "XK122222222222222200312222222"; - - String s = api.MACCalc(1, 0, AK, 0, "1111".getBytes(), 1); - - api.MACCheck(1, 0, AK, 0, "1111".getBytes(), s); - } - - String key = "X40B6169F6349506040B6169F63495060"; - String msg = "AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB"; - - // 测试通过 - // MS - @Test - public void testGenMAB() { - RetWrap retWrap = api.genMAB(1, 0, 1, key, null, msg.getBytes()); - printRetWrap(retWrap); - } - - // 测试通过 - // MU - @Test - public void test_calcPBOCMAC() { - byte[] bytes = api._calcPBOCMAC(1, 0, key, msg.getBytes(), 1, null); - System.out.println(new String(bytes)); - } - - // 测试通过 - // E0 - @Test - public void testSYMEnDeData() { - String seesionKey = "XFD92E1D7C45FA56EAD2F4FC1E7898465"; - String pInData = "1111111111111111"; - String IV = "1111111111111111"; - - RetWrap retWrap = api.SYMEnDeData(true, 0, seesionKey, 2, 0, pInData.getBytes(), IV.getBytes(), 0); - printRetWrap(retWrap, true); - } - - // 00650000000000000000 - // 4530 - // 30 - // 38 - // 3230583643454537343433323934393942343236434545373434333239343939423432303031303030303230303030303030303030303030303030303030303030303030303030303030303030423131313131313131313131 - - // 测试通过 - // E0 - @Test - public void testSM4EncryptDataCBC() { - String key = "X6CEE744329499B426CEE744329499B42"; - String msg = "1111111111111111111111"; - byte[] bytes = api.SM4EncryptDataCBC(0, key, 0, 0 , msg.getBytes()); - printByteArray(bytes); - - } - - // 00200000000000000000 - // 4531 - // 303030 - // 303130 - // FF045D9DFA5DBE95CBC4285499719EF1 - - // 006A000000000000000245303039323058364345453734343332393439394234323643454537343433323934393942343230303130303030323030303030303030303030303030303030303030303030303030303030303030303130FF045D9DFA5DBE95CBC4285499719EF1 - // 测试通过 - // E0 - @Test - public void testSM4DecryptDataCBC() { - String key = "X6CEE744329499B426CEE744329499B42"; - String msg = "11111111111"; - byte[] bytes = api.SM4EncryptDataCBC(0, key, 0, 0 , msg.getBytes()); - System.out.println("输出为: " + Util.bytes2HexString(bytes)); - - byte[] bytes1 = api.SM4DecryptDataCBC(0, key, 0, 0, bytes); - - printByteArray(bytes1, false); - } - - // 00850000000000000000 - // 4530 - // 30 - // 38 - // 32 - // 30 - // 583643454537343433323934393942343236434545373434333239343939423432 - // 30 - // 30 - // 31 - // 30303030 - // 32 - // 3030303030303030303030303030303030303030303030303030303030303030 - // 303242 - // 31303130313131313131313131313131313131313131313030303030303030303031313131313131313131 - - // 测试通过 - // E0 - @Test - public void testSM4EncryptFileDataCBC() { - String key = "X6CEE744329499B426CEE744329499B42"; - String inFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in.txt"; - String outFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in2.txt"; - boolean b = api.SM4EncryptFileDataCBC(0, key, 0, 0, inFilePath, outFilePath); - System.out.println(b); - } - - - // 测试通过 - // E0 - @Test - public void testSM4DecryptFileDataCBC() throws UnsupportedEncodingException { - String key = "X6CEE744329499B426CEE744329499B42"; - String outFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in2.txt"; - String outFilePath2 = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\out1.txt"; - boolean b = api.SM4DecryptFileDataCBC(0, key, 0, 0, outFilePath, outFilePath2); - System.out.println(b); - } - - // 测试通过 - // E0 - @Test - public void testEncDecData() { - - String msg = "1111111111111111111111"; - - /** - * 对称密钥产生 - * @param keyType 密钥类型 - * @param solution 密钥方案(LMK) 密钥长度/LMK下加密密钥的方案。 - * @return RetWrap 包含 - * lmkKey LMK LMK加密密钥 - * keyCheck 密钥校验值 - * - */ - RetWrap retWrap = api.genSymmetricKey("000", 'S'); - - byte[] lmkKey = (byte[]) retWrap.get("lmkKey"); - - String key = new String(lmkKey); - - System.out.println("对称密钥:" + key); - - /** - * 用输入的会话密钥,对指定报文数据进行加密处理。 - * - * @param nAlg  算法标识.,0x00:3DES,0x01:SM4。 - * @param seesionKey  本地LMK 加密的会话密钥,HEX 格式 - * @param pINdata  要加密的报文明文。必须是 8 或16 的倍数。 - * @return 输出的报文密文, 长度为报文明文 + 16 - */ - byte[] bytes = api.SYMEncryptDataCBC(1, key, msg.getBytes()); - - System.out.println("输出为: " + com.sunyard.proto.Util.bytes2HexString(bytes)); - - /** - * 用输入的会话密钥,对指定报文数据进行解密处理。 - * - * @param nAlg  算法标识.,0x00:3DES,0x01:SM4。 - * @param seesionKey 本地LMK 加密的会话密钥,HEX 格式 - * @param pINdata 要解密的报文密文。长度必须是8 或16 的倍数。 - * @return 输出的报文明文。 - */ - byte[] bytes1 = api.SYMDecryptDataCBC(1, key, bytes); - System.out.println("明文:" + new String(bytes1)); - } - - // 测试通过 - // E0 - @Test - public void testEncDecData1() { - - // 000000000000011100000000001 - String key = "XK000000000000011100000000001"; - - String msg = "111111111111111111qewehtrhq1"; - - byte[] bytes = api.SYMEncryptDataCBC(1, key, msg.getBytes()); - - System.out.println("输出为: " + Util.bytes2HexString(bytes)); - - byte[] bytes1 = api.SYMDecryptDataCBC(1, key, bytes); - System.out.println("明文:" + new String(bytes1)); - } - - // 测试通过 - // E0 - @Test - public void testEncDecData2() { - - String userId = "0000000000000111"; - String index = "00000001"; - - String msg = "1011111111111111101"; - - byte[] bytes = api.SYMSM4EncDataByIndex(0, userId, index, msg.getBytes()); - - System.out.println("输出为: " + Util.bytes2HexString(bytes)); - - byte[] bytes1 = api.SYMSM4DecDataByIndex(0, userId, index, bytes); - System.out.println("明文:" + new String(bytes1)); - } - - @Test - public void testaaa() throws UnsupportedEncodingException { - String key = "X6CEE744329499B426CEE744329499B42"; - String inFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in1.txt"; - String outFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in2.txt"; - String outFilePath2 = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\out1.txt"; - - boolean b = api.SM4EncryptFileDataCBC(0, key, 0, 0, inFilePath, outFilePath); - System.out.println(b); - boolean c = api.SM4DecryptFileDataCBC(0, key, 0, 0, outFilePath, outFilePath2); - System.out.println(c); - } - - // 测试通过 - // Y0 - @Test - public void testSwitchEncryY() { - String sDEK = "X40B6169F6349506040B6169F63495060"; - String dDEK = "X94D35D86EF1F3213D55C47822F87D385"; - String infoData = "93B0FB7F609A16E0C2D6BD0AC4AE0297"; - - byte[] bytes = api.switchEncryY("000", 2, "001", 2, 1, sDEK, dDEK, infoData.getBytes(), "0"); - System.out.println(new String(bytes)); - } - - // 测试通过 - // LB - @Test - public void testLoadKey() { - String index = "000000000000000300000000004"; - String key = "X94D35D86EF1F3213D55C47822F87D385"; - Boolean check = api.loadKey(index, key, null); - System.out.println(check); - } - - // 从用户存储区获取对称密钥 - // 测试通过 - // LF - @Test - public void testReadKey() { - String index = "000000000000000100022222222"; - RetWrap retWrap = api.readKey(index); - printRetWrap(retWrap); - - System.out.println("aaaaaaaa: " + new String((byte[]) retWrap.get("key"))); - } - - // 测试通过 - // LG - @Test - public void testUpdateKey() { - String index = "000000000000000300000000003"; - String key = "X94D35D86EF1F3213D55C47822F87D385"; - Boolean aBoolean = api.updateKey(index, key, "0000000000000000"); - System.out.println(aBoolean); - } - - // 00A30000000000000000 - // 3737 - // 31 - // 30313238 - // 5E1A8F50696C737AFCA0D2F7093E90D3913204013C4A85072AA8D3CDBE1782860000000000000000000000000000000000000000000000000000000000000000C729A69AA23CA0736E5C223487DF211D51BAFFDCF06914CE2E855EF6DE0F42AB0000000000000000000000000000000000000000000000000000000000000000 - // 30303136 - // 46464646464646464646464646464646 - - // 测试通过 - // 77 - @Test - public void testEncryptByPk() { - String pk = "034200042E2980FEDC9DAB03EEE490D9382CA04F018D905EF7319152ADF6A47EF2E3675204B015B7D16AB015AC8C2F24D2E63F69B867E16BA47B0138A86D4461DAE568A6"; - String data = "FFFFFFFFFFFFFFFF"; - - byte[] bytes = api.encryptByPk(1, pk, data.getBytes()); - System.out.println(Util.bytes2HexString(bytes)); - } - - // 测试通过 - // 78 - @Test - public void testDecryptBySkC() { - // userId - String userId = "7777777777777779"; - String pk = "034200042E2980FEDC9DAB03EEE490D9382CA04F018D905EF7319152ADF6A47EF2E3675204B015B7D16AB015AC8C2F24D2E63F69B867E16BA47B0138A86D4461DAE568A6"; - String data = "FFFFFFFFFFFFFFFF"; - - byte[] bytes = api.encryptByPk(1, pk, data.getBytes()); - String encryptData = Util.bytes2HexString(bytes); - System.out.println("加密后的数据: " + encryptData); - - byte[] originalData = api.decryptBySkC(1, userId, Util.hexString2Bytes(encryptData)); - System.out.println("解密后的数据: " + Util.bytes2HexString(originalData)); - } - - // 79 - @Test - public void testEncryptBySk() { - String rsaKey = "000400001661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019415964EDC1D617DCEA0E332EC9AF01165091AE6599AD06F6E24CD73CEA2FDA0D6A2CCF6805EBF5C9523D2C2D4670F920B166489B2B752903BA739219FE9FD7A4ABA0AFA3D19C4E0C2957DA3999B1772C562C5CFDDB2DD545A786E3FF7F7376DA978234CA5A51A1C5EE8CFA1B3460356E8F8808799E5DC39646FEEEF2AC2CE38D281661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E0194157BA816DB8823AAF1661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941971D31BFA90FCBF88452F15691C90A6EF4BC3B39496C7B1BF6C0BFEFFFCACEE3E8D5E177AB8C77A7BB04430E6540650887251CCC5B5B94D0509161F46A13B8E2D5D3971BBA180007441CB72FCB0F12317ADFD52BE098931AAB5ECA412D7DCFCE707D51A95B6E5F5826A9637D947CB4E9A5544C4622099D427CC2F1C81C9166B61661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019415AFF74E24873502CBBE817497587F920D6DBB6AFAA3617ABC1003EF00C86BF4758C5997FD61408ED619FF7ADAA281D4AAEA98848D074F820CAD0CE68A86597231661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941724AD53411CB6FD50BF14981C35E8FFB53EB2D3993060C67D720924F5FA2DAFFE2222D94E8BD98FC5FC0BCD3D7F58E8268C3E1E88C7EFEE66E490C9BC744B3C91661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941B33F7E511B17707CC89F17D463C4B24E7344BD742C137E6FFBAC1080C28C6656F07DC88DECDAE7C984587E82E668BC54921BC78264BB06CF54E4D5BE75C019271661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941456204A062F7A9B68ECC8ACCB5234FD5DE4BCA71D1531251BAA67B1DAB49A0F7FDD0ED8DB217A3C5A753AD14868D912600C44DDE8879A22D6B7408C9E190169E1661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E0194123DD650FD6D8E766A5CDEE9D67715906A9591ACAA8FEFCA401494F18F79EAA439FB54C628493FEF624D71624C0CB17AA5E92B0EB97B1A26EF34C6809EC58D64A"; - String sm2Key = "0001000039003BABAA8C984A527E804591119F982BCDAB1F88BBA922D3B158BC23102DF10000000000000000000000000000000000000000000000000000000000000000"; - String data = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"; - - api.encryptBySk(0, rsaKey, data.getBytes()); - } - - // 测试通过 - // 7B - @Test - public void testRSASignC() { - String userId = "1111111111111114"; - String data = "11111111"; - byte[] bytes = api.RSASignC(userId, 0, 1, data.getBytes()); - System.out.println(Util.bytes2HexString(bytes)); - } - - // 测试通过 - // 7C - @Test - public void testRSAVerify() { - String thisPublicKey = "308189028181009666F70AA6B013099E68A0EF5EE3504A2210287459D8DD5C3851D2E5FAB821DE379C743F9EA2747A5BD441AB6FEB297ABD0DC66AD116FA918493D85E0BB05CCD2C5089BD1D5963F0FBB85EE869D18BE32EEFF5776350127B64A9C58119F6A52A9718CD3E6E6F97454826B7A7707DEBF9B2E5AD8A6FC1965F2747682FF2FA24A10203010001"; - String data = "11111111"; - String userId = "1111111111111114"; - - byte[] bytes = api.RSASignC(userId, 0, 1, data.getBytes()); - String sign = Util.bytes2HexString(bytes); - System.out.println(sign); - - boolean b = api.RSAVerify(0, 1, Util.hexString2Bytes(thisPublicKey), data.getBytes(), Util.hexString2Bytes(sign)); - System.out.println(b); - } - - // 测试通过 - // 7D - @Test - public void testConutHash() { - String data = "0101010101010101"; -// RetWrap retWrap = api.conutHash(1, 0, data.getBytes(), null); - - String filterData = "67 E6 09 6A 85 AE 67 BB 72 F3 6E 3C 3A F5 4F A5 7F 52 0E 51 8C 68 05 9B AB D9 83 1F 19 CD E0 5B 80 00 00 00 00 00 00 00 30 31 30 31 30 31 30 31 30 31 30 31 30 31 30 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00"; - RetWrap retWrap = api.conutHash(1, 3, data.getBytes(), Util.hexString2Bytes(changeStr(filterData))); - - System.out.println("hash:" + Util.bytes2HexString((byte[]) retWrap.get("hash"))); - } - - // 测试通过 - // 7E - @Test - public void testGetDNPublicKey() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String s = api.GetDNPublicKey(0, dn.getBytes()); - System.out.println(s); - } - - // 测试通过 - // 7E - @Test - public void testSYD_SM2_Get_Dn_PublicKey_HA() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String s = api.SYD_SM2_Get_Dn_PublicKey_HA(dn.getBytes(), 0); - System.out.println(s); - } - - // 测试通过 - // 80 - @Test - public void testSM2SignCustomized() { - String sn = "1004282452"; - String s = api.SM2SignCustomized(sn, "111".getBytes()); - System.out.println(s); - } - - // 测试通过 - // 81 - @Test - public void testSM2VerifyCustomized() { - String sn = "1004282451"; - String data = "111"; - String s = api.SM2SignCustomized(sn, data.getBytes()); - - boolean b = api.SM2VerifyCustomized(sn, data.getBytes(), s); - System.out.println(b); - } - - // 测试通过 - // E2 - @Test - public void testSM2GenKeyPair() { - RetWrap retWrap = api.SM2GenKeyPair(); - printRetWrap(retWrap, true); - } - - // 测试通过 - // E2 - @Test - public void testSM2OrRSAGenKeyPair() { - // 000 -// String index = "1111111111111147"; -// // 0342000422C4FC907E0BEC600C2070D675EFB65EAE3A628260FF5461DD5F8133CF7CF98530EF392D016B6487BA6148E9AC27BDD4E8D7404A310CB09335F50AEF00ADB068 - - // 001 -// String index = "1111111111111148"; - // 0342000450420312F4ABAD98AA8EFC1F8F8204BD9E2F752C59C25A4025E675EDA5FB2337A449E00241EFA4A2F76A6C58D9834D6F0AB1164652E9C588E0EBD539C8ECB9EF - - // 1111111111111151 000 00000001 - String index = "1111111111111151"; - // 03420004E5888368B9D5BC319FE48AB92123857E696EFB1A7E08D75DD5C3C5A5E9FA18099EFFCAFD61A0838527D36C7FA6AE8E2649FB89883FC44A494830CE642A03DC24 - // 000100009FBA90C22E18982D60022C683219F72DAAA1B878A094181381486FC5137B1B160000000000000000000000000000000000000000000000000000000000000000 - - // SM2 - RetWrap retWrap = api.SM2OrRSAGenKeyPair(1, index, 0); - - // RSA -// RetWrap retWrap = api.SM2OrRSAGenKeyPair(0, index, 1024); - printRetWrap(retWrap, true); - } - - // E4 - @Test - public void testGenKeyPair() { - RetWrap retWrap = api.genKeyPair(415, 0002); - printRetWrap(retWrap); - } - - // 测试通过 - // 72 - @Test - public void testSM2GenSessionKey() { - - String pk = "03 42 00 04 1C D4 73 54 86 7E 12 B9 D1 38 F0 98 41 3C 47 D4 2E DE B2 AD 40 2E AB 43 1C 0C 7A C2 FE 2D 6D E9 C6 72 73 C6 43 C7 09 F2 A7 49 18 89 41 B7 FA 7F 9F F1 4F 8E 7D 19 31 69 36 DB 4D 49 54 FF 38 19 "; - - RetWrap retWrap = api.SM2GenSessionKey(changeStr(pk)); - printRetWrap(retWrap); - } - - // 测试通过 - // 73 - @Test - public void testSM2ConfirmSessionKeyC() { - - String userId = "1111111111111151"; - - String pk="03420004E8582C0EF495E96D4FE20C8344097750546BD3EF3BE0E1931EF21D3977FBBC774264BA5D124EB9C72177556229B5FE289B2C15B3CD3BCA9F34C663A3B8EB851E"; - - RetWrap retWrap = api.SM2GenSessionKey(pk); - printRetWrap(retWrap); - - String cipherKey = (String) retWrap.get("CipherKey"); - - RetWrap retWrap1 = api.SM2ConfirmSessionKeyC(userId, cipherKey); - printRetWrap(retWrap1); - } - - // 测试通过 - // 73 - @Test - public void testSM2ConfirmSessionKey() { - - String pk="03420004AAFCB1EACA86272281A20FE1957EEB543AB97571048D5B6350C4227980D0F109A7D5797EC97D6D874D003C4AE7C5FBFFD755413264D85DA5B0AC61B6C661CA32"; - String sk="00010000A910C2C44646A5A43338F0F505A06AA91442BFD245082C7774F6C75247F2196F0000000000000000000000000000000000000000000000000000000000000000"; - RetWrap retWrap = api.SM2GenSessionKey(pk); - printRetWrap(retWrap); - - String cipherKey = (String) retWrap.get("CipherKey"); - - RetWrap retWrap1 = api.SM2ConfirmSessionKey(sk, cipherKey); - printRetWrap(retWrap1); - } - - // 75 - @Test - public void testSYD_SM2_Verify_HA() { - String orgData = "11111111111111"; - String pk="034200044BDBCE365B5DB87799EBBB78D871BEEA70A6B3BAAA2973FEDC4BF067F8F1D2A977D2BFA01562E9554F600FBBFCD0D04F50603FB225ABBEDE0DF346E5E4882F68"; - String sk="00010000B3A7643171ABFC00D30307025B2CC5826F20210F5112F5D4BE7A8E32C82067C00000000000000000000000000000000000000000000000000000000000000000"; - - byte[] oData = api.SM3Hash(pk, Util.hexString2Bytes(orgData)); - String s = api.SYD_SM2_Sign_HA(SydApi.DATA_HASH, Util.hexString2Bytes(sk), Util.hexString2Bytes(pk), oData); - - System.out.println("sign:" + s); - System.out.println("decBase64:" + Util.bytes2HexString(Util.decodeBase64(s))); - System.out.println("decBase64-1:" + Util.bytes2HexString(SYMUtil.base64SignAsDerSign(s))); - boolean b = api.SYD_SM2_Verify_HA(SydApi.DATA_HASH, Util.hexString2Bytes(pk), Util.hexString2Bytes(orgData), s); - System.out.println("验签结果: " + b); - } - - // 测试通过 - // 76 - @Test - public void testSM3Hash() { - - String userId = "1572127378000000"; - String publicKey = "03 42 00 04 1C D4 73 54 86 7E 12 B9 D1 38 F0 98 41 3C 47 D4 2E DE B2 AD 40 2E AB 43 1C 0C 7A C2 FE 2D 6D E9 C6 72 73 C6 43 C7 09 F2 A7 49 18 89 41 B7 FA 7F 9F F1 4F 8E 7D 19 31 69 36 DB 4D 49 54 FF 38 19"; - String msg = "0101010101010101"; - - RetWrap retWrap = api.SM3Hash(1, userId, Util.hexString2Bytes(changeStr(publicKey)), msg.getBytes(), null); - printRetWrap(retWrap, true); - } - - // 测试通过 - // 76 - @Test - public void testSM3Hash2() { - String publicKey = "0342000469DE3847DD6A66DA96DB8F2DCFA32E10E680FF2EF4A592079E7C3A44320BB15084E7CA9782A39B6E28F07C04FE00D68958A2605921E71712D56C1E4435A39FA5"; - String orgData = "FFFFFFFFFFFFFFFF"; - - byte[] hash = api.SM3Hash(publicKey, orgData.getBytes()); - - System.out.println("hash:" + Util.bytes2HexString(hash)); - } - - // 测试通过 - // 76 - @Test - public void testSM3Hash3() { - String orgData = "FFFFFFFFFFFFFFFF"; - - byte[] hash = api.SM3Hash(orgData.getBytes()); - - System.out.println("hash:" + Util.bytes2HexString(hash)); - } - - // 测试通过 - // 71 - @Test - public void testLMK2SM2() { - - String pk = "03 42 00 04 1C D4 73 54 86 7E 12 B9 D1 38 F0 98 41 3C 47 D4 2E DE B2 AD 40 2E AB 43 1C 0C 7A C2 FE 2D 6D E9 C6 72 73 C6 43 C7 09 F2 A7 49 18 89 41 B7 FA 7F 9F F1 4F 8E 7D 19 31 69 36 DB 4D 49 54 FF 38 19 "; - String key = "U5FAC0E768937E43D64FE2692F5F8C79F"; - - RetWrap retWrap = api.LMK2SM2(Util.hexString2Bytes(changeStr(pk)), key); - printRetWrap(retWrap, true); - } - - // 测试通过 - // 60 - @Test - public void testGetTransmissionKey() { - RetWrap retWrap = api.getTransmissionKey(); - printRetWrap(retWrap); - } - - // 61 - @Test - public void testRoleVerify() { -// api.roleVerify() - } - - // 68 - @Test - public void testDecryptAndEncryptByP() { - - String data = "FFFFFFFFFFFFFFFF"; - - String publicKey = "03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231"; - - byte[] bytes = api.SYMEncryptData(3,"XF356BCBA3204F6E6F356BCBA3204F6E6", 1, data.getBytes()); - String enData = Util.bytes2HexString(bytes); - System.out.println("加密:" + enData); - - RetWrap retWrap = api.decryptAndEncryptByP("XF356BCBA3204F6E6F356BCBA3204F6E6", bytes, 1, Util.hexString2Bytes(publicKey)); - printRetWrap(retWrap); - } - - // 69 - @Test - public void testDecryptAndEncryptByS() { - - } - - // 测试通过 - // Y8 - @Test - public void testGenerateRandom() { - String s = api.GenerateRandom(16); - System.out.println(s); - } - - // 测试通过 - // AB - @Test - public void testGetPlainText() { - String key = "U51B737CE0EE1A14A6411B64EDE56020B"; - - RetWrap r = api.getPlainText(key, 0); - printRetWrap(r); - } - - // 测试通过 - // 62 - @Test - public void testImpose() { - - String key = "U51B737CE0EE1A14A6411B64EDE56020B"; - String msg = "0101010101010101"; - - RetWrap retWrap = api.impose("002", key, msg.getBytes()); - printRetWrap(retWrap); - } - - // 测试通过 - // 63 - @Test - public void testVerifyImpose() { - - String key = "U51B737CE0EE1A14A6411B64EDE56020B"; - - String secret = "3DCA1AD1"; - - String msg = "0101010101010101"; - - Boolean aBoolean = api.verifyImpose("002", key, secret.getBytes(), msg.getBytes()); - System.out.println(aBoolean); - } - - // 测试通过 - // 64 - @Test - public void testEncryAndDecry() { - String key = "U51B737CE0EE1A14A6411B64EDE56020B"; - String infoData = "01010101"; - - RetWrap retWrap = api.encryAndDecry("002", key, infoData.getBytes()); - printRetWrap(retWrap, true); - } - - // 测试通过 - // 65 - @Test - public void testSwitchEncry() { - String srcKey = "U51B737CE0EE1A14A6411B64EDE56020B"; - String aimKey = "X94D35D86EF1F3213D55C47822F87D385"; - String infoData = "88888888"; - - RetWrap retWrap = api.switchEncry("002", srcKey, aimKey, infoData.getBytes()); - printRetWrap(retWrap, true); - } - - // 测试通过 - // 66 - @Test - public void testEncryAndDecry4PIN() { - String key = "U51B737CE0EE1A14A6411B64EDE56020B"; - String pin = "06156760"; - - byte[] bytes = api.encryAndDecry4PIN(key, pin.getBytes()); - - System.out.println(Util.bytes2HexString(bytes)); - } - - // 测试通过 - // 67 - @Test - public void testswitchEncry4PIN() { - String srcKey = "XK111111111111111200100000001"; - String aimKey = "XK111111111111111300100000001"; - String infoData = "61572122"; - - byte[] bytes = api.switchEncry4PIN(srcKey, aimKey, infoData.getBytes()); - System.out.println(Util.bytes2HexString(bytes)); - } - - // 测试通过 - // 6A - @Test - public void testGenerateDE() { - String dn = "1004282452"; - - RetWrap retWrap = api.generateDE(dn, (byte) 0x30); - printRetWrap(retWrap); - } - - // 001B3030303030303030 - // 3641 - // 30 - // 30 - // 30303130 - // 31303034323832343532 - // 58 - - // 测试通过 - // 6A - @Test - public void testGenerateDEByDn() { - String dn = "1004282452"; - - RetWrap retWrap = api.generateDEByDn(dn.getBytes(), 0, 0); - printRetWrap(retWrap); - } - - // 01210000000000000000 - // 3642 - // 3030 - // 30313932 - // 4D49474D416945417058426D4C43545A4D54543247454A677A576658634555645770376D64466E5A5A344F4972556E326E5145434948766C2F674534707448476D4748737739464844566D3357334F6E636B764D71325044766C38374657667742434250347175466B346243715A48735177585258614E712B576E6C664234634C6859762F59766D6777496F7541516A56685551545578666C50464C783357734D56703362426A6658567539426278796F6A2B6D4937686D774A665178416B3D - // 4C4246373430343745463846384343353532463039313838363233373639343241424637343034374546384638434335353246303931383836323337363934324132303034443039344339433336334445 - - // 00DE0000000000000001 - // 3642 - // 3030 - // 30 - // 31 - // 3031303034323832343532 - // 30313932 - // 4D49474D4169454167746A6D2F3364654C44754D5A6A5446454C44564D7A6A77336F4A527354772F4E37594A54536151517A63434944524A30317053787A346D7864364464504848337639726E617075564B4B6668664E6557576E4530324F354243414748696241702F2F64373538574D77574E78356A6E4B3458564E536F4D4C724A3271757056734747707677516A6F357969655A5A76624368354B6B4662494942642F426A3133436631504C556C5952614D4F416442633973744A35413D58 - - // 测试通过 - // 6B - @Test - public void testDecryptDE() { - String sn = "1004282452"; - RetWrap retWrap = api.generateDEByDn(sn.getBytes(), 0, 0); - String sessionKey = (String) retWrap.get("SessionKey"); - String CipherKey = (String) retWrap.get("CipherKey"); - String KCV = (String) retWrap.get("KCV"); - printRetWrap(retWrap); - - RetWrap retWrap1 = api.decryptDE(sn, CipherKey); - sessionKey = (String) retWrap1.get("SessionKey"); - printRetWrap(retWrap1); - } - - // 测试通过 - // 6B - @Test - public void testDecryptDE2() { - String sn = "1004282452"; -// String sn = "1FD9F2049860FD072F0CC71B072EBF9952E2784E"; - RetWrap retWrap = api.generateDE(sn, SydApi.ALG_SM4); - String CipherKey = (String) retWrap.get("CipherKey"); - printRetWrap(retWrap); - - System.out.println("解base64: " + Util.bytes2HexString(Base64.getDecoder().decode(CipherKey))); - - RetWrap retWrap1 = api.decryptDE(sn, CipherKey); - printRetWrap(retWrap1); - } - - - @Test - public void testDecryptDE3() { - String sn = "1004282452"; - - - /** - * 产生对称密钥,通过公钥加密生成网联格式的数字信封。 - * @param certSerial 对*方 X509 证书的序列号。 - * @param nAlg 算法标识,0:AES,1:SM4 - * @return RetWrap 包含 CipherKey, SessionKey, KCV - * CipherKey 公钥加密的会话密钥 ,BASE64 编码 - * SessionKey 本地LMK 加密的会话密钥,HEX 格式, 本地 LMK 加密的会话密钥长度,HEX 格式(不包括第 1 个字符),一般为 33 个 Bytes。默认输入值为缓冲区的大小。 - * KCV 会话密钥的检验值,HEX 格式,长度为 32H。 - */ - RetWrap retWrap = api.generateDEbyGS(sn, SydApi.ALG_SM4); - String CipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); - String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY); - printRetWrap(retWrap); - - /** - * 接收用私钥解密数字信封,还原对称密钥。 - * - * @param pCertSerial 输入。 对方 X509 证书的序列号。 - * @param pCipherKey 输入。 公钥加密的会话密钥,BASE64 编码 - * @return RetWrap 包含 SessionKey KCV - * SessionKey 输出。 本地LMK 加密的会话密钥,格式为:密钥类型|密钥密文,比如:02|密钥密文 - * KCV 会话密钥的检验值,HEX 格式,长度为 36H。 - */ - RetWrap retWrap1 = api.decryptDE(sn, CipherKey); - printRetWrap(retWrap1); - } - - @Test - public void testDecryptDE4() { - String sn = "1004282452"; - - RetWrap retWrap = api.generateDEbyGS(sn, "00001111222233"); - String CipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); - String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY); - printRetWrap(retWrap); - - byte[] decode = Base64.getDecoder().decode(CipherKey); - System.out.println("解base64: " + Util.bytes2HexString(decode)); - - RetWrap retWrap1 = api.decryptDE(sn, CipherKey); - printRetWrap(retWrap1); - } - - @Test - public void testDecryptDE5() throws UnsupportedEncodingException { - String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; - String oData = "00001111222233"; - - RetWrap retWrap = api.generateDEByDn(dn, oData); - String CipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); - String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY); - printRetWrap(retWrap); - - RetWrap retWrap1 = api.decryptDEByDN(dn, CipherKey); - printRetWrap(retWrap1); - } - - // 测试通过 - // 6C - @Test - public void testNetSign() { - String sn = "1004282451"; - /** - * 结果为der编码后再进行base64编码 - */ - String s = api.netSign(sn, "111".getBytes()); - - /** - * base64解码 - */ - byte[] bytes = Util.decodeBase64(s); - - /** - * 将der编码转为base64编码 - */ - String s1 = SYMUtil.derSign2Base64Sign(bytes); - System.out.println(s1); - - byte[] bytes1 = Util.decodeBase64(s1); - - System.out.println(Util.bytes2HexString(bytes1)); - } - - // 测试通过 - // 6D - @Test - public void testNetVerify() { - String sn = "1004282451"; - String data = "111"; - String s = api.netSign(sn, data.getBytes()); - - System.out.println("签名: " + s); - - boolean b = api.netVerify(sn, data.getBytes(), s); - System.out.println(b); - } - - // 测试通过 - // 6D - @Test - public void testNetGSSign() { - String sn = "1004282451"; - String data = "1111111111111111111111111111"; - - /** - * 用指定的证书私钥对指定的数据进行数字签名。 - * 最大签名原始数据为8161byte - * @param pCertSerial 输入。签名 X509 证书的序列号。 - * @param pOrgData 输入。 待签名的原始数据。 - * @return 签名数据(BASE64 编码)。 - */ - String sign = api.netGSSign(sn, data.getBytes()); - System.out.println("签名: " + sign); - - /** - * 用指定证书对指定的原始数据进行数字签名验证。 - * @param pCertSerial 输入。 签名 X509 证书的序列号。 - * @param pOrgData 输入。 待签名的原始数据。 - * @param pSignData 输入。 签名数据(BASE64 编码)。 - * @return true 表示验证正确;false 表示失败; - */ - boolean b = api.netGSVerify(sn, data.getBytes(), sign); - System.out.println(b); - } - - // 测试通过 - // 6D - @Test - public void testNetVerify2() { - String sn = "1004282451"; - String userId = "1234567812345678"; - String data = "111"; - String s = api.unPSign(sn, userId, data.getBytes()); - - boolean b = api.unPVerify(sn, userId, data.getBytes(), s); - System.out.println(b); - } - - // 测试通过 - // 6E - @Test - public void testGetX509SN() { - String dn = "C=CN,ST=ZJ,L=HZ,O=SUNYARD,OU=123456,CN=111"; - String s = api.getX509SN(0, dn.getBytes()); - System.out.println(s); - } - - // 测试通过 - // QQ - @Test - public void testRSAGetPublicKeyC() { - String userId = "1111111111111114"; - - String s = api.RSAGetPublicKeyC(userId, 0); - System.out.println(s); - } - - // 测试通过 - // QQ - @Test - public void testSM2GetPublicKeyC2() { - String userId = "1111111111111117"; - - String s = api.SM2GetPublicKeyC(userId, 0); - System.out.println(s); - } - - // 测试通过 - // QQ - @Test - public void testSM2GetPublicKeyC3() { - - String tag = "111111111111111800000000001"; - String s = api.SM2GetPublicKeyC(tag); - System.out.println(s); - } - - // 测试通过 - // QP - @Test - public void testSM2GetPrivateKeyC() { - String tag = "111111111111111800000000001"; - String s = api.SM2GetPrivateKeyC(tag); - System.out.println(s); - } - - // 测试通过 - // HI - @Test - public void testGetStatus() { - RetWrap status = api.getStatus(); - - printRetWrap(status); - } - - // 测试通过 - // HV - @Test - public void testGetVersion() { - RetWrap version = api.getVersion(null); - printRetWrap(version); - } - - // 测试通过 - // 8008 - @Test - public void testGetAllCert() throws UnsupportedEncodingException { - RetWrap allCert = api.getAllCert(2); - printRetWrap(allCert); - } - - // 测试通过 - // 8009 - @Test - public void testImportCert() throws IOException { - - String path = "E:\\work\\sunyard\\证书\\sm2.q\\sm2.q.enc.crt.pem"; - System.out.println(api.importCert(inputStream2ByteArray(path), "1234".getBytes())); - - try { - this.api.disconnect(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - @Test - public void testImportCert2() throws IOException { - - String cert2 = "-----BEGIN CERTIFICATE-----\n" + - "MIIB4TCCAYSgAwIBAgIIPJMAAAAAACswDAYIKoEcz1UBg3UFADAmMQswCQYDVQQG\n" + - "EwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QwHhcNMTcxMTE3MDIzMDUxWhcN\n" + - "MjMwMTI1MDIzMDUxWjBZMQswCQYDVQQGEwJDTjELMAkGA1UECAwCWkoxCzAJBgNV\n" + - "BAcMAkhaMQ4wDAYDVQQKDAVISkpZUzERMA8GA1UECwwIMDAwMDAwMDAxDTALBgNV\n" + - "BAMMBDIyMjIwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAATxqegqlmc/lduzBaKR\n" + - "EyeNuPf78RA3wfJuhAv8zymLwQ6doefs1Iul+kMOukhfwY9aEhVdqws34FZMm2vs\n" + - "1+wXo2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYD\n" + - "VR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFHfjFl72707A\n" + - "6s+YVuGvEuyvFWTMMAwGCCqBHM9VAYN1BQADSQAwRgIhALzg7+QW7RU4phv+4arE\n" + - "v0IOeaA6dtR8VT4Bwin9oHTWAiEA9kLESGiYm8L5Htf7GBXgH+pk7BJ68clml41B\n" + - "/ejZglI=\n" + - "-----END CERTIFICATE-----"; - - String cert = "-----BEGIN CERTIFICATE-----\n" + - "MIID3QYKKoEcz1UGAQQCAqCCA80wggPJAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoq\n" + - "gRzPVQYBBAIBoIICxDCCAsAwggJjoAMCAQICEBAAAAAAAAAAAAAAEEJYBCMwDAYI\n" + - "KoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j\n" + - "aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1Qg\n" + - "U00yIE9DQTEwHhcNMjEwMTExMDk1MjI1WhcNMjIwMTExMDk1MjI1WjB2MQswCQYD\n" + - "VQQGEwJjbjEVMBMGA1UECgwMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLDAZDQ0ZDQ0Ix\n" + - "FDASBgNVBAsMC0VudGVycHJpc2VzMSkwJwYDVQQDDCAwNDFAODkwNDI5MDA5OTk5\n" + - "RkRAQ0JDQ0AwMDAwMDAwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABExU5zuJ\n" + - "3pVl49mS3rTBwUcPuiI/zDR/w117PkpCgJ7m0kGyyorj1h2bxM62PthpNy99KPnk\n" + - "9gEvS696ZE5s8LGjgeowgecwHwYDVR0jBBgwFoAUa/4Y2o9COqa4bbMuiIM6NKLB\n" + - "MOEwSAYDVR0gBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8v\n" + - "d3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhiho\n" + - "dHRwOi8vdWNybC5jZmNhLmNvbS5jbi9TTTIvY3JsMTY4NzYuY3JsMAsGA1UdDwQE\n" + - "AwID6DAdBgNVHQ4EFgQUypxjmN7VBcoruhBRWmmFNv9yG1IwEwYDVR0lBAwwCgYI\n" + - "KwYBBQUHAwIwDAYIKoEcz1UBg3UFAANJADBGAiEA1IQTRQf5aaDJzzVxWLRml1ZS\n" + - "qQd9FPFeKZJnbzGQIQMCIQD/gY5+H1nytcVAx8hGtUPssklmI+9+vTdOF5LaKMR+\n" + - "jzGB3TCB2gIBATBwMFwxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5h\n" + - "bmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGzAZBgNVBAMMEkNGQ0EgVEVT\n" + - "VCBTTTIgT0NBMQIQEAAAAAAAAAAAAAAQQlgEIzAMBggqgRzPVQGDEQUAMA0GCSqB\n" + - "HM9VAYItAQUABEYwRAIgXmjY/FIR8qudmZGsIQUivZDt3/73dGojVjj5L76OcJIC\n" + - "IAHu0G242uYPY2B8zMkGw7kQ1C1xgRipEmlC1GWwMCz0\n" + - "-----END CERTIFICATE-----"; - - String jgh = "00000000"; - System.out.println(api.importCert(Util.getSafeBytes(cert), null)); - } - - @Test - public void testimportCertAddHT() { - String cert1 = "MIIB4TCCAYSgAwIBAgIIPJMAAAAAACswDAYIKoEcz1UBg3UFADAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QwHhcNMTcxMTE3MDIzMDUxWhcNMjMwMTI1MDIzMDUxWjBZMQswCQYDVQQGEwJDTjELMAkGA1UECAwCWkoxCzAJBgNVBAcMAkhaMQ4wDAYDVQQKDAVISkpZUzERMA8GA1UECwwIMDAwMDAwMDAxDTALBgNVBAMMBDIyMjIwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAATxqegqlmc/lduzBaKREyeNuPf78RA3wfJuhAv8zymLwQ6doefs1Iul+kMOukhfwY9aEhVdqws34FZMm2vs1+wXo2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFHfjFl72707A6s+YVuGvEuyvFWTMMAwGCCqBHM9VAYN1BQADSQAwRgIhALzg7+QW7RU4phv+4arEv0IOeaA6dtR8VT4Bwin9oHTWAiEA9kLESGiYm8L5Htf7GBXgH+pk7BJ68clml41B/ejZglI="; - - String cert2 = "MIID3QYKKoEcz1UGAQQCAqCCA80wggPJAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICxDCCAsAwggJjoAMCAQICEBAAAAAAAAAAAAAAEEJYBCMwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1" + - "UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjEwMTExMDk1MjI1WhcNMjIwMTExMDk1MjI1WjB2MQswCQYDVQQGEwJjbjEVMBMGA1UECgwMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLDAZDQ0ZDQ0IxF" + - "DASBgNVBAsMC0VudGVycHJpc2VzMSkwJwYDVQQDDCAwNDFAODkwNDI5MDA5OTk5RkRAQ0JDQ0AwMDAwMDAwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABExU5zuJ3pVl49mS3rTBwUcPuiI/zDR/w117PkpCgJ7m0kGyyorj1h2bxM62PthpNy99KPnk9gEvS696ZE5s8LGjgeowgecw" + - "HwYDVR0jBBgwFoAUa/4Y2o9COqa4bbMuiIM6NKLBMOEwSAYDVR0gBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNybC5jZmNhLmNvbS5jbi9TTTIvY3JsMTY4NzY" + - "uY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQUypxjmN7VBcoruhBRWmmFNv9yG1IwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYIKoEcz1UBg3UFAANJADBGAiEA1IQTRQf5aaDJzzVxWLRml1ZSqQd9FPFeKZJnbzGQIQMCIQD/gY5+H1nytcVAx8hGtUPssklmI+9+vTdOF5LaKMR+jzGB3T" + - "CB2gIBATBwMFwxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGzAZBgNVBAMMEkNGQ0EgVEVTVCBTTTIgT0NBMQIQEAAAAAAAAAAAAAAQQlgEIzAMBggqgRzPVQGDEQUAMA0GCSqBHM9VAYItAQUABEYwRAIgXmjY/FIR8" + - "qudmZGsIQUivZDt3/73dGojVjj5L76OcJICIAHu0G242uYPY2B8zMkGw7kQ1C1xgRipEmlC1GWwMCz0"; - - System.out.println(cert2); - - String jgh = "00000000"; - - String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; - - String sign = api.SYD_DetachedSign(cert2.getBytes(), DN); - System.out.println("签名结果: " + sign); - - /** - * 上传指定证书到加密设备,并在证书前后加上begin和end - * @param certData 证书的字节数组 - * @param organizationId 机构号的字节数组 - * @return - */ - RetWrap retWrap = api.importCertAddHT(sign, null); - System.out.println(retWrap); - } - - @Test - public void testags() { - - String certData = "11111111111111111111111111111111111111111111111111111111111111111111111111"; - - final String head = "-----BEGIN CERTIFICATE-----\n"; - final String tail = "-----END CERTIFICATE-----"; - final String wrap = "\n"; - - int num = certData.length() % 64 == 0 ? certData.length() / 64: certData.length() / 64 + 1; - - StringBuilder sb = new StringBuilder(); - sb.append(head); - - for (int i = 0; i < num; i++) { - String substring; - if (i == num - 1) { - substring = certData.substring(i * 64); - } else { - substring = certData.substring(i * 64, (i + 1) * 64); - } - sb.append(substring).append(wrap); - } - sb.append(tail); - - System.out.println(sb); - } - - - String pUserId = "1572127378000000"; - String publicKey = "03420004C51A40A094B6A14500B2980603D68CA263FF1BA238AFB17BB8B791C5F444465A7" + - "49B68B4584C83E7BEF66DE2446177E14DBE0F32691F54B1636CC73334A1A94D"; - String orgData = "FFFFFFFFFFFFFFFF"; - String certId = "0000000011111112"; - - // 测试通过 - // 74 - @Test - public void testSM2SignC() { - String userId = "1111111111111113"; - String certNo = "1234567812345678"; - String thisPublicKey = "03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231"; - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(userId, certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); - System.out.println(s); - } - - // 测试通过 - // 74 - @Test - public void testSM2SignC2() { - String thisPublicKey = "03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231"; - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(1, "111111111111111300000000001", Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); - System.out.println(s); - } - - // 测试通过 - // 74 - @Test - public void testSM2SignC3() { - String privateKey = "00010000D7DBFD26A371D3B5BA58D3ECA98EAEFC1BCB65FA0DBBCFBC551E4315B8B2A8700000000000000000000000000000000000000000000000000000000000000000"; - String thisPublicKey = "034200042E624577E3BF1A510804346D1054B9205D97B4579D6528C25CAE6B74E5CDD19774AFA17CD9017E6BCBD8D9F3903492CD5288932941583E113C804537B69CDD46"; - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(0, privateKey, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); - System.out.println(s); - } - - // 00C40000000000000001 - // 3735 - // 30303731 - // 3045022100E5C51AE465EB085AC0A864414617D50776F7E93F9026F5E88FD8C1DC9DB38E9F022048A6E3CBE58837012FFF4281C8B53B98DCFBD6C250F0CD153C640C53FF8D78FB - // 31 - // 3136 - // 31323334353637383132333435363738 - // 30303136 - // 46464646464646464646464646464646 - // 30303638 - // 03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231 - - // 测试通过 - // 75 - @Test - public void testSM2Verify2() { - String privateKey = "AAA87526B2A261FF5468E489CF5E1E832BED34C31DCDA5D5093247FC20F6A8A7"; - String thisPublicKey = "C6084B3C227D6AD9201F36122418BDB13016678FC68D61E96F03C56702CFAE27B0190F48E9E9F05D3F550F18F1E6028B6B54F44A0272E16A9436F459A9D706BE"; - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(0, privateKey, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); - - System.out.println(s); - boolean b = api.SM2Verify( Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes(), s); - System.out.println(b); - } - - @Test - public void testaaba() throws UnsupportedEncodingException { - String orgData = "30111020220210200002|+|12.35|+|1|+|301|+||+||+||+||-|85873323882200000022|+|1|+|310000|+|310069037013006623257|+|RMB|+|物料池预备数据测试十|+|310000|+|310069037013006522872|+|RMB|+|大批量加密测试二十|+|交通银行上海奉贤支行|+|301290050471|+|12.35|+|0|+|0|+||+|1|+|2022[0002]00021|+|20220210|+||+|1|+||+||+||+||+||+||+||+||+||+|0.00|+||+|0|+||-|"; - String pk = "03420004AE179895745EDF2C7822BA15487F9B2FCC978597780A4EF228EC5B70AC7073174B8F457505BE4611809932170730EA0D325A12971C6699B0E51943369E1802D2"; - String sign = "MEUCICCTC1KiPkaftcCRfvMRrrxG1cc21zPWqgDbQHUV7NCKAiEAjO+Kdixwp2mJu5OTdBbwqCOzWslmkZ3QVdxlTcUqKEo="; - - System.out.println("解密: " + Util.bytes2HexString(Base64.getDecoder().decode(sign))); - - boolean b = api.SM2Verify( Util .hexString2Bytes(pk), orgData.getBytes("gbk"), sign); - System.out.println(b); - } - - - // 75 - @Test - public void testaabac() throws UnsupportedEncodingException { - String orgData = "30111020220210200002|+|12.35|+|1|+|301|+||+||+||+||-|85873323882200000022|+|1|+|310000|+|310069037013006623257|+|RMB|+|物料池预备数据测试十|+|310000|+|310069037013006522872|+|RMB|+|大批量加密测试二十|+|交通银行上海奉贤支行|+|301290050471|+|12.35|+|0|+|0|+||+|1|+|2022[0002]00021|+|20220210|+||+|1|+||+||+||+||+||+||+||+||+||+|0.00|+||+|0|+||-|"; - - String pk = "03420004AE179895745EDF2C7822BA15487F9B2FCC978597780A4EF228EC5B70AC7073174B8F457505BE4611809932170730EA0D325A12971C6699B0E51943369E1802D2"; - String sign = "MEUCICCTC1KiPkaftcCRfvMRrrxG1cc21zPWqgDbQHUV7NCKAiEAjO+Kdixwp2mJu5OTdBbwqCOzWslmkZ3QVdxlTcUqKEo="; - - // 这里,不管是签名还是验签,都需要在外部做一次hash。 - byte[] hash = api.SM3Hash(pk, orgData.getBytes("gbk")); - - System.out.println("hash: " + Util.bytes2HexString(hash)); - - boolean b = api.SM2Verify(SydApi.DATA_HASH, Util.hexString2Bytes(pk), hash, sign); - System.out.println("验签结果: " + b); - } - - // 测试通过 - // 75 - @Test - public void testSM2Verify3() { - - String thisPublicKey = "034200048043AF118B45629857DB693105849B2617FED249D59DFD29BE9A891ADEE7441A2D8C62020953DAEF038184E0244310CF2123C507F26F5380FFECC8D53E79B24E"; - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(1, "111111111111115100100000001", Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); - - // gVIu3Ng+/pysU8uwRKBgouhqqA5fA9Qtr6OpgL3KD8+M+m4XzKQcAydr+87XFeGzxiow0CEagbcffRgEtewR9w== - System.out.println(s); - System.out.println("DecBase64:" + Util.bytes2HexString(Base64.getDecoder().decode(s))); - boolean b = api.SM2Verify( Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes(), s); - System.out.println(b); - } - - // 测试通过 - // 75 - @Test - public void testSM2Verify() { - - String userId = "1111111111111149"; - String certNo = "1234567812345678"; - String thisPublicKey = "03420004080589A33A4DB304A3C48355761AC216B8BB5493966996E532B664A5B9CD8F1374F0DAACBF3F6D1F0E48E10DAA91889DB632FF4BE19D903502680D1AB56584D5"; - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(userId, certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); - - System.out.println(s); - boolean b = api.SM2Verify(certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes(), s); - System.out.println(b); - } - - /** - * 外部做hash,避免当原始数据过长时解析参数时ByteBuffer长度不够时报错的问题 - */ - // 测试通过 - // 75 - @Test - public void testSM2SignAndVerify() { - String privateKey = "000100009FBA90C22E18982D60022C683219F72DAAA1B878A094181381486FC5137B1B160000000000000000000000000000000000000000000000000000000000000000"; - String thisPublicKey = "03420004E5888368B9D5BC319FE48AB92123857E696EFB1A7E08D75DD5C3C5A5E9FA18099EFFCAFD61A0838527D36C7FA6AE8E2649FB89883FC44A494830CE642A03DC24"; - String orgData = "11111111111111"; - - // 这里,不管是签名还是验签,都需要在外部做一次hash。 - byte[] hash = api.SM3Hash(thisPublicKey, orgData.getBytes()); - String s = api.SM2Sign(SydApi.DATA_HASH, Util.hexString2Bytes(privateKey), hash); - - System.out.println("decBase64:" + Util.bytes2HexString(Util.decodeBase64(s))); - boolean b = api.SM2Verify(SydApi.DATA_HASH, Util.hexString2Bytes(thisPublicKey), hash, s); - System.out.println("验签结果: " + b); - } - - // 测试通过 - // 77 - @Test - public void testSM2Encrypt() { - api.SM2Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); - } - - // 测试通过 - // 78 - @Test - public void testSM2DecryptC() { - String certId = "1111111111111151"; - String publicKey = "034200048043AF118B45629857DB693105849B2617FED249D59DFD29BE9A891ADEE7441A2D8C62020953DAEF038184E0244310CF2123C507F26F5380FFECC8D53E79B24E"; - String orgData = "FFFFFFFFFFF1111111111FFFFF"; - String s = api.SM2Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); - - System.out.println("加密后的数据: " + s); - System.out.println("解base64格式之后: " + Util.bytes2HexString(Base64.getDecoder().decode(s))); - byte[] pOrgData = SYMUtil.base64EnData2DerEnData(s); - System.out.println("加密后的数据解base64-2: " + Util.bytes2HexString(pOrgData)); - - byte[] bytes = api.SM2DecryptC(certId, s); - - System.out.println("decData:" + new String(bytes)); - } - - // 测试通过 - // 78 - @Test - public void testSYD_SM2_Encrypt() { - - String sk="000100001C9588B521C2ECDDF0515D2829F3EFB26E5FE3E49CF96E3438FFEB7363845A110000000000000000000000000000000000000000000000000000000000000000"; - String publicKey = "03420004A8A03F380DDD8C414980FCA5C0A981E190A4528BF87C9FDAA30881CEE9EC83CC3DB93AE1B4FF529A0D0D9D42EDFDCEB46470D1046EAC5E4F32C31083C72C050F"; - String orgData = "FFFFFFFFFFF1111111111FFFFF"; - - byte[] encData = api.SYD_SM2_Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); - System.out.println("加密后的数据: " + Util.bytes2HexString(encData)); - - byte[] bytes = api.SYD_SM2_Decrypt(Util.hexString2Bytes(sk), encData); - System.out.println("decData:" + new String(bytes)); - } - - // 测试通过 - // 78 - @Test - public void testSYD_SM2_Encrypt2() { - - String publicKey = "03420004A8A03F380DDD8C414980FCA5C0A981E190A4528BF87C9FDAA30881CEE9EC83CC3DB93AE1B4FF529A0D0D9D42EDFDCEB46470D1046EAC5E4F32C31083C72C050F"; - String orgData = "FFFFFFFFFFF1111111111FFFFF"; - String userId = "1111111111111148"; - - byte[] encData = api.SYD_SM2_Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); - System.out.println("加密后的数据: " + Util.bytes2HexString(encData)); - - byte[] bytes = api.decryptBySkC(1, userId, encData); - System.out.println("decData:" + new String(bytes)); - } - - // 测试通过 - // 78 - @Test - public void testSM2DecryptOrder() { - String certId = "1111111111111151"; - String publicKey = "034200048043AF118B45629857DB693105849B2617FED249D59DFD29BE9A891ADEE7441A2D8C62020953DAEF038184E0244310CF2123C507F26F5380FFECC8D53E79B24E"; - String orgData = "FFFFFFFFFFF1111111111FFFFF"; - String s = api.SM2EncryptOrder(Util.hexString2Bytes(publicKey), orgData.getBytes()); - - System.out.println("加密后的数据: " + s); - System.out.println("解base64格式之后: " + Util.bytes2HexString(Base64.getDecoder().decode(s))); - byte[] pOrgData = SYMUtil.base64EnData2DerEnDataC1C2C3(s); - System.out.println("加密后的数据解base64-2: " + Util.bytes2HexString(pOrgData)); - - byte[] bytes = api.SM2DecryptOrder(certId, s, SydApi.FOR_ENCRYPT); - - System.out.println("decData:" + new String(bytes)); - } - - // QQ - @Test - public void testSM2GetPublicKeyC() { - String s = api.SM2GetPublicKeyC("0000000000000001", 0); - System.out.println("获取到的公钥: " + s); - } - - // 测试通过 - // E0 - @Test - public void testSYMEncryptData() { - String sm4Key = "XF356BCBA3204F6E6F356BCBA3204F6E6"; - - byte[] bytes = api.SYMEncryptData(SydApi.NALG_SM4,sm4Key, "1111111111111111".getBytes()); - System.out.println("密文:" + Util.bytes2HexString(bytes)); - byte[] bytes1 = api.SYMDecryptData(SydApi.NALG_SM4, sm4Key, bytes); - System.out.println(new String(bytes1)); - } - - // 01100000000000000000800331433D434E2C4F3D53756E796172642C4F553D383030312C434E3D38303031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003313131 - - // 测试通过 - // 8003 - @Test - public void testSYD_NakedSign() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - byte[] bytes = api.SYD_NakedSign("111".getBytes(), dn); - System.out.println(Util.bytes2HexString(bytes)); - } - - // 测试通过 - // 8004 - @Test - public void testSYD_NakedVerify() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String orgData = "111"; - byte[] bytes = api.SYD_NakedSign(orgData.getBytes(), dn); - String sign = Util.bytes2HexString(bytes); - System.out.println(sign); - - boolean b = api.SYD_NakedVerify(orgData.getBytes(), bytes, dn); - System.out.println(b); - } - - // 测试通过 - // 8005 - @Test - public void testSYD_DetachedSign() { - - String orgData = "3214312341243214"; - String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String s = api.SYD_DetachedSign(orgData.getBytes(), DN); - System.out.println(s); - } - - // 测试通过 - // 8006 - @Test - public void testSYD_DetachedVerify() { - String orgData = "3214312341243214"; - String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String sign = api.SYD_DetachedSign(orgData.getBytes(), DN); - System.out.println("签名结果: " + sign); - - boolean b = api.SYD_DetachedVerify(orgData.getBytes(), sign); - System.out.println("验签结果:" + b); - } - - // 8012 - @Test - public void testSYD_Get_X509_CertInfo_HA() { - - String orgData = "3214312341243214"; - String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String s = api.SYD_DetachedSign(orgData.getBytes(), DN); - System.out.println(s); - - X509 x509 = api.SYD_Get_X509_CertInfo_HA(orgData.getBytes(), s); - System.out.println(x509); - } - - // 8012 - @Test - public void testSYD_Get_X509_CertInfo_HA1() { - - String orgData = "\n" + - "\n" + - " \n" + - " \n" + - " 20211230001190300000000032001000\n" + - " 2021-12-30T09:27:49\n" + - " \n" + - " G4000131000016\n" + - " \n" + - " \n" + - " C1175662000017\n" + - " \n" + - " \n" + - " \n" + - " CC00\n" + - " CS01\n" + - " \n" + - " \n" + - ""; - - String sign = "MIID3QYKKoEcz1UGAQQCAqCCA80wggPJAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICxDCCAsAwggJjoAMCAQICEBAAAAAAAAAAAAAAEEJYBCMwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1" + - "UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjEwMTExMDk1MjI1WhcNMjIwMTExMDk1MjI1WjB2MQswCQYDVQQGEwJjbjEVMBMGA1UECgwMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLDAZDQ0ZDQ0IxF" + - "DASBgNVBAsMC0VudGVycHJpc2VzMSkwJwYDVQQDDCAwNDFAODkwNDI5MDA5OTk5RkRAQ0JDQ0AwMDAwMDAwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABExU5zuJ3pVl49mS3rTBwUcPuiI/zDR/w117PkpCgJ7m0kGyyorj1h2bxM62PthpNy99KPnk9gEvS696ZE5s8LGjgeowgecw" + - "HwYDVR0jBBgwFoAUa/4Y2o9COqa4bbMuiIM6NKLBMOEwSAYDVR0gBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNybC5jZmNhLmNvbS5jbi9TTTIvY3JsMTY4NzY" + - "uY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQUypxjmN7VBcoruhBRWmmFNv9yG1IwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYIKoEcz1UBg3UFAANJADBGAiEA1IQTRQf5aaDJzzVxWLRml1ZSqQd9FPFeKZJnbzGQIQMCIQD/gY5+H1nytcVAx8hGtUPssklmI+9+vTdOF5LaKMR+jzGB3T" + - "CB2gIBATBwMFwxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGzAZBgNVBAMMEkNGQ0EgVEVTVCBTTTIgT0NBMQIQEAAAAAAAAAAAAAAQQlgEIzAMBggqgRzPVQGDEQUAMA0GCSqBHM9VAYItAQUABEYwRAIgXmjY/FIR8" + - "qudmZGsIQUivZDt3/73dGojVjj5L76OcJICIAHu0G242uYPY2B8zMkGw7kQ1C1xgRipEmlC1GWwMCz0"; - - - - X509 x509 = api.SYD_Get_X509_CertInfo_HA(orgData.getBytes(), sign); - System.out.println(Util.bytes2HexString(x509.getPubKey())); - } - - // 测试通过 - // 8016 - @Test - public void testGetX509CertInfo() { - -// String pCert = "-----BEGIN CERTIFICATE-----\u0007MIIC1jCCAnqgAwIBAgIFQAKAAXQwDAYIKoEcz1UBg3UFADBhMQswCQYDVQQGEwJD\u0007TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y\u0007aXR5MSAwHgYDVQQDDBdDRkNBIEFDUyBURVNUIFNNMiBPQ0EzMTAeFw0xNzExMTYw\u0007NjU0NDVaFw0yMjExMTYwNjU0NDVaMIGDMQswCQYDVQQGEwJDTjEcMBoGA1UECgwT\u0007Q0ZDQSBURVNUIFNNMiBPQ0EzMTEOMAwGA1UECwwFU0hDUEUxGTAXBgNVBAsMEE9y\u0007Z2FuaXphdGlvbmFsLTExKzApBgNVBAMMIjA1MUDkuIrmtbfnpajmja7kuqTmmJPm\u0007iYBAQUFBQUFBQDgwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAARg8D1RBEv9lpOE\u0007Q3SdzdLCQ4fDiE8Ncb2Fl4qIGc12GA/LUS1fgzLZuk0WlgyZDSe+QlQziqkmsXsx\u0007KoTCzqsto4H5MIH2MD8GCCsGAQUFBwEBBDMwMTAvBggrBgEFBQcwAYYjaHR0cDov\u0007L29jc3B0ZXN0LmNmY2EuY29tLmNuOjgwL29jc3AwHwYDVR0jBBgwFoAUBMe8+VkB\u0007aT6MNDYgYhg83ry1uwwwDAYDVR0TAQH/BAIwADA2BgNVHR8ELzAtMCugKaAnhiVo\u0007dHRwOi8vMjEwLjc0LjQyLjMvT0NBMzEvU00yL2NybDEuY3JsMA4GA1UdDwEB/wQE\u0007AwIGwDAdBgNVHQ4EFgQUomdLtdhENYb16pe1LNRlcr4N7b8wHQYDVR0lBBYwFAYI\u0007KwYBBQUHAwIGCCsGAQUFBwMEMAwGCCqBHM9VAYN1BQADSAAwRQIgZpJGhpRKmgfi\u0007Vbdq3UAGW6I3AUMfbWMd6webLQXmCOoCIQDSxTKRb0TfoXepD3VgO9qxCDwSc4yn\u0007WJ2GC3qmr81QBg==\u0007-----END CERTIFICATE-----\u0007"; -// X509 x509 = api.GetX509CertInfo(pCert); - -// String path = "E:\\work\\sunyard\\证书\\sm2.q\\sm2.q.enc.crt.pem"; - - String pCert = "-----BEGIN CERTIFICATE-----\\r\\nMIIC0DCCAnSgAwIBAgIFEEBzAUEwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJD\\r\\nTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y\\r\\naXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjAxMTAzMDk1NTU4\\r\\nWhcNMjUxMTAzMDk1NTU4WjB1MQswCQYDVQQGEwJDTjEQMA4GA1UECgwHT0NBMVNN\\r\\nMjENMAsGA1UECwwEdGVzdDEZMBcGA1UECwwQT3JnYW5pemF0aW9uYWwtMjEqMCgG\\r\\nA1UEAwwhMDUxQGNoaW5hdW5pb25wYXlAWjkwNTI5MDAwMDAwOEAyMFkwEwYHKoZI\\r\\nzj0CAQYIKoEcz1UBgi0DQgAEkw27RvY8mAx6h7vnSW/+X3b++a1E6LzQTPWMOiKP\\r\\nAfZTqJMKeRnQNEKt+N7EA98YHVheOCT9TlZ3fkgtNZcH86OCAQYwggECMB8GA1Ud\\r\\nIwQYMBaAFGv+GNqPQjqmuG2zLoiDOjSiwTDhMAwGA1UdEwEB/wQCMAAwSAYDVR0g\\r\\nBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2Eu\\r\\nY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNy\\r\\nbC5jZmNhLmNvbS5jbi9TTTIvY3JsMTM3MzYuY3JsMA4GA1UdDwEB/wQEAwIGwDAd\\r\\nBgNVHQ4EFgQUn9wz++O90r2Bc7qlzqeIhIVivD4wHQYDVR0lBBYwFAYIKwYBBQUH\\r\\nAwIGCCsGAQUFBwMEMAwGCCqBHM9VAYN1BQADSAAwRQIgNXTJts3vqvCbbhUKwnkI\\r\\nrv+HeDeyTwU4JJpBTWCR6TACIQCtQShpYt9jgxw6VSHpKEXnnWH9u4vYhXDoH42w\\r\\nWVaX6A==\\r\\n-----END CERTIFICATE-----"; - - String pCert1 = "MIID3QYKKoEcz1UGAQQCAqCCA80wggPJAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICxDCCAsAwggJjoAMCAQICEBAAAAAAAAAAAAAAEEJYBCMwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1" + - "UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjEwMTExMDk1MjI1WhcNMjIwMTExMDk1MjI1WjB2MQswCQYDVQQGEwJjbjEVMBMGA1UECgwMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLDAZDQ0ZDQ0IxF" + - "DASBgNVBAsMC0VudGVycHJpc2VzMSkwJwYDVQQDDCAwNDFAODkwNDI5MDA5OTk5RkRAQ0JDQ0AwMDAwMDAwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABExU5zuJ3pVl49mS3rTBwUcPuiI/zDR/w117PkpCgJ7m0kGyyorj1h2bxM62PthpNy99KPnk9gEvS696ZE5s8LGjgeowgecw" + - "HwYDVR0jBBgwFoAUa/4Y2o9COqa4bbMuiIM6NKLBMOEwSAYDVR0gBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNybC5jZmNhLmNvbS5jbi9TTTIvY3JsMTY4NzY" + - "uY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQUypxjmN7VBcoruhBRWmmFNv9yG1IwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYIKoEcz1UBg3UFAANJADBGAiEA1IQTRQf5aaDJzzVxWLRml1ZSqQd9FPFeKZJnbzGQIQMCIQD/gY5+H1nytcVAx8hGtUPssklmI+9+vTdOF5LaKMR+jzGB3T" + - "CB2gIBATBwMFwxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGzAZBgNVBAMMEkNGQ0EgVEVTVCBTTTIgT0NBMQIQEAAAAAAAAAAAAAAQQlgEIzAMBggqgRzPVQGDEQUAMA0GCSqBHM9VAYItAQUABEYwRAIgXmjY/FIR8" + - "qudmZGsIQUivZDt3/73dGojVjj5L76OcJICIAHu0G242uYPY2B8zMkGw7kQ1C1xgRipEmlC1GWwMCz0"; - - String pCert2 = "MIIDATCCAqWgAwIBAgIUKGNCcRdvF5KJOxRb401NHRTCSogwDAYIKoEcz1UBg3UFADCBjTFHMEUGA1UEAww+U2hlbiBaaGVuIGlUcnVzQ2hpbmEgQ2xhc3MgRW50ZXJwcmlzZSBTdWJzY3JpYmVyIENBIFNNMiAtIFRlc3QxGDAWBgNVBAsMD+a1i+ivlemDqOivleeUqDEbMBkGA1UECgwS5aSp6K+a5a6J5L+h6K+V55SoMQswCQYDVQQGEwJDTjAeFw0yMjAyMTUwMzA1MzVaFw0yMzAyMTUwMzA1MzVaMIGNMTAwLgYDVQQGDCfkv6Hpm4Xovr7ns7vnu5/lt6XnqIvogqHku73mnInpmZDlhazlj7gxMDAuBgNVBAoMJ+S/oembhei+vuezu+e7n+W3peeoi+iCoeS7veaciemZkOWFrOWPuDEVMBMGA1UECwwM5rWL6K+V6YOo6ZeoMRAwDgYDVQQDDAdzdW55YXJkMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEcKKvHjHE9Y2exfJfYZOeWffq2A5k6RRUbBhMsjCKK3eciz1WkDGIdjAgW/VI++MMITimKMXq0bwnnmo2PTNvfqOB3jCB2zAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFIDBqBgNVHR8EYzBhMF+gXaBbhllodHRwOi8vc3p0b3BjYS5zeml0cnVzLmNvbS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9NzMzNUExQUYzNzRBMUU4QjQwM0FCMUFDMkQwNjVDQUU3NUNBQjIzNjAfBgNVHSMEGDAWgBQrRjpP0Z4sztQfhsLWPZq/Jyhk9zAdBgNVHQ4EFgQUG6xZRL5VQ+DonJX4crqkUphJIA4wFQYHYIEcAQYKAgQKDAhJVFJVU0tNQzAMBggqgRzPVQGDdQUAA0gAMEUCIQCdLHm9pjihzyR9A5uXrTo4UC+Rpcm5vPGh4Do58bqRKgIgLpryVWqLVb8GqL91KdmXd7E7RrG7DjqiworD9TEmnLY="; - String s = CoderUtil.certAddHT(pCert2); - System.out.println(s); - X509 x509 = api.GetX509CertInfo(s); - System.out.println("公钥" + Util.bytes2HexString(x509.getPubKey())); - System.out.println("sn:" + x509.getSerialNumber()); - System.out.println("dn:" + x509.getSubject()); - System.out.println("getCert:" + x509.getCert()); - System.out.println("getIssuer:" + x509.getIssuer()); - System.out.println("getNotAfter:" + x509.getNotAfter()); - System.out.println("getNotBefore:" + x509.getNotBefore()); - } - - - @Test - public void testGetX509CertInfo2() { - - String pCert = "-----BEGIN CERTIFICATE-----\\r\\nMIIC0DCCAnSgAwIBAgIFEEBzAUEwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJD\\r\\nTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y\\r\\naXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjAxMTAzMDk1NTU4\\r\\nWhcNMjUxMTAzMDk1NTU4WjB1MQswCQYDVQQGEwJDTjEQMA4GA1UECgwHT0NBMVNN\\r\\nMjENMAsGA1UECwwEdGVzdDEZMBcGA1UECwwQT3JnYW5pemF0aW9uYWwtMjEqMCgG\\r\\nA1UEAwwhMDUxQGNoaW5hdW5pb25wYXlAWjkwNTI5MDAwMDAwOEAyMFkwEwYHKoZI\\r\\nzj0CAQYIKoEcz1UBgi0DQgAEkw27RvY8mAx6h7vnSW/+X3b++a1E6LzQTPWMOiKP\\r\\nAfZTqJMKeRnQNEKt+N7EA98YHVheOCT9TlZ3fkgtNZcH86OCAQYwggECMB8GA1Ud\\r\\nIwQYMBaAFGv+GNqPQjqmuG2zLoiDOjSiwTDhMAwGA1UdEwEB/wQCMAAwSAYDVR0g\\r\\nBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2Eu\\r\\nY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNy\\r\\nbC5jZmNhLmNvbS5jbi9TTTIvY3JsMTM3MzYuY3JsMA4GA1UdDwEB/wQEAwIGwDAd\\r\\nBgNVHQ4EFgQUn9wz++O90r2Bc7qlzqeIhIVivD4wHQYDVR0lBBYwFAYIKwYBBQUH\\r\\nAwIGCCsGAQUFBwMEMAwGCCqBHM9VAYN1BQADSAAwRQIgNXTJts3vqvCbbhUKwnkI\\r\\nrv+HeDeyTwU4JJpBTWCR6TACIQCtQShpYt9jgxw6VSHpKEXnnWH9u4vYhXDoH42w\\r\\nWVaX6A==\\r\\n-----END CERTIFICATE-----"; - - String pCert2 = "-----BEGIN CERTIFICATE-----\n" + - "MIIDUjCCAjoCCQDEXN6JVLqjQzANBgkqhkiG9w0BAQsFADBrMQswCQYDVQQGEwJj\n" + - "bjELMAkGA1UECAwCemoxCzAJBgNVBAcMAmh6MQwwCgYDVQQKDAN4eWQxDTALBgNV\n" + - "BAsMBGFxeXkxCzAJBgNVBAMMAnpiMRgwFgYJKoZIhvcNAQkBFgkyMkBxcS5jb20w\n" + - "HhcNMjExMTE5MDc1NDM1WhcNMjExMjE5MDc1NDM1WjBrMQswCQYDVQQGEwJjbjEL\n" + - "MAkGA1UECAwCemoxCzAJBgNVBAcMAmh6MQwwCgYDVQQKDAN4eWQxDTALBgNVBAsM\n" + - "BGFxeXkxCzAJBgNVBAMMAnpiMRgwFgYJKoZIhvcNAQkBFgkyMkBxcS5jb20wggEi\n" + - "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrOL1rh39AzMJYD6bPmumW0aUi\n" + - "JW1U9SgGYF4FBFoN7DnfgSe9dDg6FIiT81kfqz+ydeACsFCkfdjXhsrI/SEvtkK6\n" + - "/Y3PMzMys01xKFoZywaOf4s9jSQXhDQxs82HgPkHAVGmIOdIzGV0MGaPyGKaUyLQ\n" + - "s3bYBO656rLFEuNGM6Hr0r6PtEEBvBoveK3CcYVZL9KzeOEQAXJlYMD1T7xetgZu\n" + - "obl/cbC2fmNA4xRqNA+qxherzF91zC2G0WMYdPubGkAaXFfiVUwuazCpQ60AECIy\n" + - "sYnR2m8+hbCEujTYrd2Na+a0e4T/HSzsN5lZ5dl8UMJ7pMsc/hH176fy+39LAgMB\n" + - "AAEwDQYJKoZIhvcNAQELBQADggEBACNyTOW6Glb6/jWBLJRmob09b/DA0xGSyRAM\n" + - "Qwij6ch1GInO3LKfkIiuty8EGHADRraZk6igUAthAMPInPy6P+CNvGx5U3qRk0nT\n" + - "hChQ23AkkBpzvr+7LmLFid3mmgnGwPUBJtor6ylCZbG2lIpUBrWQhHqRqWYiv3N1\n" + - "nnOQRe1pWdk/Jw3m7mlXO1xKb0XeFQ8bLZG15b6qgkWeyTnGju5+NPMNV3U3w9WE\n" + - "tHW9v9xxFj/++3+U0pMaYwhKz8PA7qVfiPiEIsU1SAiQRPwUUODZG+YYAz2lSOHS\n" + - "TN36nYmVbVuWMguNPKKXY2b2mosnU6t0xtXWHxMhVCF4Slity9s=\n" + - "-----END CERTIFICATE-----"; - - X509 x509 = api.GetX509CertInfo(pCert2); - System.out.println(Util.bytes2HexString(x509.getPubKey())); - } - - // 测试通过 - // 8017 - @Test - public void testGetX509CertFileC() { - String userId = "8012"; - String userId2 = "8001"; - - String s = api.GetX509CertFileC(userId2, 0); - System.out.println(s); - - X509 x509 = api.GetX509CertInfo(s); - System.out.println("颁发者DN为: " + x509.getIssuer()); - System.out.println("证书主题: " + x509.getSubject()); - } - - // 8017 - @Test - public void testGetX509CertFileBySN() { - String sn = "1004282452"; - String sn2 = "3C93000000000025"; - - String s = api.GetX509CertFileBySN(sn2, 0); - System.out.println(s); - X509 x509 = api.GetX509CertInfo(s); - System.out.println("证书序列号: " + x509.getSerialNumber()); - System.out.println("证书主题DN: " + x509.getSubject()); - } - - // 测试通过 - // 8005 - @Test - public void testDetachedSign() { - String publicKey = "034200043EDA3A107B7CC35CC005C7FBF0BB4E6B43A07EE14E360603D22ECA2A600B2D0FA03055D400D1240300F54648B849D13F50B330FF14351B5645B13686820A65BB"; - String orgData = "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"; - String testCertNo = "C=CN,O=Sunyard,OU=8001,CN=8001"; - - byte[] hash = api.SM3Hash(publicKey, Util.hexString2Bytes(orgData)); - System.out.println("hash:" + hash); - - String sign = api.detachedSign( - SydApi.DATA_HASH, - hash, - testCertNo - ); - - System.out.println("\t签名结果: " + sign); - - boolean verify = api.detachedVerify( - SydApi.DATA_HASH, - hash, - sign - ); - - System.out.println("\t验签结果: " + verify); - } - - // 测试通过 - // 8005 - @Test - public void testSm3AndDetachedSign() { - String publicKey = "0342000469DE3847DD6A66DA96DB8F2DCFA32E10E680FF2EF4A592079E7C3A44320BB15084E7CA9782A39B6E28F07C04FE00D68958A2605921E71712D56C1E4435A39FA5"; - String orgData = "FFFFFFFFFFFFFFFF"; - String testCertNo = "C=CN,O=Sunyard,OU=8001,CN=8001"; - - String sign = api.sm3AndDetachedSign(orgData.getBytes(), publicKey, testCertNo); - System.out.println("签名结果: " + sign); - - boolean b = api.sm3AndDetachedVerify(orgData.getBytes(), publicKey, sign); - System.out.println("验签结果:" + b); - } - - // 测试通过 - // 8005 - @Test - public void testSm3WithoutPKDetachedSign() { - String orgData = "FFFFFFFFFFFFFFFF"; - String testCertNo = "C=CN,O=Sunyard,OU=8001,CN=8001"; - - String sign = api.sm3WithoutPKDetachedSign(orgData.getBytes(), testCertNo); - System.out.println("签名结果: " + sign); - - boolean b = api.sm3WithoutPKDetachedVerify(orgData.getBytes(), sign); - System.out.println("验签结果:" + b); - } - - // 8026 - @Test - public void testDetachedSignbysn() { - //X509 证书的序列号 - String pCertSerial = "1004282452"; - //数据明文 - byte[] data2 = "asfkahfkahfkafadfhdaghfashadfaflsaldfasf".substring(0,32).getBytes(); - - //签名 - String bs = api.detachedSignbysn(0,data2,pCertSerial); - System.out.println(bs); - } - - // 测试通过 - // 4D41 - @Test - public void testGenerateMIYA() { - byte[] testData = "1234567812345678".getBytes(); - String mac = api.GenerateMIYA("123456", 1, SydApi.NALG_3DES, testData); - System.out.println("MAC = " + mac); - } - - // 测试通过 - // 4D43 - @Test - public void testVerifyMIYA() { - - // 000000000012345600300000001 - byte[] testData = "1234567812345678".getBytes(); - String mac = api.GenerateMIYA("123456", 1, SydApi.NALG_3DES, testData); - System.out.println("MAC = " + mac); - Boolean ret = api.VerifyMIYA( "123456", 1, SydApi.NALG_3DES, mac, testData); - if ( ret ){ - System.out.println("核押通过"); - } else { - System.out.println("核押不通过"); - } - } - - // 测试通过 - // QN - @Test - public void testSYD_SM2GenKeyPair() { - RetWrap retWrap = api.SYD_SM2GenKeyPair(); - printRetWrap(retWrap); - } - - // 测试通过 - // Q1 - @Test - public void testEncrypt_Data() { - byte[] bytes = api.Encrypt_Data(2, 1, 0, "XK123456212145212200A00000001", "1111111111111111".getBytes(), "122345678".getBytes()); - System.out.println(Util.bytes2HexString(bytes)); - } - - // 测试通过 - // Q2 - @Test - public void testDecrypt_Data() { - String dek = "XK123456212145212200A00000001"; - String infoData = "1111111111111111"; - String vector = "122345678"; - - - byte[] bytes = api.Encrypt_Data(2, 1, 0, dek, infoData.getBytes(), vector.getBytes()); - System.out.println(Util.bytes2HexString(bytes)); - - byte[] bytes1 = api.Decrypt_Data(2, 1, 0, dek, bytes, vector.getBytes()); - System.out.println(Util.bytes2HexString(bytes1)); - } - - - // YA - @Test - public void testSYD_Disperse() throws UnsupportedEncodingException { - //加解密密钥 - String key1 = "123123555555555500000000001"; - //原始数据 - byte[] data = "cdb1af4bb0ab6de6".getBytes("UTF-8"); - - //分散因子 - String data3 = "0000000000002456aece4be200050001"; - - String s = api.SYD_Disperse(key1, 0, 1, data3.getBytes(), 2, 0); - - } - - // 测试通过 - // PA - @Test - public void testSetPrintFormat() throws UnsupportedEncodingException { - api.setPrintFormat(new String(">L>003^0>033^4>L>003^1>023^P>033^5>053^Q>L>003^2>033^6>003^3>033^7>L>003THANK YOU>033>THANK YOU 中文>L>F".getBytes("UTF-8") , "GB2312")); - - } - - // QX - @Test - public void testSM2GetPublicKeyC_QX() { - String s = api.SM2GetPublicKeyC_QX(3, 0); - System.out.println(s); - } - - // 011E3030303030303030 - // 3930 - // 31313131313131313131313131313131 - // 32323232323232323232323232323232 - // 30303332 - // F9CC9E2B67C61043B87552E61F9F50120902EA5462FC65A29695FC8F5E0FF7AF - // 30303638 - // 03420004CAFC8EC6782D9DE8F834B7D47B9D9057A0F21DAB402694EC580723879CC221A1730977F0DE947A0D5390858EE1FD827A3BE2F07E5671131BF3BE1868D3333029 - // 30303638 - // 0342000424A686E34777690C732D2C04F707DAE37AAA346461AACFABDF00982D84BB27B9DEB717FCEF55BA7C288FC935C637FD0681028E69584BFDA7A38BDB4557E1551C - // 0FBE0F3D6BAB184A20A235BA8DF2494C8FFC0826F60C22D3E4D89776CBD203E03707D2D530232EFE8600282A6EF171816E83AFA20A7991BBF2AD30DC59C71E76 - - // 设备型号 - private String equipType = "1111111111111111"; - // 设备序号 - private String equipNo = "2222222222222222"; - // 设备密钥私钥 - private String equipSk = "F9CC9E2B67C61043B87552E61F9F50120902EA5462FC65A29695FC8F5E0FF7AF"; - // 设备密钥公钥 - private String equipPk = "03420004CAFC8EC6782D9DE8F834B7D47B9D9057A0F21DAB402694EC580723879CC221A1730977F0DE947A0D5390858EE1FD827A3BE2F07E5671131BF3BE1868D3333029"; - // 厂商公钥 - private String manuPk = "0342000424A686E34777690C732D2C04F707DAE37AAA346461AACFABDF00982D84BB27B9DEB717FCEF55BA7C288FC935C637FD0681028E69584BFDA7A38BDB4557E1551C"; - // 授权签名 - private String authSign = "0FBE0F3D6BAB184A20A235BA8DF2494C8FFC0826F60C22D3E4D89776CBD203E03707D2D530232EFE8600282A6EF171816E83AFA20A7991BBF2AD30DC59C71E76"; - - // 测试通过 - // 90 - @Test - public void testSetDevCert() { - - boolean b = api.setDevCert(equipType, equipNo, Util.hexString2Bytes(equipSk), Util.hexString2Bytes(equipPk), - Util.hexString2Bytes(manuPk), Util.hexString2Bytes(authSign)); - System.out.println(b); - } - - // 00B63030303030303030 - // 3931 - // 30303332 - // F9CC9E2B67C61043B87552E61F9F50120902EA5462FC65A29695FC8F5E0FF7AF - // 30303638 - // 03420004CAFC8EC6782D9DE8F834B7D47B9D9057A0F21DAB402694EC580723879CC221A1730977F0DE947A0D5390858EE1FD827A3BE2F07E5671131BF3BE1868D3333029 - // 0FBE0F3D6BAB184A20A235BA8DF2494C8FFC0826F60C22D3E4D89776CBD203E03707D2D530232EFE8600282A6EF171816E83AFA20A7991BBF2AD30DC59C71E76 - - // 测试通过 - // 91 - @Test - public void testChangeDevCert() { - boolean b = api.changeDevCert(Util.hexString2Bytes(equipSk), Util.hexString2Bytes(equipPk), Util.hexString2Bytes(authSign)); - System.out.println(b); - } - - // 测试通过 - // 92 - @Test - public void testGetDeviceCertiInfo() { - RetWrap deviceCertiInfo = api.getDeviceCertiInfo(); - printRetWrap(deviceCertiInfo, true); - } - - // 测试通过 - // 97 - @Test - public void testDeviceSignC() { - String hash = "11111111111111111111111111111111"; - String s = api.deviceSignC(hash.getBytes()); - System.out.println(s); - } - - // 测试通过 - // 8018 - @Test - public void testAttachedSignAndVerify() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String orgData = "111111213323143243243"; - String sign = api.attachedSign(orgData.getBytes(), dn); - System.out.println("签名结果: " + sign); - -// String sign = "MIICsgYKKoEcz1UGAQQCAqCCAqIwggKeAgEBMQwwCgYIKoEcz1UBgxEwIAYKKoEcz1UGAQQCAaASBBAzMjE0MzEyMzQxMjQzMjE0oIIByTCCAcUwggFooAMCAQICCDyTAAAAAAAlMAwGCCqBHM9VAYN1BQAwJjELMAkGA1UEBhMCQ04xFzAVBgNVBAMMDlN1bnlhcmRTTTJSb290MB4XDTE3MDUxNzAyNTI0NFoXDTIyMDcyNTAyNTI0NFowPTELMAkGA1UEBhMCQ04xEDAOBgNVBAoMB1N1bnlhcmQxDTALBgNVBAsMBDgwMDExDTALBgNVBAMMBDgwMDEwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAQ+2joQe3zDXMAFx/vwu05rQ6B+4U42BgPSLsoqYAstD6AwVdQA0SQDAPVGSLhJ0T9QszD/FDUbVkWxNoaCCmW7o2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFAMWZaY2AwaQTNiFLpsa0dyCzBZ6MAwGCCqBHM9VAYN1BQADSQAwRgIhAIl2ZHGfln5hedcousARzZ2yeUjUbxSFMmhMmr5t6Q6nAiEAvqYX/KpIcvnPyB/Yiil+oq6DFdVM6P3vDxBhU/8taXExgZswgZgCAQEwMjAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QCCDyTAAAAAAAlMAoGCCqBHM9VAYMRMAsGCSqBHM9VAYItAQRGMEQCIEons2hit2967ciJo3QipM4lJgd1K3QmwOp9O/n8Tl86AiB9V6Z7jQogZFtoIz6kwAI6OQVnjbtJlmO31bZxgYRwKg=="; - boolean verify = api.attachedVerify(sign); - System.out.println("验签结果: " + verify); - } - - // 测试通过 - // 8018 - @Test - public void testAttachedSignAndVerifyRD() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String orgData = "111111213323143243243"; - String sign = api.attachedSign(orgData.getBytes(), dn); - System.out.println("签名结果: " + sign); - -// String sign = "MIICsgYKKoEcz1UGAQQCAqCCAqIwggKeAgEBMQwwCgYIKoEcz1UBgxEwIAYKKoEcz1UGAQQCAaASBBAzMjE0MzEyMzQxMjQzMjE0oIIByTCCAcUwggFooAMCAQICCDyTAAAAAAAlMAwGCCqBHM9VAYN1BQAwJjELMAkGA1UEBhMCQ04xFzAVBgNVBAMMDlN1bnlhcmRTTTJSb290MB4XDTE3MDUxNzAyNTI0NFoXDTIyMDcyNTAyNTI0NFowPTELMAkGA1UEBhMCQ04xEDAOBgNVBAoMB1N1bnlhcmQxDTALBgNVBAsMBDgwMDExDTALBgNVBAMMBDgwMDEwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAQ+2joQe3zDXMAFx/vwu05rQ6B+4U42BgPSLsoqYAstD6AwVdQA0SQDAPVGSLhJ0T9QszD/FDUbVkWxNoaCCmW7o2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFAMWZaY2AwaQTNiFLpsa0dyCzBZ6MAwGCCqBHM9VAYN1BQADSQAwRgIhAIl2ZHGfln5hedcousARzZ2yeUjUbxSFMmhMmr5t6Q6nAiEAvqYX/KpIcvnPyB/Yiil+oq6DFdVM6P3vDxBhU/8taXExgZswgZgCAQEwMjAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QCCDyTAAAAAAAlMAoGCCqBHM9VAYMRMAsGCSqBHM9VAYItAQRGMEQCIEons2hit2967ciJo3QipM4lJgd1K3QmwOp9O/n8Tl86AiB9V6Z7jQogZFtoIz6kwAI6OQVnjbtJlmO31bZxgYRwKg=="; - String verify = api.attachedVerifyRD(sign); - System.out.println("验签结果: " + verify); - } - - // 测试通过 - // 8018 - @Test - public void testAttachedSignAndVerifyGetX509() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String orgData = "111111213323143243243"; - String sign = api.attachedSign(orgData.getBytes(), dn); - System.out.println("签名结果: " + sign); - -// String sign = "MIICsgYKKoEcz1UGAQQCAqCCAqIwggKeAgEBMQwwCgYIKoEcz1UBgxEwIAYKKoEcz1UGAQQCAaASBBAzMjE0MzEyMzQxMjQzMjE0oIIByTCCAcUwggFooAMCAQICCDyTAAAAAAAlMAwGCCqBHM9VAYN1BQAwJjELMAkGA1UEBhMCQ04xFzAVBgNVBAMMDlN1bnlhcmRTTTJSb290MB4XDTE3MDUxNzAyNTI0NFoXDTIyMDcyNTAyNTI0NFowPTELMAkGA1UEBhMCQ04xEDAOBgNVBAoMB1N1bnlhcmQxDTALBgNVBAsMBDgwMDExDTALBgNVBAMMBDgwMDEwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAQ+2joQe3zDXMAFx/vwu05rQ6B+4U42BgPSLsoqYAstD6AwVdQA0SQDAPVGSLhJ0T9QszD/FDUbVkWxNoaCCmW7o2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFAMWZaY2AwaQTNiFLpsa0dyCzBZ6MAwGCCqBHM9VAYN1BQADSQAwRgIhAIl2ZHGfln5hedcousARzZ2yeUjUbxSFMmhMmr5t6Q6nAiEAvqYX/KpIcvnPyB/Yiil+oq6DFdVM6P3vDxBhU/8taXExgZswgZgCAQEwMjAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QCCDyTAAAAAAAlMAoGCCqBHM9VAYMRMAsGCSqBHM9VAYItAQRGMEQCIEons2hit2967ciJo3QipM4lJgd1K3QmwOp9O/n8Tl86AiB9V6Z7jQogZFtoIz6kwAI6OQVnjbtJlmO31bZxgYRwKg=="; - X509 verify = api.attachedVerifyAndGetX509(sign); - System.out.println("验签结果: " + verify); - } - - // 测试通过 - // 8018 - @Test - public void testAttachedSignAndVerifyGetAll() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String orgData = "111111213323143243243"; - String sign = api.attachedSign(orgData.getBytes(), dn); - System.out.println("签名结果: " + sign); - - RetWrap verify = api.attachedVerifyAndGetAll(sign); - if (verify != null) { - System.out.println("x509公钥: " + Util.bytes2HexString(((X509)verify.get("x509")).getPubKey())); - System.out.println("签名原数据: " + verify.get("oData")); - } - } - - // 00883030303030303030 - // 3938 - // 30313232 - // 3078022017665B26FD20D2BE19CBCF275C43D7ECF95BBEEC2C2D1A79DF5068629D6FDDB302204A76974ADD337B5F3EAA0191AF6C7ADEE6BA86B30B828B7B32948B8DB0FF3E1A04204E4A371B154D42CC2536033F8EE8854FE0EF4BC79CB78A7CEA0C335147C7DF5B0410CF8690DC1D9ECD1951E86B6AE26A94DB - - // 00880000000000000000 - // 3938 - // 30313232 - // 3078022017665B26FD20D2BE19CBCF275C43D7ECF95BBEEC2C2D1A79DF5068629D6FDDB302204A76974ADD337B5F3EAA0191AF6C7ADEE6BA86B30B828B7B32948B8DB0FF3E1A04204E4A371B154D42CC2536033F8EE8854FE0EF4BC79CB78A7CEA0C335147C7DF5B0410CF8690DC1D9ECD1951E86B6AE26A94DB - - // 98 - @Test - public void testSetToken() { - - String tocken = "3078022017665B26FD20D2BE19CBCF275C43D7ECF95BBEEC2C2D1A79DF5068629D6FDDB302204A76974ADD337B5F3EAA0191AF6C7ADEE6BA86B30B828B7B32948B8DB0FF3E1A04204E4A371B154D42CC2536033F8EE8854FE0EF4BC79CB78A7CEA0C335147C7DF5B0410CF8690DC1D9ECD1951E86B6AE26A94DB"; - boolean b = api.setToken(Util.hexString2Bytes(tocken)); - System.out.println(b); - - } - - // 00223030303030303030 - // 3939 - // 30303230 - // 3333333333333333333333333333333333333333 - - // 00220000000000000000 - // 3939 - // 30303230 - // 3333333333333333333333333333333333333333 - - // 99 - @Test - public void testCalcAuthHead() { - String info = "33333333333333333333"; - byte[] bytes = api.calcAuthHead(info.getBytes()); - System.out.println(Util.bytes2HexString(bytes)); - } - - /** - * 直接发送数据 - */ - @Test - public void testDirect() { - String s = "000A00000000000000004849"; - api.directBytes(Util.hexString2Bytes(s)); - } - - - @Test - public void test() throws IOException { - String path = "E:\\work\\sunyard\\hsm\\projects\\sydapi\\src\\test\\java\\com\\sunyard\\sydapi\\test\\TestAllMethods.java"; - BufferedReader reader = new BufferedReader(new FileReader(path)); - - String line = null; - String[] list = new String[3]; - int i = 0; - int j = 0; - int z = 0; - - while ((line = reader.readLine()) != null) { - if ("@Test".equals(line.trim())) { - j++; - int index = 0; - if ((index = getIndex(list, "// 测试通过")) != -1) { - System.out.println(list[(index + 1) % 3].substring(3)); - z++; - } - } else { - list[i % 3] = line.trim(); - i++; - } - } - System.out.println(j); - System.out.println(z); - } - - public int getIndex(String[] list, String str) { - - for (int i = 0; i < list.length; i++) { - if (str.equals(list[i])) { - return i; - } - } - - return -1; - } - - @Test - public void test01() throws IOException { - String path = "C:\\Users\\edgar\\Desktop\\新建文本文档 (2).txt"; - BufferedReader reader = new BufferedReader(new FileReader(path)); - - String line = null; - while ((line = reader.readLine()) != null) { - if (line.startsWith("指令")) { - System.out.println(line.substring(3)); - } - } - } - - @Test - public void test02() throws IOException { - String path = "E:\\work\\sunyard\\hsm\\projects\\sydapi\\src\\main\\java\\racal\\sunyard\\main\\SydApi4j.java"; - - BufferedReader br = new BufferedReader(new FileReader(path)); - - String line = null; - - while ((line = br.readLine()) != null) { - String trimLine = line.trim(); - if (trimLine.startsWith("Proto")) { - System.out.println(trimLine.substring(5, trimLine.indexOf(" "))); - } - } - } - - @Test - public void getAllMethod() { - Method[] methods = SydApi4j.class.getDeclaredMethods(); - for (Method method : methods) { - Class returnType = method.getReturnType(); - - } - } -} - diff --git a/src/test/java/com/sunyard/sydapi/test/TestICBC.java b/src/test/java/com/sunyard/sydapi/test/TestICBC.java new file mode 100644 index 0000000..d450897 --- /dev/null +++ b/src/test/java/com/sunyard/sydapi/test/TestICBC.java @@ -0,0 +1,121 @@ +package com.sunyard.sydapi.test; + + +import com.sunyard.RetWrap; +import com.sunyard.SydApi; +import com.sunyard.proto.Util; +import racal.sunyard.main.SydApi4j; + +import java.io.UnsupportedEncodingException; +import java.util.Arrays; + +public class TestICBC { + public static void main(String[] args) throws UnsupportedEncodingException { + + + SydApi4j.SYD_Set_Parameter_HA("unkown", "172.16.17.162", 8889 , 1000); + + SydApi4j api = (SydApi4j) new SydApi4j();//.connect("wuyong.fullstack.club" , 8889, null,1000); + + + RetWrap r = api.SYD_SM2GenKeyPair(); + System.out.println( r.get("publicKey") ); + System.out.println( r.get("privateKey") ); + +// System.out.println("\n\n----- 获取公钥 () -----"); +// String pk = api.SYD_SM2_Get_Id_PublicKey_HA("1234", 0); +// System.out.print("\r\n公钥 : "); +// System.out.println( pk ); +// +// +//// pk = api.SYD_SM2_Get_Dn_PublicKey_HA("C=CN,O=Sunyard,OU=8001,CN=8001".getBytes("GBK"), 0); +//// System.out.print("\r\n公钥 : "); +//// System.out.println( pk ); +// +// +// // 签名 + String data="MainBody>1015570000408702018091900000000012018-09-19T10:13:391015570000408702015970000397542018-09-1900000001123456,测试"; + final String testPubKey = "0342000480C7E165DB8CF019509CE359C4FE06535275F5F63ADDC3955721FA4802BDC8701661554096BBC190916F39073C3763C8BEF6ABDF7A042C9F1D12B6BD6E5E2614"; +// System.out.println("\n\n----- SM2 算法签名 (原始数据) -----"); +// String sign = api.SYD_SM2_Sign_HA( +// "1234", +// SydApi.DATA_ORIGIN, +// Util.hexString2Bytes(testPubKey), +// data.getBytes() +// ); +// System.out.print("\n\n----- SM2 算法签名 结果: "); +// System.out.println( sign ); +// +// +// +// +// +// System.out.println("\n\n----- SM2 算法验签 (原始数据) -----"); +// boolean SM2VerifyRet = api.SYD_SM2_Verify_HA( +// SydApi.DATA_ORIGIN, +// Util.hexString2Bytes(testPubKey), data.getBytes() , sign); +// if (SM2VerifyRet){ +// System.out.println("验签通过"); +// }else{ +// System.err.println("验签失败"); +// throw new RuntimeException("验签失败"); +// } + + + +// // 签名验签 2 +// System.out.println("\n\n----- 签名验签 2 -----"); +// String sign2 = api.SYD_SM2_DetachedSign_HA( data.getBytes() , "C=CN,O=Sunyard,OU=8001,CN=8001"); +// System.out.println( sign2 ); + + +// String sign2 = "MIICpQYKKoEcz1UGAQQCAqCCApUwggKRAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIIByTCCAcUwggFooAMCAQICCDyTAAAAAAAlMAwGCCqBHM9VAYN1BQAwJjELMAkGA1UEBhMCQ04xFzAVBgNVBAMMDlN1bnlhcmRTTTJSb290MB4XDTE3MDUxNzAyNTI0NFoXDTIyMDcyNTAyNTI0NFowPTELMAkGA1UEBhMCQ04xEDAOBgNVBAoMB1N1bnlhcmQxDTALBgNVBAsMBDgwMDExDTALBgNVBAMMBDgwMDEwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAQ+2joQe3zDXMAFx/vwu05rQ6B+4U42BgPSLsoqYAstD6AwVdQA0SQDAPVGSLhJ0T9QszD/FDUbVkWxNoaCCmW7o2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFAMWZaY2AwaQTNiFLpsa0dyCzBZ6MAwGCCqBHM9VAYN1BQADSQAwRgIhAIl2ZHGfln5hedcousARzZ2yeUjUbxSFMmhMmr5t6Q6nAiEAvqYX/KpIcvnPyB/Yiil+oq6DFdVM6P3vDxBhU/8taXExgaAwgZ0CAQEwMjAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QCCDyTAAAAAAAlMAwGCCqBHM9VAYMRBQAwDQYJKoEcz1UBgi0BBQAERzBFAiATwLIYiylt7xHmBkH6EclrchClxzLlKWC5guxxzkr58gIhANSw+owu8cyypdJtHGrGqjSiB1BVzGva+irUHelx/GbC"; +// sign2 = "MIID7gYKKoEcz1UGAQQCAqCCA94wggPaAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIIC2jCCAtYwggJ6oAMCAQICBUACgAF0MAwGCCqBHM9VAYN1BQAwYTELMAkGA1UEBhMCQ04xMDAuBgNVBAoMJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEgMB4GA1UEAwwXQ0ZDQSBBQ1MgVEVTVCBTTTIgT0NBMzEwHhcNMTcxMTE2MDY1NDQ1WhcNMjIxMTE2MDY1NDQ1WjCBgzELMAkGA1UEBhMCQ04xHDAaBgNVBAoME0NGQ0EgVEVTVCBTTTIgT0NBMzExDjAMBgNVBAsMBVNIQ1BFMRkwFwYDVQQLDBBPcmdhbml6YXRpb25hbC0xMSswKQYDVQQDDCIwNTFA5LiK5rW356Wo5o2u5Lqk5piT5omAQEFBQUFBQUA4MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEYPA9UQRL/ZaThEN0nc3SwkOHw4hPDXG9hZeKiBnNdhgPy1EtX4My2bpNFpYMmQ0nvkJUM4qpJrF7MSqEws6rLaOB+TCB9jA/BggrBgEFBQcBAQQzMDEwLwYIKwYBBQUHMAGGI2h0dHA6Ly9vY3NwdGVzdC5jZmNhLmNvbS5jbjo4MC9vY3NwMB8GA1UdIwQYMBaAFATHvPlZAWk+jDQ2IGIYPN68tbsMMAwGA1UdEwEB/wQCMAAwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovLzIxMC43NC40Mi4zL09DQTMxL1NNMi9jcmwxLmNybDAOBgNVHQ8BAf8EBAMCBsAwHQYDVR0OBBYEFKJnS7XYRDWG9eqXtSzUZXK+De2/MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAMBggqgRzPVQGDdQUAA0gAMEUCIGaSRoaUSpoH4lW3at1ABluiNwFDH21jHesHmy0F5gjqAiEA0sUykW9E36F3qQ91YDvasQg8EnOMp1idhgt6pq/NUAYxgdgwgdUCAQEwajBhMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQDDBdDRkNBIEFDUyBURVNUIFNNMiBPQ0EzMQIFQAKAAXQwDAYIKoEcz1UBgxEFADANBgkqgRzPVQGCLQEFAARHMEUCIQDH3ePzq4nYJ8pAodJyqPKqCQuQwmOpyj/rWcDILzFj2gIgUW5c9W6jD7u91opMcDwaw4aNEvEtGX6ks5XDIMIkUjI="; +// +// +// +// boolean pass = api.SYD_SM2_DetachedVerify_HA( "0000000000000002018091810000086272018-09-17T19:06:39CC00".getBytes(), sign2 ); +// System.out.println( pass ); +// +// // 获取公钥 +// X509 x = api.SYD_Get_X509_CertInfo_HA( "0000000000000002018091810000086272018-09-17T19:06:39CC00".getBytes(), sign2 ); +// System.out.println( Util.bytes2HexString( x.getPubKey() ) ); + + byte[]ttt = new byte[40960]; + Arrays.fill(ttt, (byte) 0x88); + String sign2 = api.SYD_SM2_Sign_HA( + "1234", + SydApi.DATA_HASH, + Util.hexString2Bytes("0342000480C7E165DB8CF019509CE359C4FE06535275F5F63ADDC3955721FA4802BDC8701661554096BBC190916F39073C3763C8BEF6ABDF7A042C9F1D12B6BD6E5E2614"), + ttt + ); + System.out.print("\n\n----- SM2 算法签名 结果: "); + System.out.println( sign2 ); + + System.out.println( api.SYD_SM2_Verify_HA( + SydApi.DATA_HASH, + Util.hexString2Bytes("0342000480C7E165DB8CF019509CE359C4FE06535275F5F63ADDC3955721FA4802BDC8701661554096BBC190916F39073C3763C8BEF6ABDF7A042C9F1D12B6BD6E5E2614"), + ttt , + sign2 + ) ); + + + + String sign3 = api.SYD_SM2_Sign_HA( + "1234", + SydApi.DATA_ORIGIN, + Util.hexString2Bytes("0342000480C7E165DB8CF019509CE359C4FE06535275F5F63ADDC3955721FA4802BDC8701661554096BBC190916F39073C3763C8BEF6ABDF7A042C9F1D12B6BD6E5E2614"), + "1015570000408702018091900000000012018-09-19T10:13:391015570000408702015970000397542018-09-1900000001123456,测试".getBytes() + ); + System.out.print("\n\n----- SM2 算法签名 结果: "); + System.out.println( sign3 ); + + System.out.println( api.SYD_SM2_Verify_HA( + SydApi.DATA_ORIGIN, + Util.hexString2Bytes("0342000480C7E165DB8CF019509CE359C4FE06535275F5F63ADDC3955721FA4802BDC8701661554096BBC190916F39073C3763C8BEF6ABDF7A042C9F1D12B6BD6E5E2614"), + "1015570000408702018091900000000012018-09-19T10:13:391015570000408702015970000397542018-09-1900000001123456,测试".getBytes() , + sign3 + ) ); + + } +} diff --git a/src/test/java/com/sunyard/sydapi/test/TestSV.java b/src/test/java/com/sunyard/sydapi/test/TestSV.java deleted file mode 100644 index e312a01..0000000 --- a/src/test/java/com/sunyard/sydapi/test/TestSV.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.sunyard.sydapi.test; - - -import com.sunyard.SydApi; -import com.sunyard.proto.Util; -import racal.sunyard.main.SydApi4j; -import racal.sunyard.main.SydApiBuilder; - -import static com.sunyard.SydApi.*; - - -public class TestSV { - - private static final String inHexData = "67c6697351ff4aec29cdbaabf2fbe346"; - private static final String dn = "C=CN,ST=浙江,L=杭州,O=信雅达测试123,OU=安全应用1,OU=安全应用2,CN=@信雅达安全测试"; - - - public static void main(String[] args) { - System.setProperty("com.sunyard.sydapi4j.debug", "true"); - // 连接加密机 - SydApi4j api = (SydApi4j) new SydApi4j().connect("172.16.18.59", 8889, null, 1000); - - SydApiBuilder builder = new SydApiBuilder().setIp("192.168.5.88"); - builder.build(); - - try { - - // case1(api); - case4(api); - case5(api); - - } catch (Exception e) { - e.printStackTrace(); - } finally { - api.disconnect(); - } - } - - public static void case1(SydApi api) { - String sign = api.attachedSign( Util.hexString2Bytes( inHexData ), dn ); - System.out.println("签名结果 " + sign ); - - - boolean pass = api.attachedVerify(sign); - System.out.println("验签结果 " + pass); - } - - - public static void case2(SydApi api) { - System.out.println("begin SYD_Sign_Detach"); - String sign = api.detachedSign( DATA_ORIGIN, Util.hexString2Bytes( inHexData ), dn ); - System.out.println("签名结果 " + sign ); - System.out.println("begin SYD_Sign_Detach"); - - System.out.println("begin SYD_Verify_Detach"); - boolean pass = api.detachedVerify(DATA_ORIGIN, Util.hexString2Bytes( inHexData ), sign); - System.out.println("验签结果 " + pass); - System.out.println("end SYD_Verify_Detach"); - } - - - public static void case3(SydApi api) { - System.out.println("begin SYD_NakedSign"); - byte[] sign = api.SYD_NakedSign( Util.hexString2Bytes(inHexData) , dn); - System.out.println("签名结果 " + Util.bytes2HexString(sign) ); - System.out.println("end SYD_NakedSign"); - - System.out.println("begin SYD_NakedVerify"); - boolean pass = api.SYD_NakedVerify( Util.hexString2Bytes(inHexData), sign, dn); - System.out.println("验签结果 " + pass); - System.out.println("end SYD_NakedVerify"); - } - - - public static void case4(SydApi api) { - // 不传 ID - String pk = api.SM2GetPublicKeyC("65667", 0 ); - String sk = api.SM2GetPrivateKeyC("000000000006566700000000001"); - - String sign = api.SM2SignC( 0, sk, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData) ); - System.out.println("签名结果 " + sign ); - - boolean pass = api.SM2Verify(Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData), sign ); - System.out.println("验签结果 " + pass); - } - - - public static void case5(SydApi api) { - // 传 ID - String uid = "8765432187654321"; - String pk = api.SM2GetPublicKeyC("65667", 0 ); - String sk = api.SM2GetPrivateKeyC("000000000006566700000000001"); - - System.out.println("begin SYD_Sign_P1"); - String sign = api.SM2SignC( 0, uid, sk, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData) ); - System.out.println("签名结果 " + Util.bytes2HexString( Util.decodeBase64( sign ) ) ); - System.out.println("end SYD_Verify_P1"); - - System.out.println("begin SYD_Sign_P1"); - boolean pass = api.SM2Verify(uid, 1, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData), sign ); - System.out.println("验签结果 " + pass); - System.out.println("end SYD_Verify_P1"); - } -} diff --git a/src/test/java/com/sunyard/sydapi/test/TestXJ.java b/src/test/java/com/sunyard/sydapi/test/TestXJ.java deleted file mode 100644 index 7dc0181..0000000 --- a/src/test/java/com/sunyard/sydapi/test/TestXJ.java +++ /dev/null @@ -1,457 +0,0 @@ -package com.sunyard.sydapi.test; - -import com.sunyard.RetWrap; -import com.sunyard.SydApi; -import com.sunyard.cert.X509; -import com.sunyard.proto.Util; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import racal.sunyard.main.SydApi4j; - -import java.io.BufferedInputStream; -import java.io.FileInputStream; -import java.io.IOException; - -/** - * 新疆联通政务云 - */ -public class TestXJ { - - SydApi4j api; - - @Before - public void before() { - // 通过设置debug的属性开启debug,如果不设置则默认不打开 - System.setProperty("com.sunyard.sydapi4j.debug", "true"); - api = (SydApi4j) new SydApi4j().connect("192.168.0.100", 8889, null, 1000); - } - - @After - public void after() { - try { - this.api.disconnect(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - // 测试通过 - // 8003 - @Test - public void testSYD_NakedSign() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - byte[] bytes = api.SYD_NakedSign("111".getBytes(), dn); - System.out.println(Util.bytes2HexString(bytes)); - } - - // 测试通过 - // 8004 - @Test - public void testSYD_NakedVerify() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String orgData = "111"; - byte[] bytes = api.SYD_NakedSign(orgData.getBytes(), dn); - String sign = Util.bytes2HexString(bytes); - System.out.println(sign); - - boolean b = api.SYD_NakedVerify(orgData.getBytes(), bytes, dn); - System.out.println(b); - } - - // 测试通过 - // 6C - @Test - public void testNetSign() { - String sn = "1004282451"; - String s = api.netSign(sn, "111".getBytes()); - System.out.println(s); - } - - // 测试通过 - // 6D - @Test - public void testNetVerify() { - String sn = "1004282451"; - String data = "111"; - String s = api.netSign(sn, data.getBytes()); - - boolean b = api.netVerify(sn, data.getBytes(), s); - System.out.println(b); - } - - // 测试通过 - // 80 - @Test - public void testSM2SignCustomized() { - String sn = "1004282452"; - String s = api.SM2SignCustomized(sn, "111".getBytes()); - System.out.println(s); - } - - // 测试通过 - // 81 - @Test - public void testSM2VerifyCustomized() { - String sn = "1004282451"; - String data = "111"; - String s = api.SM2SignCustomized(sn, data.getBytes()); - - boolean b = api.SM2VerifyCustomized(sn, data.getBytes(), s); - System.out.println(b); - } - - // 测试通过 - // 74 - @Test - public void testSM2SignC() { - String userId = "1111111111111113"; - String certNo = "1234567812345678"; - String thisPublicKey = "03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231"; - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(userId, certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); - System.out.println(s); - } - - // 测试通过 - // 75 - @Test - public void testSM2Verify() { - - String userId = "1111111111111113"; - String certNo = "1234567812345678"; - String thisPublicKey = "03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231"; - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(userId, certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); - - System.out.println(s); - boolean b = api.SM2Verify(certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes(), s); - System.out.println(b); - } - - // 测试通过 - // 8005 - @Test - public void testSYD_DetachedSign() { - - String orgData = "3214312341243214"; - String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String s = api.SYD_DetachedSign(orgData.getBytes(), DN); - System.out.println(s); - } - - // 测试通过 - // 8006 - @Test - public void testSYD_DetachedVerify() { - String orgData = "3214312341243214"; - String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String sign = api.SYD_DetachedSign(orgData.getBytes(), DN); - System.out.println("签名结果" + sign); - - boolean b = api.SYD_DetachedVerify(orgData.getBytes(), sign); - System.out.println("验签结果:" + b); - } - - // 测试通过 - // 8005 - @Test - public void testSm3AndDetachedSign() { - String publicKey = "0342000469DE3847DD6A66DA96DB8F2DCFA32E10E680FF2EF4A592079E7C3A44320BB15084E7CA9782A39B6E28F07C04FE00D68958A2605921E71712D56C1E4435A39FA5"; - String orgData = "FFFFFFFFFFFFFFFF"; - String testCertNo = "C=CN,O=Sunyard,OU=8001,CN=8001"; - - String sign = api.sm3AndDetachedSign(orgData.getBytes(), publicKey, testCertNo); - System.out.println("签名结果: " + sign); - - boolean b = api.sm3AndDetachedVerify(orgData.getBytes(), publicKey, sign); - System.out.println("验签结果:" + b); - } - - - // 测试通过 - // 8005 - @Test - public void testDetachedSign() { - String publicKey = "0342000469DE3847DD6A66DA96DB8F2DCFA32E10E680FF2EF4A592079E7C3A44320BB15084E7CA9782A39B6E28F07C04FE00D68958A2605921E71712D56C1E4435A39FA5"; - String orgData = "FFFFFFFFFFFFFFFF"; - String testCertNo = "C=CN,O=Sunyard,OU=8001,CN=8001"; - - byte[] hash = api.SM3Hash(publicKey, orgData.getBytes()); - - String sign = api.detachedSign( - SydApi.DATA_HASH, - hash, - testCertNo - ); - - System.out.println("\t签名结果: " + sign); - - boolean verify = api.detachedVerify( - SydApi.DATA_HASH, - hash, - sign - ); - - System.out.println("\t验签结果: " + verify); - } - - // 测试通过 - // 72 - @Test - public void testSM2GenSessionKey() { - - String pk="034200041CD47354867E12B9D138F098413C47D42EDEB2AD402EAB431C0C7AC2FE2D6DE9C67273C643C709F2A749188941B7FA7F9FF14F8E7D19316936DB4D4954FF3819"; - - RetWrap retWrap = api.SM2GenSessionKey(pk); - printRetWrap(retWrap); - } - - // 测试通过 - // 73 - @Test - public void testSM2ConfirmSessionKeyC() { - - String userId = "1111111111111147"; - - String pk="0342000422C4FC907E0BEC600C2070D675EFB65EAE3A628260FF5461DD5F8133CF7CF98530EF392D016B6487BA6148E9AC27BDD4E8D7404A310CB09335F50AEF00ADB068"; - - RetWrap retWrap = api.SM2GenSessionKey(pk); - printRetWrap(retWrap); - - String cipherKey = (String) retWrap.get("CipherKey"); - - RetWrap retWrap1 = api.SM2ConfirmSessionKeyC(userId, cipherKey); - printRetWrap(retWrap1); - } - - // 测试通过 - // E0 - @Test - public void testSYMEncryptData() { - String sessionKey = "XF356BCBA3204F6E6F356BCBA3204F6E6"; - String pInData = "1111111111111111"; - - byte[] bytes = api.SYMEncryptData(3,sessionKey, pInData.getBytes()); - byte[] bytes1 = api.SYMDecryptData(3, sessionKey, bytes); - System.out.println(new String(bytes1)); - } - - // 测试通过 - // E0 - @Test - public void testEncDecData() { - - String msg = "1111111111111111111111"; - - String key = "X3C9003C47A13379011733681ABB4A4D0"; - - byte[] bytes = api.SYMEncryptDataCBC(1, key, msg.getBytes()); - - System.out.println("输出为: " + Util.bytes2HexString(bytes)); - - byte[] bytes1 = api.SYMDecryptDataCBC(1, key, bytes); - System.out.println("明文:" + new String(bytes1)); - } - - // 测试通过 - // 6B - @Test - public void testDecryptDE() { - String sn = "1004282452"; - RetWrap retWrap = api.generateDE(sn, (byte) 0x30); - String sessionKey = (String) retWrap.get("SessionKey"); - String CipherKey = (String) retWrap.get("CipherKey"); - String KCV = (String) retWrap.get("KCV"); - - RetWrap retWrap1 = api.decryptDE(sn, CipherKey); - printRetWrap(retWrap1); - } - - // 测试通过 - // 7E - @Test - public void testSYD_SM2_Get_Dn_PublicKey_HA() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String s = api.SYD_SM2_Get_Dn_PublicKey_HA(dn.getBytes(), 0); - System.out.println(s); - } - - // 测试通过 - // 6E - @Test - public void testGetX509SN() { - String dn = "C=CN,ST=ZJ,L=HZ,O=SUNYARD,OU=123456,CN=111"; - String s = api.getX509SN(0, dn.getBytes()); - System.out.println(s); - } - - // 测试通过 - // 7E - @Test - public void testGetDNPublicKey() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String s = api.GetDNPublicKey(0, dn.getBytes()); - System.out.println(s); - } - - // 测试通过 - // QQ - @Test - public void testSM2GetPublicKeyC() { - String userId = "1111111111111117"; - - String s = api.SM2GetPublicKeyC(userId, 0); - System.out.println(s); - } - - // 测试通过 - // 8016 - @Test - public void testGetX509CertInfo() { - - String pCert = "-----BEGIN CERTIFICATE-----\u0007MIIC1jCCAnqgAwIBAgIFQAKAAXQwDAYIKoEcz1UBg3UFADBhMQswCQYDVQQGEwJD\u0007TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y\u0007aXR5MSAwHgYDVQQDDBdDRkNBIEFDUyBURVNUIFNNMiBPQ0EzMTAeFw0xNzExMTYw\u0007NjU0NDVaFw0yMjExMTYwNjU0NDVaMIGDMQswCQYDVQQGEwJDTjEcMBoGA1UECgwT\u0007Q0ZDQSBURVNUIFNNMiBPQ0EzMTEOMAwGA1UECwwFU0hDUEUxGTAXBgNVBAsMEE9y\u0007Z2FuaXphdGlvbmFsLTExKzApBgNVBAMMIjA1MUDkuIrmtbfnpajmja7kuqTmmJPm\u0007iYBAQUFBQUFBQDgwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAARg8D1RBEv9lpOE\u0007Q3SdzdLCQ4fDiE8Ncb2Fl4qIGc12GA/LUS1fgzLZuk0WlgyZDSe+QlQziqkmsXsx\u0007KoTCzqsto4H5MIH2MD8GCCsGAQUFBwEBBDMwMTAvBggrBgEFBQcwAYYjaHR0cDov\u0007L29jc3B0ZXN0LmNmY2EuY29tLmNuOjgwL29jc3AwHwYDVR0jBBgwFoAUBMe8+VkB\u0007aT6MNDYgYhg83ry1uwwwDAYDVR0TAQH/BAIwADA2BgNVHR8ELzAtMCugKaAnhiVo\u0007dHRwOi8vMjEwLjc0LjQyLjMvT0NBMzEvU00yL2NybDEuY3JsMA4GA1UdDwEB/wQE\u0007AwIGwDAdBgNVHQ4EFgQUomdLtdhENYb16pe1LNRlcr4N7b8wHQYDVR0lBBYwFAYI\u0007KwYBBQUHAwIGCCsGAQUFBwMEMAwGCCqBHM9VAYN1BQADSAAwRQIgZpJGhpRKmgfi\u0007Vbdq3UAGW6I3AUMfbWMd6webLQXmCOoCIQDSxTKRb0TfoXepD3VgO9qxCDwSc4yn\u0007WJ2GC3qmr81QBg==\u0007-----END CERTIFICATE-----\u0007"; - X509 x509 = api.GetX509CertInfo(pCert); - - String path = "E:\\work\\sunyard\\证书\\sm2.q\\sm2.q.enc.crt.pem"; - X509 x509_1 = api.GetX509CertInfo(getCertStr(path)); - } - - // 测试通过 - // 8017 - @Test - public void testGetX509CertFileC() { - String userId = "8001"; - - String s = api.GetX509CertFileC(userId, 0); - System.out.println(s); - } - - // 测试通过 - // E2 - @Test - public void testSM2GenKeyPair() { - RetWrap retWrap = api.SM2GenKeyPair(); - printRetWrap(retWrap, true); - } - - // 测试通过 - // QN - @Test - public void testSYD_SM2GenKeyPair() { - RetWrap retWrap = api.SYD_SM2GenKeyPair(); - printRetWrap(retWrap); - } - - // 测试通过 - // 77 - @Test - public void testSM2Encrypt() { - String publicKey = "03420004C51A40A094B6A14500B2980603D68CA263FF1BA238AFB17BB8B791C5F444465A749B68B4584C83E7BEF66DE2446177E14DBE0F32691F54B1636CC73334A1A94D"; - String orgData = "FFFFFFFFFFFFFFFF"; - String s = api.SM2Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); - - System.out.println("encData: " + s); - } - - // 测试通过 - // 78 - @Test - public void testSM2DecryptC() { - String certId = "1111111111111122"; - String publicKey = "0342000469DE3847DD6A66DA96DB8F2DCFA32E10E680FF2EF4A592079E7C3A44320BB15084E7CA9782A39B6E28F07C04FE00D68958A2605921E71712D56C1E4435A39FA5"; - String orgData = "FFFFFFFFFFFFFFFF"; - String s = api.SM2Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); - - byte[] bytes = api.SM2DecryptC(certId, s); - - System.out.println("decData:" + new String(bytes)); - } - - // 测试通过 - // 76 - // 带公钥 - @Test - public void testSM3Hash() { - String publicKey = "0342000469DE3847DD6A66DA96DB8F2DCFA32E10E680FF2EF4A592079E7C3A44320BB15084E7CA9782A39B6E28F07C04FE00D68958A2605921E71712D56C1E4435A39FA5"; - String orgData = "FFFFFFFFFFFFFFFF"; - - byte[] hash = api.SM3Hash(publicKey, orgData.getBytes()); - - System.out.println("hash:" + Util.bytes2HexString(hash)); - } - - // 测试通过 - // 76 - // 不带公钥 - @Test - public void testSM3Hash2() { - String orgData = "FFFFFFFFFFFFFFFF"; - - byte[] hash = api.SM3Hash(orgData.getBytes()); - - System.out.println("hash:" + Util.bytes2HexString(hash)); - } - - // 工具方法 - // ========================================== - - public static void printRetWrap(RetWrap rw) { - printRetWrap(rw, false); - } - - /** - * 输出 - * @param rw - */ - public static void printRetWrap(RetWrap rw, boolean flag) { - for (String s : rw.keySet()) { - - Object o = rw.get(s); - if (o instanceof String) { - System.out.println(s + ":" + o); - } else if (o instanceof byte[]) { - if (flag) { - System.out.println(s + ": " + Util.bytes2HexString((byte[]) o)); - } else { - System.out.println(s + ": " + new String(Util.hexString2Bytes(Util.bytes2HexString((byte[]) o)))); - } - } else { - System.out.println(s + ":" + o); - } - } - } - - // 获取证书 - public String getCertStr(String path) { - - BufferedInputStream bis = null; - try { - bis = new BufferedInputStream(new FileInputStream(path)); - - StringBuilder str = new StringBuilder(); - - int len = 0; - - while ((len = bis.read()) != -1) { - str.append((char) len); - } - - return str.toString(); - } catch (IOException e) { - e.printStackTrace(); - } finally { - if (bis != null) { - try { - bis.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - return null; - } -} diff --git a/src/test/java/lrapi/lr.java b/src/test/java/lrapi/lr.java new file mode 100644 index 0000000..dab1220 --- /dev/null +++ b/src/test/java/lrapi/lr.java @@ -0,0 +1,14 @@ +package lrapi; + +public class lr { + + public static String AUTO = "AUTO"; + + public static void start_transaction(String t) { + System.out.println("start_transaction" + t); + } + + public static void end_transaction(String t, String type) { + System.out.println("end_transaction" + t); + } +}