sydapi/src/test/java/sample/SampleICBC.java

120 lines
3.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package sample;
import com.sunyard.RetWrap;
import com.sunyard.SydApi;
import com.sunyard.proto.Util;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import racal.sunyard.main.SydApi4j;
import java.util.HashMap;
/**
* @AuthorCheney
* @Date2024/8/09 16:24
*/
public class SampleICBC {
private SydApi4j api;
final String SM2dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
byte[] orgData = "12345678123456".getBytes();
@Before
public void before() {
// 通过设置debug的属性开启debug如果不设置则默认不打开
System.setProperty("com.sunyard.sydapi4j.debug", "true");
//通过设置不校验证书是否反序
System.setProperty("com.sunyard.dnsort", "false");
api = (SydApi4j) new SydApi4j().connect("172.16.17.232", 8889, null, 1000);
}
@After
public void after() {
try {
this.api.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
//证书导入
public void importCert(){
String cert = "-----BEGIN CERTIFICATE-----\n" +
"MIICMjCCAdWgAwIBAgIGAYqHSuwHMAwGCCqBHM9VAYN1BQAwSzELMAkGA1UEBhMC\n" +
"Q04xDjAMBgNVBAoTBUdNU1NMMRAwDgYDVQQLEwdQS0kvU00yMRowGAYDVQQDExFN\n" +
"aWRkbGVDQSBmb3IgVGVzdDAiGA8yMDIzMDkxMTE2MDAwMFoYDzIwMjQwOTExMTYw\n" +
"MDAwWjBgMQswCQYDVQQGDAJDTjELMAkGA1UECAwCemoxCzAJBgNVBAcMAmh6MRAw\n" +
"DgYDVQQKDAdzdW55YXJkMRAwDgYDVQQLDAd6eWhUZXN0MRMwEQYDVQQDDAp6eWhU\n" +
"ZXN0U00yMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEYB3P271TUdDKfUr0VbkL\n" +
"v+N6QlrYcfAqbqjgqHaa3Xt5/8n3rHXp5ILj8QdU1pCFOF6xaaCwg1L7oR90MHZe\n" +
"GKOBiTCBhjAbBgNVHSMEFDASgBD5f1W0J5QzYqZWym/MXRr/MBkGA1UdDgQSBBAK\n" +
"g03SZSfU07aY4XNDfVIOMDEGCCsGAQUFBwEBBCUwIzAhBggrBgEFBQcwAYYVaHR0\n" +
"cHM6Ly9vY3NwLmdtc3NsLmNuMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgDAMAwG\n" +
"CCqBHM9VAYN1BQADSQAwRgIhAK1lDGV1UtbYz5Hf8DCpq8UySCtu5dguh/eZsc4c\n" +
"V9PtAiEA5SO99BSunZMtrpHFJC1XbEQ5Xp0zIJQvzjRqZwfkyrw=\n" +
"-----END CERTIFICATE-----\n";
String dn = api.importCert(cert);
System.out.println("返回证书主题:"+dn);
}
@Test
//sm2算法 attach签名验签
public void sm2signAtt(){
String attachedSign = api.attachedSign(orgData, SM2dn);
System.out.println("attach签名"+attachedSign);
boolean attachedVerify = api.attachedVerify(attachedSign);
System.out.println("attach验签"+attachedVerify);
}
@Test
//sm2数字信封加密解密
public void sm2gen(){
String ivHex = "31323334353637383132333435363738";
/**
* SM2数字信封生成
* @param sm2Dn 证书DN
* @param IV iv
* @param orgData 原始数据
* @param roundmod 轮模式 0 ECB 1 CBC
* @return 加密后的数据
*/
RetWrap genByDn = api.generateDEByDnICBC(SM2dn, ivHex,orgData,1);
String cipherKey = (String) genByDn.get(SydApi.RET_CIPHER_KEY);
System.out.println("SM2数字信封: " +cipherKey);
/**
* SM2数字信封解密
* @param sm2Dn 证书DN
* @param IV iv
* @param cipherKey 数字信封
* @param roundmod 轮模式 0 ECB 1 CBC
* @return 加密后的数据
*/
RetWrap denSM2 = api.decryptDEByDNICBC( SM2dn,ivHex, cipherKey,1);
byte[] oData = (byte[]) denSM2.get("oData");
System.out.println("SM2信封解密"+ new String(oData));
}
@Test
public void getTIme(){
HashMap<String, String> certTime = api.getCertTime(SM2dn);
System.out.println(certTime.get("after"));
System.out.println(certTime.get("before"));
Util.bytes2HexString("aa".getBytes());
}
}