This commit is contained in:
yihzhou 2024-07-01 16:10:48 +08:00
parent e866887b3a
commit 25803c9d4f
4 changed files with 72 additions and 14 deletions

View File

@ -58,6 +58,12 @@ public class TestDemo {
return signVerify;
}
public static String sm3hash(SydApi4j api,String pk,String orgData) {
byte[] hash = api.SM3Hash(pk, orgData.getBytes());
System.out.println("hash计算"+ Util.bytes2HexString(hash));
return Util.bytes2HexString(hash);
}
public static void testAll(SydApi4j api, String certDn, String orgData) {
byte[] nakedSign = api.SYD_NakedSignAll(2, orgData.getBytes(), certDn);
@ -120,6 +126,10 @@ public class TestDemo {
case 8:
snSignVer(api, certDn,orgData, signorenData);
break;
case 9:
sm3hash(api, certDn,orgData);
break;
case 0:
testAll(api, certDn, orgData);
break;

View File

@ -558,7 +558,7 @@ public class SydApi4j implements SydApi {
byte[] s = null;
try {
sCertDN = DnUtil.verifyDn(sCertDN);
// sCertDN = DnUtil.verifyDn(sCertDN);
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException var16) {
var16.printStackTrace();
@ -600,7 +600,7 @@ public class SydApi4j implements SydApi {
}
public byte[] SYD_NakedSign_OuterHash(byte[] orgData, String sCertDN) {
sCertDN = DnUtil.verifyDn(sCertDN);
// sCertDN = DnUtil.verifyDn(sCertDN);
String pk = null;
try {
@ -709,7 +709,7 @@ public class SydApi4j implements SydApi {
byte[] s = null;
try {
sCertDN = DnUtil.verifyDn(sCertDN);
//sCertDN = DnUtil.verifyDn(sCertDN);
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException var18) {
var18.printStackTrace();
@ -754,7 +754,7 @@ public class SydApi4j implements SydApi {
}
public boolean SYD_NakedVerify_OuterHash(byte[] orgData, byte[] sign, String sCertDN) {
sCertDN = DnUtil.verifyDn(sCertDN);
// sCertDN = DnUtil.verifyDn(sCertDN);
String pk = null;
try {
@ -849,6 +849,7 @@ public class SydApi4j implements SydApi {
public String sm3AndDetachedSign(byte[] orgData, String publicKey, String sCertDN) {
byte[] hash = SM3Hash(publicKey, orgData);
System.out.println("hash为"+Util.bytes2HexString(hash));
return detachedSign(DATA_HASH, hash, sCertDN);
}
@ -970,6 +971,7 @@ public class SydApi4j implements SydApi {
@Override
public boolean sm3AndDetachedVerify(byte[] orgData, String publicKey, String sign) {
byte[] hash = SM3Hash(publicKey, orgData);
System.out.println("验签hash为"+Util.bytes2HexString(hash));
return detachedVerify(DATA_HASH, hash, sign);
}
@ -996,7 +998,7 @@ public class SydApi4j implements SydApi {
byte[] dn = new byte[256];
byte[] s = null;
try {
sCertDN = verifyDn(sCertDN);
// sCertDN = verifyDn(sCertDN);
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
@ -1357,9 +1359,9 @@ public class SydApi4j implements SydApi {
public String detachedSignAll(int rFlag,byte[] orgData, String sCertDN){
try {
String cert = getCertByDn(sCertDN);
boolean sm2Cert = CertUtil.isSM2Cert(cert);
if(!sm2Cert){//RSA
// String cert = getCertByDn(sCertDN,0);
// boolean sm2Cert = CertUtil.isSM2Cert(cert);
if(rFlag<4){//RSA
return detachedSignRSA(rFlag,orgData,sCertDN);
}else {
if (orgData.length<4096){
@ -1367,7 +1369,9 @@ public class SydApi4j implements SydApi {
}else {
String pk = null;
pk = this.SYD_SM2_Get_Dn_PublicKey_HA(sCertDN.getBytes("GBK"), 0);
System.out.println(pk);
byte[] hash = this.SM3Hash(pk, orgData);
System.out.println("hash为"+Util.bytes2HexString(hash));
return detachedSign(DATA_HASH,hash,sCertDN);
}
}

View File

@ -20,7 +20,7 @@ public class Shangqing {
private String RSA ="C=cn,O=CFCA TEST CA,OU=NCS2,OU=Enterprises,CN=041@Z402451000010@ShanDong@00000001";
private byte[] orgData = new byte[8];
private byte[] orgData = new byte[10];
@Before
public void before() {
@ -116,11 +116,55 @@ public class Shangqing {
System.out.println(ver);
//
}
@Test
public void test8005(){
System.setProperty("com.sunyard.sydapi4j.debug", "true");
SydApi4j api1 = (SydApi4j) new SydApi4j().connect("192.168.0.100", 8889, null, 1000);
SydApi4j api2 = (SydApi4j) new SydApi4j().connect("172.16.17.82", 8889, null, 1000);
String dn = "CN=test0001,OU=zyhtest,O=sunyard,L=hz,ST=zj,C=CN";
String pk = "03420004EA1077E7D7CDA76A8470D96929866B18E57F72C12850C853904B4083656F5991EAB499F2DC32BB02BF35F8748FE7A69D76C5D08E6A23D1568344F09227C47A47";
String oData = "123456";
String s = api2.sm3AndDetachedSign(orgData,pk, dn);
System.out.println("签名:"+s);
boolean ver = api2.sm3AndDetachedVerify( orgData,pk ,s);
System.out.println("验签:"+ver);
//
}
@Test
public void wuhan(){
// System.setProperty("com.sunyard.sydapi4j.debug", "true");
System.setProperty("com.sunyard.dnsort", "false");
String dn = "GN=enterprise,OU=SaaS,O=北京安证通信息科技股份有限公司/serialNumber=01,SN=1990480222222437600,CN=辽宁省鹏印刷有限公司@1990480222222437600";
String data = "123456";
SydApi4j api = (SydApi4j) new SydApi4j().connect("172.16.17.82", 8889, null, 1000);
String aa = "434E3DC1C9C4FECAA1C5F4D3A1CBA2D3D0CFDEB9ABCBBE40313939303438303232323232323433373630302C534E3D313939303438303232323232323433373630302C4F3DB1B1BEA9B0B2D6A4CDA8D0C5CFA2BFC6BCBCB9C9B7DDD3D0CFDEB9ABCBBE2F73657269616C4E756D6265723D30312C4F553D536161532C474E3D656E7465727072697365";
System.out.println(new String(Util.hexString2Bytes(aa)));
String bb = "474E3D656E74657270726973652C4F553D536161532C4F3DB1B1BEA9B0B2D6A4CDA8D0C5CFA2BFC6BCBCB9C9B7DDD3D0CFDEB9ABCBBE2F73657269616C4E756D6265723D30312C534E3D313939303438303232323232323433373630302C434E3DC1C9C4FECAA1C5F4D3A1CBA2D3D0CFDEB9ABCBBE4031393930343830323232323232343337363030";
System.out.println(new String(Util.hexString2Bytes(bb)));
byte[] sign = api.SYD_NakedSign( data.getBytes(), dn);
System.out.println("签名结果:"+Util.bytes2HexString(sign));
String s = api.detachedSign(1, data.getBytes(), dn);
System.out.println(s);
}
}

View File

@ -1,11 +1,11 @@
ip=172.16.17.161
port=8889
timeout=5000
#证书主题
certDn=019023EB0005
#证书主题或sn或pk
certDn=03420004EA1077E7D7CDA76A8470D96929866B18E57F72C12850C853904B4083656F5991EAB499F2DC32BB02BF35F8748FE7A69D76C5D08E6A23D1568344F09227C47A47
#验签数据或待解密数据
signorenData=oN039sEhy7bQVqRSLFet+qe7xxTKWENtPGG/bqthWbKDtkN6BSAi0/I1PhLlSVXFh3MnhQZNH4zyn/l0Nb1D5w==
#原始数据
orgData=123456
#交易类型 1-签名 2-验签 3-加密 4-解密 5-detach签名 6-detach验签 7-sn签名 8-sn验签 0 默认(签名验签+加密解密)
type=8
#交易类型 1-签名 2-验签 3-加密 4-解密 5-detach签名 6-detach验签 7-sn签名 8-sn验签 9-hash计算 0默认(签名验签+加密解密)
type=9