171 lines
5.3 KiB
Java
171 lines
5.3 KiB
Java
package sample;
|
|
|
|
import com.sunyard.RetWrap;
|
|
import com.sunyard.SydApi;
|
|
import com.sunyard.proto.Util;
|
|
import org.junit.After;
|
|
import org.junit.Assert;
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
import racal.sunyard.main.SydApi4j;
|
|
|
|
public class Shangqing {
|
|
|
|
private SydApi4j api;
|
|
|
|
// 测试数据
|
|
private String uid = "8012";
|
|
private String dn = "C=CN,ST=ZJ,L=HZ,O=sunyard,OU=test1,CN=test1";
|
|
private String SM2dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
|
|
|
|
|
private String RSA ="C=cn,O=CFCA TEST CA,OU=NCS2,OU=Enterprises,CN=041@Z402451000010@ShanDong@00000001";
|
|
private byte[] orgData = new byte[10];
|
|
|
|
@Before
|
|
public void before() {
|
|
// 通过设置debug的属性开启debug,如果不设置则默认不打开
|
|
System.setProperty("com.sunyard.sydapi4j.debug", "true");
|
|
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
|
|
public void after() {
|
|
try {
|
|
this.api.disconnect();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 裸签示例
|
|
* 1.10 SM2GetPublicKeyC
|
|
* 1.1.3 SYD_SM2_Sign_HA
|
|
* 1.2.3 SYD_SM2_Verify_HA
|
|
*/
|
|
@Test
|
|
public void sv(){
|
|
|
|
String pk = api.SM2GetPublicKeyC(uid, 0 );
|
|
|
|
String sign2 = api.SYD_SM2_Sign_HA(
|
|
uid,
|
|
SydApi.DATA_HASH,
|
|
Util.hexString2Bytes(pk),
|
|
orgData
|
|
);
|
|
System.out.print("\n\n----- SM2 算法签名 结果: ");
|
|
System.out.println( sign2 );
|
|
|
|
System.out.println( api.SYD_SM2_Verify_HA(
|
|
SydApi.DATA_HASH,
|
|
Util.hexString2Bytes(pk),
|
|
orgData ,
|
|
sign2
|
|
) );
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* 数字信封示例
|
|
* 1.3 generateDEByDn
|
|
* 1.4 decryptDEByDN
|
|
*/
|
|
@Test
|
|
public void dm(){
|
|
// // 生成数字信封
|
|
RetWrap retWrap = api.generateDEByDn(SM2dn, orgData );
|
|
byte[] cipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY);
|
|
System.out.println("数字信封: " + new String(cipherKey));
|
|
|
|
// 解密数字信封
|
|
RetWrap retWrap1 = api.decryptDEByDN(SM2dn, cipherKey);
|
|
byte[] oData = (byte[]) retWrap1.get("oData");
|
|
//
|
|
//
|
|
// Assert.assertArrayEquals( oData, orgData );
|
|
|
|
// String s = api.GenRandom(8);
|
|
// 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);
|
|
|
|
//
|
|
}
|
|
|
|
@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);
|
|
|
|
}
|
|
|
|
|
|
}
|