aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorJ08nY2024-06-14 12:44:47 +0200
committerJ08nY2024-06-14 12:44:47 +0200
commit2ecf1379142f580730cfaf7ceaca18aeb7af9b40 (patch)
tree46ca5ed0ca131bd16e5bc73903f39c416fb255a6 /common
parent0bc459385a67f0a0f09abda7c1c768fc14e20a5f (diff)
downloadECTester-2ecf1379142f580730cfaf7ceaca18aeb7af9b40.tar.gz
ECTester-2ecf1379142f580730cfaf7ceaca18aeb7af9b40.tar.zst
ECTester-2ecf1379142f580730cfaf7ceaca18aeb7af9b40.zip
Diffstat (limited to 'common')
-rw-r--r--common/src/main/java/cz/crcs/ectester/common/util/ECUtil.java17
1 files changed, 12 insertions, 5 deletions
diff --git a/common/src/main/java/cz/crcs/ectester/common/util/ECUtil.java b/common/src/main/java/cz/crcs/ectester/common/util/ECUtil.java
index 54c5131..907d75f 100644
--- a/common/src/main/java/cz/crcs/ectester/common/util/ECUtil.java
+++ b/common/src/main/java/cz/crcs/ectester/common/util/ECUtil.java
@@ -3,6 +3,9 @@ package cz.crcs.ectester.common.util;
import cz.crcs.ectester.common.ec.*;
import cz.crcs.ectester.data.EC_Store;
import org.bouncycastle.asn1.ASN1OctetString;
+import org.bouncycastle.asn1.ASN1Integer;
+import org.bouncycastle.asn1.ASN1Primitive;
+import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
import org.bouncycastle.crypto.digests.SHA1Digest;
import org.bouncycastle.crypto.signers.PlainDSAEncoding;
@@ -371,14 +374,18 @@ public class ECUtil {
}
// Parse signature
- BigInteger[] sigPair;
+ BigInteger r;
+ BigInteger s;
if (sigType.contains("CVC") || sigType.contains("PLAIN")) {
- sigPair = PlainDSAEncoding.INSTANCE.decode(n, signature);
+ BigInteger[] sigPair = PlainDSAEncoding.INSTANCE.decode(n, signature);
+ r = sigPair[0];
+ s = sigPair[1];
} else {
- sigPair = StandardDSAEncoding.INSTANCE.decode(n, signature);
+ ASN1Sequence seq = (ASN1Sequence)ASN1Primitive.fromByteArray(signature);
+ r = ((ASN1Integer)seq.getObjectAt(0)).getValue();
+ s = ((ASN1Integer)seq.getObjectAt(1)).getValue();
}
- BigInteger r = sigPair[0];
- BigInteger s = sigPair[1];
+
BigInteger rd = privkey.multiply(r).mod(n);
BigInteger hrd = hashInt.add(rd).mod(n);