From 8f8c0f27dfe7a45728a58c04f2e29c7a07cffeb5 Mon Sep 17 00:00:00 2001 From: CaiHQ Date: Tue, 2 Nov 2021 17:45:08 +0800 Subject: [PATCH] fix BigInteger overflow --- src/main/java/org.zz/gmhelper/SM2Util.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org.zz/gmhelper/SM2Util.java b/src/main/java/org.zz/gmhelper/SM2Util.java index e308d6c..77ba837 100644 --- a/src/main/java/org.zz/gmhelper/SM2Util.java +++ b/src/main/java/org.zz/gmhelper/SM2Util.java @@ -379,8 +379,8 @@ public class SM2Util extends GMBaseUtil { } ASN1Encodable[] arr = new ASN1Encodable[4]; - arr[0] = new ASN1Integer(c1x); - arr[1] = new ASN1Integer(c1y); + arr[0] = new ASN1Integer(new BigInteger(1,c1x)); + arr[1] = new ASN1Integer(new BigInteger(1,c1y)); if (mode == Mode.C1C2C3) { arr[2] = new DEROctetString(c2); arr[3] = new DEROctetString(c3); @@ -414,6 +414,8 @@ public class SM2Util extends GMBaseUtil { byte[] c1y = ((ASN1Integer) as.getObjectAt(1)).getValue().toByteArray(); byte[] c3; byte[] c2; + c1x = fixToCurveLengthBytes(c1x); + c1y = fixToCurveLengthBytes(c1y); if (mode == Mode.C1C2C3) { c2 = ((DEROctetString) as.getObjectAt(2)).getOctets(); c3 = ((DEROctetString) as.getObjectAt(3)).getOctets();