mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
support x,y for sm2
This commit is contained in:
@@ -2,13 +2,17 @@ package cn.hutool.crypto.test;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.crypto.BCUtil;
|
||||
import cn.hutool.crypto.SmUtil;
|
||||
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
|
||||
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
|
||||
import org.junit.Test;
|
||||
|
||||
public class BCUtilTest {
|
||||
|
||||
@Test
|
||||
public void decodeECPointTest(){
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 密钥生成来自:https://i.goto327.top/CryptTools/SM2.aspx?tdsourcetag=s_pctim_aiomsg
|
||||
*/
|
||||
@@ -17,7 +21,7 @@ public class BCUtilTest {
|
||||
String x = "706AD9DAA3E5CEAC3DA59F583429E8043BAFC576BE10092C4EA4D8E19846CA62";
|
||||
String y = "F7E938B02EED7280277493B8556E5B01CB436E018A562DFDC53342BF41FDF728";
|
||||
|
||||
final ECPublicKeyParameters keyParameters = BCUtil.toParams(x, y, SmUtil.CURVE, SmUtil.DOMAIN_PARAMS);
|
||||
final ECPublicKeyParameters keyParameters = BCUtil.toSm2Params(x, y);
|
||||
Assert.notNull(keyParameters);
|
||||
}
|
||||
|
||||
@@ -25,7 +29,7 @@ public class BCUtilTest {
|
||||
public void createECPrivateKeyParametersTest() {
|
||||
String privateKeyHex = "5F6CA5BB044C40ED2355F0372BF72A5B3AE6943712F9FDB7C1FFBAECC06F3829";
|
||||
|
||||
final ECPrivateKeyParameters keyParameters = BCUtil.toParams(privateKeyHex, SmUtil.DOMAIN_PARAMS);
|
||||
final ECPrivateKeyParameters keyParameters = BCUtil.toSm2Params(privateKeyHex);
|
||||
Assert.notNull(keyParameters);
|
||||
}
|
||||
}
|
||||
|
@@ -121,6 +121,17 @@ public class SM2Test {
|
||||
Assert.assertTrue(verify);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sm2SignAndVerifyHexTest() {
|
||||
String content = "我是Hanley.";
|
||||
|
||||
final SM2 sm2 = SmUtil.sm2();
|
||||
|
||||
String sign = sm2.signHex(HexUtil.encodeHexStr(content));
|
||||
boolean verify = sm2.verifyHex(HexUtil.encodeHexStr(content), sign);
|
||||
Assert.assertTrue(verify);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sm2SignAndVerifyUseKeyTest() {
|
||||
String content = "我是Hanley.";
|
||||
@@ -149,4 +160,20 @@ public class SM2Test {
|
||||
Assert.assertEquals(HexUtil.encodeHexStr(publicKey.getEncoded()), HexUtil.encodeHexStr(Hexdecode.getEncoded()));
|
||||
Assert.assertEquals(HexUtil.encodeHexStr(publicKey.getEncoded()), HexUtil.encodeHexStr(B64decode.getEncoded()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sm2WithPointTest(){
|
||||
String d = "FAB8BBE670FAE338C9E9382B9FB6485225C11A3ECB84C938F10F20A93B6215F0";
|
||||
String x = "9EF573019D9A03B16B0BE44FC8A5B4E8E098F56034C97B312282DD0B4810AFC3";
|
||||
String y = "CC759673ED0FC9B9DC7E6FA38F0E2B121E02654BF37EA6B63FAF2A0D6013EADF";
|
||||
|
||||
String data = "434477813974bf58f94bcf760833c2b40f77a5fc360485b0b9ed1bd9682edb45";
|
||||
String id = "31323334353637383132333435363738";
|
||||
|
||||
final SM2 sm2 = new SM2(d, x, y);
|
||||
|
||||
final String sign = sm2.signHex(data, id);
|
||||
|
||||
Assert.assertTrue(sm2.verifyHex(data, sign));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user