调整接口和测试
This commit is contained in:
parent
f215651ad7
commit
9efe703bca
Binary file not shown.
2
pom.xml
2
pom.xml
@ -37,7 +37,7 @@
|
||||
<dependency>
|
||||
<groupId>com.sunyard</groupId>
|
||||
<artifactId>sydapi4j</artifactId>
|
||||
<version>1.12.20220915</version>
|
||||
<version>1.15.20250627</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
|
||||
@ -2,5 +2,6 @@ package com.sunyard.sge.database;
|
||||
|
||||
public interface ISM4Mac {
|
||||
public void update(byte[] pcData);
|
||||
public String disget();
|
||||
public String digest();
|
||||
public boolean checkDigest(String mac);
|
||||
}
|
||||
|
||||
@ -296,12 +296,14 @@ public interface SydApi {
|
||||
* @param mac 输入。密文的 MAC。
|
||||
* @return 明文
|
||||
*/
|
||||
byte[] SYD_SM4_CheckMacAndDecrypt_ShortData(
|
||||
DataAndMacCheck SYD_SM4_CheckMacAndDecrypt_ShortData(
|
||||
int iEncKeyIndex,
|
||||
int iMacKeyIndex,
|
||||
byte[] pcData,
|
||||
String mac
|
||||
);
|
||||
|
||||
|
||||
List<DataAndMac> SYD_SM4_EncryptAndMac_BatchData(
|
||||
int[] iEncKeyIndex,
|
||||
int[] iMacKeyIndex,
|
||||
|
||||
@ -798,14 +798,18 @@ public class SydApiBaseFunction implements SydApi {
|
||||
return new DataAndMac(enData, mac);
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] SYD_SM4_CheckMacAndDecrypt_ShortData(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData, String mac) {
|
||||
boolean ret = SYD_SM4Mac_ShortData(iMacKeyIndex, pcData, mac);
|
||||
if (!ret) {
|
||||
throw new SydApiException("MAC 验证不通过", 90);
|
||||
}
|
||||
|
||||
return SYD_SM4_ShortData(iEncKeyIndex, pcData, Consts.ECB_DEC);
|
||||
|
||||
@Override
|
||||
public DataAndMacCheck SYD_SM4_CheckMacAndDecrypt_ShortData(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData, String mac) {
|
||||
boolean ret = SYD_SM4Mac_ShortData(iMacKeyIndex, pcData, mac);
|
||||
byte[] data = null;
|
||||
try {
|
||||
data = SYD_SM4_ShortData(iEncKeyIndex, pcData, Consts.ECB_DEC);
|
||||
}catch (Exception e){
|
||||
return new DataAndMacCheck(null, ret);
|
||||
}
|
||||
return new DataAndMacCheck(data, ret);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -170,10 +170,10 @@ public class SydApiLongLinkWrap implements SydApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] SYD_SM4_CheckMacAndDecrypt_ShortData(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData, String mac) {
|
||||
FutureTask<byte[]> task = builder.getLongLinkWorks().fTask(new Callable<byte[]>() {
|
||||
public DataAndMacCheck SYD_SM4_CheckMacAndDecrypt_ShortData(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData, String mac) {
|
||||
FutureTask<DataAndMacCheck> task = builder.getLongLinkWorks().fTask(new Callable<DataAndMacCheck>() {
|
||||
@Override
|
||||
public byte[] call() throws Exception {
|
||||
public DataAndMacCheck call() throws Exception {
|
||||
return builder.get().SYD_SM4_CheckMacAndDecrypt_ShortData(iEncKeyIndex, iMacKeyIndex, pcData, mac);
|
||||
}
|
||||
});
|
||||
|
||||
@ -20,6 +20,7 @@ public class SydSM4Mac implements ISM4Mac {
|
||||
this.pcProcData = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(byte[] pcData) {
|
||||
if (null == pcData || 0 == pcData.length) {
|
||||
return;
|
||||
@ -70,7 +71,14 @@ public class SydSM4Mac implements ISM4Mac {
|
||||
}
|
||||
|
||||
}
|
||||
public String disget() {
|
||||
|
||||
@Override
|
||||
public boolean checkDigest(String mac) {
|
||||
return mac != null && this.pcMac.equals(mac);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String digest() {
|
||||
|
||||
if (is_finished) {
|
||||
throw new SydApiException(0x8007);
|
||||
|
||||
68
src/test/java/test/CalcRes.java
Normal file
68
src/test/java/test/CalcRes.java
Normal file
File diff suppressed because one or more lines are too long
25
src/test/java/test/Choise.java
Normal file
25
src/test/java/test/Choise.java
Normal file
@ -0,0 +1,25 @@
|
||||
package test;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Choise {
|
||||
private String[] args;
|
||||
private int argIndex = 0;
|
||||
private Scanner scanner = new Scanner(System.in);
|
||||
|
||||
public Choise(String[] args) {
|
||||
this.args = args;
|
||||
}
|
||||
|
||||
public String get(){
|
||||
if(argIndex < args.length){
|
||||
return args[argIndex++];
|
||||
}else{
|
||||
return scanner.nextLine();
|
||||
}
|
||||
}
|
||||
|
||||
public int getAsInt(){
|
||||
return Integer.parseInt(get());
|
||||
}
|
||||
}
|
||||
@ -29,9 +29,9 @@ public class EncryptAndMac {
|
||||
|
||||
// 短数据
|
||||
DataAndMac ret = api.SYD_SM4_EncryptAndMac_ShortData(keyEncIdx, keyMacIdx, data);
|
||||
byte[] deData = api.SYD_SM4_CheckMacAndDecrypt_ShortData(keyEncIdx, keyMacIdx, ret.getData(), ret.getMac());
|
||||
DataAndMacCheck deData = api.SYD_SM4_CheckMacAndDecrypt_ShortData(keyEncIdx, keyMacIdx, ret.getData(), ret.getMac());
|
||||
|
||||
if (Arrays.equals( data, deData ) ) {
|
||||
if (Arrays.equals( data, deData.getData() ) ) {
|
||||
System.out.println("短数据加密并计算 MAC - 测试通过");
|
||||
} else {
|
||||
System.out.println("短数据加密并计算 MAC - 测试失败");
|
||||
|
||||
@ -78,14 +78,14 @@ public class LongDataTest {
|
||||
public void sm4mac_case1() {
|
||||
ISM4Mac sydApiMac = api.initSM4Mac(1);
|
||||
sydApiMac.update(null);
|
||||
String mac = sydApiMac.disget();
|
||||
String mac = sydApiMac.digest();
|
||||
Assert.assertEquals("FF49F76AD3A71651FE1A8A9F0D2A689E", mac);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sm4mac_case2() {
|
||||
ISM4Mac sydApiMac = api.initSM4Mac(1);
|
||||
String mac = sydApiMac.disget();
|
||||
String mac = sydApiMac.digest();
|
||||
Assert.assertEquals("FF49F76AD3A71651FE1A8A9F0D2A689E", mac);
|
||||
}
|
||||
|
||||
@ -99,7 +99,7 @@ public class LongDataTest {
|
||||
sydApiMac.update(data);
|
||||
}
|
||||
|
||||
String mac = (String) sydApiMac.disget();
|
||||
String mac = (String) sydApiMac.digest();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@ package test;
|
||||
// * int i = random.nextInt(4065);
|
||||
// * SydSM4Mac sydApiMac = api.initSydSM4Mac(api, 1, 1,1);
|
||||
// * sydApiMac.update(new byte[i]);
|
||||
// * System.out.println(sydApiMac.disget().getData());
|
||||
// * System.out.println(sydApiMac.digest().getData());
|
||||
// *
|
||||
// * SM4 updata传0-4064随机长度
|
||||
// * Random random = new Random();
|
||||
@ -67,10 +67,10 @@ package test;
|
||||
// String s = Util.bytes2HexString(finish);
|
||||
// System.out.print( s);
|
||||
//
|
||||
// SM4Mac直接调用disget
|
||||
// SM4Mac直接调用digest
|
||||
// SydSM4Mac sydSM4Mac = api.initSydSM4Mac(api, 1, 1,1);
|
||||
// LongDataReturn disget = sydSM4Mac.disget();
|
||||
// System.out.println(disget.getData());
|
||||
// LongDataReturn digest = sydSM4Mac.digest();
|
||||
// System.out.println(digest.getData());
|
||||
// **/
|
||||
//
|
||||
//// SydApiSM4 sydApiSM4 = api.initSydApiSM4(api, 1,1, 1);
|
||||
|
||||
1284
src/test/java/test/TestAll.java
Normal file
1284
src/test/java/test/TestAll.java
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,22 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||
<output url="file://$MODULE_DIR$/target/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="Maven: com.sunyard:sydapi4j:1.12.20220909-1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.sunyard:sydapi4j:1.12.20220915" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.sunyard:proto:1.0-20220905" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.codehaus.groovy:groovy-all:2.4.15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.17.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.17.0" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
1
test/start.sh
Normal file
1
test/start.sh
Normal file
@ -0,0 +1 @@
|
||||
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Dcom.sunyard.sydapi4j.debug=false -cp sydapi-database-1.15.jar:./lib/*:./ test.TestAll
|
||||
BIN
test/sydapi-database-1.15.jar
Normal file
BIN
test/sydapi-database-1.15.jar
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user