From 988e59eafd4dff07ae28fb5ac35418371e9b9066 Mon Sep 17 00:00:00 2001 From: yulin Date: Tue, 20 Dec 2022 12:53:02 +0800 Subject: [PATCH] =?UTF-8?q?feature:=20=E4=BF=AE=E5=A4=8Dsm2=E6=9E=84?= =?UTF-8?q?=E9=80=A0=E6=96=B9=E6=B3=95NullPointerException?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes https://gitee.com/dromara/hutool/issues/I66OCK --- .../src/main/java/cn/hutool/crypto/ECKeyUtil.java | 3 +++ .../java/cn/hutool/crypto/asymmetric/SM2Test.java | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/hutool-crypto/src/main/java/cn/hutool/crypto/ECKeyUtil.java b/hutool-crypto/src/main/java/cn/hutool/crypto/ECKeyUtil.java index 266f4ab4f3..29ef1a6ed0 100644 --- a/hutool-crypto/src/main/java/cn/hutool/crypto/ECKeyUtil.java +++ b/hutool-crypto/src/main/java/cn/hutool/crypto/ECKeyUtil.java @@ -244,6 +244,9 @@ public static ECPrivateKeyParameters toSm2PrivateParams(BigInteger d) { * @return ECPrivateKeyParameters */ public static ECPrivateKeyParameters toPrivateParams(String d, ECDomainParameters domainParameters) { + if (null == d) { + return null; + } return toPrivateParams(BigIntegers.fromUnsignedByteArray(SecureUtil.decode(d)), domainParameters); } diff --git a/hutool-crypto/src/test/java/cn/hutool/crypto/asymmetric/SM2Test.java b/hutool-crypto/src/test/java/cn/hutool/crypto/asymmetric/SM2Test.java index 60eea17d55..73a88e6351 100644 --- a/hutool-crypto/src/test/java/cn/hutool/crypto/asymmetric/SM2Test.java +++ b/hutool-crypto/src/test/java/cn/hutool/crypto/asymmetric/SM2Test.java @@ -219,6 +219,17 @@ public void sm2WithPointTest() { Assert.assertTrue(sm2.verifyHex(data, sign)); } + @Test + public void sm2WithNullPriPointTest() { + String x = "9EF573019D9A03B16B0BE44FC8A5B4E8E098F56034C97B312282DD0B4810AFC3"; + String y = "CC759673ED0FC9B9DC7E6FA38F0E2B121E02654BF37EA6B63FAF2A0D6013EADF"; + String q = "04" + x + y; + final SM2 sm1 = new SM2(null, x, y); + final SM2 sm2 = new SM2(null, q); + Assert.assertNotNull(sm1); + Assert.assertNotNull(sm2); + } + @Test public void sm2PlainWithPointTest() { // 测试地址:https://i.goto327.top/CryptTools/SM2.aspx?tdsourcetag=s_pctim_aiomsg