完善验证测试程序

This commit is contained in:
yihzhou 2024-06-20 16:09:19 +08:00
parent b37b962dd5
commit e866887b3a
4 changed files with 97 additions and 42 deletions

View File

@ -43,9 +43,22 @@ public class TestDemo {
public static Boolean detachSignVer(SydApi4j api, String orgData, String sign) {
boolean signVerify = api.detachedVerifyAll(2, orgData.getBytes(), sign);
System.out.println("detach验签"+ signVerify);
return Boolean.valueOf(signVerify);
return signVerify;
}
public static String snSign(SydApi4j api, String sn, String orgData) {
String sign = api.SM2SignCustomized(sn,orgData.getBytes());
System.out.println("sn签名结果"+ sign);
return sign;
}
public static Boolean snSignVer(SydApi4j api, String sn,String orgData, String sign) {
boolean signVerify = api.SM2VerifyCustomized(sn, orgData.getBytes(), sign);
System.out.println("sn验签"+ signVerify);
return signVerify;
}
public static void testAll(SydApi4j api, String certDn, String orgData) {
byte[] nakedSign = api.SYD_NakedSignAll(2, orgData.getBytes(), certDn);
System.out.println("签名数据:"+ Util.bytes2HexString(nakedSign));
@ -61,6 +74,7 @@ public class TestDemo {
System.out.println("detach签名结果"+ sign);
boolean signVerify = api.detachedVerifyAll(2, orgData.getBytes(), sign);
System.out.println("detach验签"+ signVerify);
}
public static void main(String[] args) throws InterruptedException {
@ -100,6 +114,12 @@ public class TestDemo {
case 6:
detachSignVer(api, orgData, signorenData);
break;
case 7:
snSign(api, certDn, orgData);
break;
case 8:
snSignVer(api, certDn,orgData, signorenData);
break;
case 0:
testAll(api, certDn, orgData);
break;

View File

@ -26,7 +26,10 @@ public class Shangqing {
public void before() {
// 通过设置debug的属性开启debug如果不设置则默认不打开
System.setProperty("com.sunyard.sydapi4j.debug", "true");
api = (SydApi4j) new SydApi4j().connect("172.16.17.196", 8889, null, 1000);
// api = (SydApi4j) new SydApi4j().connect("172.16.17.161", 8889, null, 1000);
api = (SydApi4j) new SydApi4j().connect("192.168.0.100", 8889, null, 1000);
}
@After
@ -92,5 +95,32 @@ public class Shangqing {
// System.out.println(s);
}
@Test
public void test80(){
System.out.print("\n\n----- SM2 算法签名 Customized");
String sm2sign = null;
sm2sign = api.SM2SignCustomized(
"019023EB0005", orgData
);
System.out.print("\n\n----- SM2 算法签名 结果: ");
System.out.println(sm2sign);
// String sm2sign = "m/7+qbOR2GKiCsZd6/nu9uwX4nOXP23DTd7hvO0mZAT2trr1mTjry5quQ76Me4utalD/HxfBmjV4bY+rGQt5Xg==";
System.out.println("\n\n----- SM2 算法验签 Customized -----");
boolean ver = false;
ver = api.SM2VerifyCustomized("019023EB0005", orgData, sm2sign);
System.out.println(ver);
//
}
}

View File

@ -1,52 +1,57 @@
package sample;
import com.sunyard.RetWrap;
import com.sunyard.SydApiException;
import com.sunyard.cert.X509;
import com.sunyard.proto.Util;
import com.sunyard.util.ASN1Util;
import org.junit.Test;
import racal.sunyard.main.SydApi4j;
import racal.sunyard.main.SydApiBuilder;
public class sample4nx {
public static void main(String[] args) {
//打印调试日志
System.setProperty("com.sunyard.sydapi4j.debug", "true");
import java.io.IOException;
public class sample4nx {
@Test
public void nx() throws IOException {
//设置连接
SydApiBuilder builder = new SydApiBuilder().setIp("192.168.0.156");
System.setProperty("com.sunyard.sydapi4j.debug", "true");
SydApiBuilder builder = new SydApiBuilder().setIp("172.16.18.34");
SydApi4j api = (SydApi4j) builder.build();
String cert = "-----BEGIN CERTIFICATE-----\n" +
"MIIDcTCCAlmgAwIBAgIFEEcHQmgwDQYJKoZIhvcNAQEFBQAwWDELMAkGA1UEBhMC\n" +
"Q04xMDAuBgNVBAoTJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhv\n" +
"cml0eTEXMBUGA1UEAxMOQ0ZDQSBURVNUIE9DQTEwHhcNMjExMjEwMDgyOTA0WhcN\n" +
"MjYxMjEwMDgyOTA0WjBoMQswCQYDVQQGEwJDTjESMBAGA1UEChMJQ0ZDQSBPQ0Ex\n" +
"MQ8wDQYDVQQLEwZUUEMtUzMxGTAXBgNVBAsTEE9yZ2FuaXphdGlvbmFsLTExGTAX\n" +
"BgNVBAMTEEFSQ1U1MjkxMDAwMDA3MDEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ\n" +
"AoGBAL+kPIjcWzRwQE6Q3ydtQsDaJGMxv0At2WrIQqb9ONEvqMbQZCd69qfBvsRj\n" +
"QI/UlG3btk6P/ZBGkNc99fX43VMqPtIlVjgRozLQcQJPFbiU5cT5PPqnrxo652RU\n" +
"KNFQhwmanPjAjmZd9woc2l0BnfF92QFDPDRprS1fWLFbKPTvAgMBAAGjgbUwgbIw\n" +
"HwYDVR0jBBgwFoAUz3CdYeudfC6498sCQPcJnf4zdIAwOQYDVR0fBDIwMDAuoCyg\n" +
"KoYoaHR0cDovL3VjcmwuY2ZjYS5jb20uY24vUlNBL2NybDgzMjA1LmNybDALBgNV\n" +
"HQ8EBAMCA+gwHQYDVR0OBBYEFGey5r5CdOUDaW3KRdZ0xg19n+dhMCgGA1UdJQQh\n" +
"MB8GCCsGAQUFBwMCBggrBgEFBQcDBAYJKoZIhvcvAQEFMA0GCSqGSIb3DQEBBQUA\n" +
"A4IBAQChyjTNJUkdspDa/6sPYuZdE0/yPFcbd0ag4wLWrSCiRyV0J5BhJPIApdRT\n" +
"3kCIem2jRbq3H/W1vUYi1JeGHcrvTOOMQb9yfgCzfQLvAdv0at4zupy1uXL6uE1S\n" +
"WL1v6Vub630tJ0A45KsVESB5Fb+UZ/cvdJIMHjcYYzPw+HHH6q9e3R0QUMz3Mxpl\n" +
"DCg66HQBL/jKSl/w13QTdRPL9dSDBtpzDqZH5JQK4rbZSdFnbC2TQs+ljsKd5TCg\n" +
"52HcC92peeCXCEsb3Zw0js5nTbX+1da8FgqDQTeKIItgXBvQIRJUeelKga6opRNM\n" +
"QM0Egoc/dBdM45jVnxzpreRKzsDQ\n" +
"-----END CERTIFICATE-----";
String odata = "<?xml version=\"1.0\" encoding=\"utf-8\"?><SignData><TradeType name=\"银行账号转账\" authLevel=\"0\">BankAcctTransfer</TradeType><Timestamp>1710469760912</Timestamp><Fields><AcctType>INNERDEBIT</AcctType><PayerSubAcSeq></PayerSubAcSeq><PayerBankAcType>96</PayerBankAcType><PayerAcNo>6229539600100010640</PayerAcNo><PayerAcName>王二类</PayerAcName><PayerCurrency>156</PayerCurrency><PayeeAcNo name=\"收款人账号:\">6217788308301020599</PayeeAcNo><PayeeAcName name=\"收款人名称:\">王二类</PayeeAcName><Amount name=\"转账金额:\">1</Amount><PayeeBankCode>402/402361018886</PayeeBankCode><PayeeBankName>安徽农金</PayeeBankName><ProvinceCode></ProvinceCode><ProvinceName></ProvinceName><CityCode></CityCode><CityName></CityName><UnionDeptId></UnionDeptId><UnionDeptName></UnionDeptName><TransType>0</TransType><Remark></Remark><Fee>0.00</Fee><CRFlag>1</CRFlag><TransTypeFlag>0</TransTypeFlag><TrsRouteType>0</TrsRouteType><AddPayeeBookFlag>1</AddPayeeBookFlag></Fields></SignData>";
String signRsa = "0564FC7C0E3FDAF225295BBD0E32BF16081D561B4C262B5E095E04E828DC8AAC71723F849B615A41AA012FB9B532017D382919A498A93EAD35CB3AA80BA29510C174BF61B6E5DCEA78DF9AF7C3B80513BA82F82030347F463C03826C90CC9C207012BD456C21D9DF4E2C79EE042B8BE229EA3C40F232AF661BE63E61A07DC2A3";
String data = "eyJzZW5kb3JnYW5pemF0aW9uIjoiMDAwMCIsInNlbmRpZGVudGlmaWNhdGlvbiI6IkRFTVAiLCJyZWN2b3JnYW5pemF0aW9uIjoiMDAwMCIsInJlY3ZpZGVudGlmaWNhdGlvbiI6IkRFTVAiLCJjZXJ0Y2hndHlwZSI6IkNDMDAifQ==";
String sign = "MIIDyAYKKoEcz1UGAQQCAqCCA7gwggO0AgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICuTCCArUwggJZoAMCAQICBSBUdABBMAwGCCqBHM9VAYN1BQAwXTELMAkGA1UEBhMCQ04xMDAuBgNVBAoMJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEcMBoGA1UEAwwTQ0ZDQSBURVNUIFNNMiBPQ0ExMTAeFw0yMjA0MTQwMTUwNDhaFw0yNDA3MzExNTU5NTlaMGsxCzAJBgNVBAYTAmNuMRUwEwYDVQQKDAxDRkNBIFRFU1QgQ0ExDTALBgNVBAsMBERFTVAxFDASBgNVBAsMC0VudGVycHJpc2VzMSAwHgYDVQQDDBcwNDFAWjAwMDBAREVNUEAwMDAwMDA0OTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABLKA4YpNpmq+f156Bxq8573+GWfvyFPyfpbWbOr/MROM0bM+Zzu35ygRBGY170Lb50F4EOhkbi/C91I1T7POecCjgfUwgfIwHwYDVR0jBBgwFoAUvqZ+TT18j6BV5sEvCS4sIEOzQn8wSAYDVR0gBEEwPzA9BghggRyG7yoBAjAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE1Lmh0bTA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vMjEwLjc0LjQyLjMvT0NBMTEvU00yL2NybDE4MDcwLmNybDALBgNVHQ8EBAMCA+gwHQYDVR0OBBYEFL6S9JFZX4aCWpd10bDHk43aXmXYMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAMBggqgRzPVQGDdQUAA0gAMEUCIQDlc0JB0kTQb+seK7XkBovtdode7qChIkTFy49HGl5NpwIgVbklyQWaJ2EX6ZX+cl2w9B6AczrDPwOK9ZScVXj/y1AxgdMwgdACAQEwZjBdMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRwwGgYDVQQDDBNDRkNBIFRFU1QgU00yIE9DQTExAgUgVHQAQTAMBggqgRzPVQGDEQUAMA0GCSqBHM9VAYItAQUABEYwRAIgdSjzv1eik3TCLw2KU+QmpzG5AIgy5iwS6VGsQjRtEi0CIAIUD4WTeYoypK7eYsw4b0pSscv07Z/qlYuEWMtB9n04";
// X509 x509 = api.detachedVerifyAndGetX509(1, data.getBytes(), sign);
// System.out.println(x509.getCert());
try {
String rsaDn = "C=CN,O=CFCA OCA1,OU=TPC-S3,OU=Organizational-1,CN=ARCU529100000701";
boolean nakedVerify2 = api.SYD_NakedVerifyAll4NX(cert,2,odata.getBytes(), Util.hexString2Bytes(signRsa),rsaDn);
System.out.println("RSA数据验签"+nakedVerify2 );
//解析p7签名内容从detach签名中获取证书段
RetWrap retWrap = ASN1Util.takeOutOriginDataFromPKCS7Sign(sign);
String cert = (String) retWrap.get("cert");
System.out.println(cert);
} catch (SydApiException e) {
e.printStackTrace();
//完善证书为标准格式具有头尾
String pemCert;
if(cert.contains("-----BEGIN CERTIFICATE-----")){
pemCert =cert;
}else {
String cert_begin = "-----BEGIN CERTIFICATE-----\n";
String end_cert = "\n-----END CERTIFICATE-----";
pemCert = cert_begin + cert + end_cert;
}
//证书导入设备待验签使用
// api.importCert(pemCert.getBytes(),null);
//detach验签
boolean ver = api.detachedVerifyAll(4,data.getBytes(),sign);
System.out.println("验签结果:"+ver);
}
}

View File

@ -1,11 +1,11 @@
ip=172.16.18.34
ip=172.16.17.161
port=8889
timeout=5000
#证书主题
certDn=C=CN,ST=zj,L=hz,O=sunyard,CN=welkin
certDn=019023EB0005
#验签数据或待解密数据
signorenData=XXXX
signorenData=oN039sEhy7bQVqRSLFet+qe7xxTKWENtPGG/bqthWbKDtkN6BSAi0/I1PhLlSVXFh3MnhQZNH4zyn/l0Nb1D5w==
#原始数据
orgData=123456
#交易类型 1-签名 2-验签 3-加密 4-解密 0 默认(签名验签+加密解密)
type=0
#交易类型 1-签名 2-验签 3-加密 4-解密 5-detach签名 6-detach验签 7-sn签名 8-sn验签 0 默认(签名验签+加密解密)
type=8