aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs
diff options
context:
space:
mode:
authorJ08nY2019-03-28 11:10:14 +0100
committerJ08nY2019-03-28 11:10:14 +0100
commit6c4e5ccd3faeca4807937f8daeb5d8a489fa34c7 (patch)
tree4aa2f6fc0b3950e17dc6349d95cc68684a12b0ca /src/cz/crcs
parentc56c88f4183703d6b91b05436cc73ade68d962db (diff)
downloadECTester-6c4e5ccd3faeca4807937f8daeb5d8a489fa34c7.tar.gz
ECTester-6c4e5ccd3faeca4807937f8daeb5d8a489fa34c7.tar.zst
ECTester-6c4e5ccd3faeca4807937f8daeb5d8a489fa34c7.zip
Diffstat (limited to 'src/cz/crcs')
-rw-r--r--src/cz/crcs/ectester/common/util/ECUtil.java17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/cz/crcs/ectester/common/util/ECUtil.java b/src/cz/crcs/ectester/common/util/ECUtil.java
index d5e8006..ce50c21 100644
--- a/src/cz/crcs/ectester/common/util/ECUtil.java
+++ b/src/cz/crcs/ectester/common/util/ECUtil.java
@@ -3,12 +3,10 @@ package cz.crcs.ectester.common.util;
import cz.crcs.ectester.applet.EC_Consts;
import cz.crcs.ectester.common.ec.*;
import cz.crcs.ectester.data.EC_Store;
-import org.bouncycastle.asn1.ASN1Integer;
-import org.bouncycastle.asn1.ASN1StreamParser;
-import org.bouncycastle.asn1.DERSequence;
-import org.bouncycastle.asn1.DERSequenceParser;
+import org.bouncycastle.asn1.*;
import org.bouncycastle.crypto.digests.SHA1Digest;
+import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigInteger;
@@ -347,8 +345,11 @@ public class ECUtil {
return new KeyPair(pubkey, privkey);
}
- public static byte[] toDERSignature(byte[] r, byte[] s) {
- return ByteUtil.concatenate(new byte[]{0x30, (byte) (r.length + s.length + 4), 0x02, (byte) r.length}, r, new byte[]{0x02, (byte) s.length}, s);
+ public static byte[] toDERSignature(byte[] r, byte[] s) throws IOException {
+ ASN1Integer rInt = new ASN1Integer(r);
+ ASN1Integer sInt = new ASN1Integer(s);
+ DERSequence seq = new DERSequence(new ASN1Encodable[]{rInt, sInt});
+ return seq.getEncoded();
}
public static BigInteger[] fromDERSignature(byte[] signature) throws IOException {
@@ -385,8 +386,8 @@ public class ECUtil {
BigInteger rd = privkey.multiply(r).mod(params.getOrder());
BigInteger hrd = hashInt.add(rd).mod(params.getOrder());
return s.modInverse(params.getOrder()).multiply(hrd).mod(params.getOrder());
- } catch (NoSuchAlgorithmException | IOException nsae) {
- nsae.printStackTrace();
+ } catch (NoSuchAlgorithmException | IOException | ArithmeticException ex) {
+ ex.printStackTrace();
return null;
}
}