p1 验签 hash 数据 bug

This commit is contained in:
cheney 2022-05-30 17:15:01 +08:00
parent f90276218c
commit 6b94ddaab4
2 changed files with 20 additions and 6 deletions

View File

@ -3822,6 +3822,7 @@ public class SydApi4j implements SydApi {
data.put("signature", sign);
data.put("userId", certNo.getBytes());
data.put("infoData", orgData);
data.put("hashData", orgData);
data.put("publicKey", publicKey);
// 渲染发送
ByteBuffer bb = proto.rend(packet);

View File

@ -1,4 +1,4 @@
package com.sunyard.sydapi.sample;
package com.sunyard.sydapi.test;
import com.sunyard.SydApi;
@ -8,6 +8,7 @@ import racal.sunyard.main.SydApi4j;
public class TestPKCS1 {
private static final String testId = "8012";
private static final String testData = "1234567812345678";
private static final String testCertNo = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
@ -15,13 +16,16 @@ public class TestPKCS1 {
public static void main(String[] args) {
// 连接加密机
SydApi4j api = (SydApi4j) new SydApi4j().connect("192.168.0.100", 8889, null, 1000);
SydApi4j api = (SydApi4j) new SydApi4j().connect("192.168.0.200", 8889, null, 1000);
try {
// 原始数据模式
case1(api);
// case1( api );
// 外部 hash
case2( api );
} catch (Exception e) {
@ -31,8 +35,9 @@ public class TestPKCS1 {
}
}
// 签名验签 1
public static void case1(SydApi api) {
// 签名验签 1
System.out.println("\n\n----- 裸签名 -----");
byte[] sign = api.SYD_NakedSign(testData.getBytes(), testCertNo);
System.out.println("签名结果 " + Util.bytes2HexString(sign) );
@ -42,12 +47,20 @@ public class TestPKCS1 {
System.out.println("验签结果 " + pass);
}
// 签名验签 2
public static void case2(SydApi api) {
byte[] sign = api.SYD_NakedSign(testData.getBytes(), testCertNo);
String pk = api.SM2GetPublicKeyC( testId ,0);
System.out.println( pk );
byte[] data = api.SM3Hash( Util.hexString2Bytes(pk) );
byte[] sign = api.SYD_NakedSign(data, testCertNo);
System.out.println("签名结果 " + Util.bytes2HexString(sign) );
boolean pass = api.SYD_NakedVerify(testData.getBytes(), sign, testCertNo);
boolean pass = api.SYD_NakedVerify(data, sign, testCertNo);
System.out.println("验签结果 " + pass);
}