List of usage examples for org.bouncycastle.crypto.signers ECDSASigner verifySignature
public boolean verifySignature(byte[] message, BigInteger r, BigInteger s)
From source file:ACNS.thresholdDSA.Util.java
License:Apache License
public static boolean verifySignature(byte[] message, BigInteger r, BigInteger s, byte[] pub, ECDomainParameters Curve) {//ww w . j av a 2s .c o m ECDSASigner signer = new ECDSASigner(); ECPublicKeyParameters params = new ECPublicKeyParameters(Curve.getCurve().decodePoint(pub), Curve); signer.init(false, params); try { return signer.verifySignature(message, r, s); } catch (NullPointerException e) { // Bouncy Castle contains a bug that can cause NPEs given specially // crafted signatures. Those signatures // are inherently invalid/attack sigs so we just fail them here // rather than crash the thread. System.out.println("Caught NPE inside bouncy castle"); e.printStackTrace(); return false; } }
From source file:com.aaasec.sigserv.cscommon.xmldsig.XMLSign.java
License:EUPL
public static boolean ecdsaVerifyDigest(byte[] digest, EcdsaSigValue signature, PublicKey pubKey) { try {//from w ww . jav a 2s . c om ECDSASigner ecdsa = new ECDSASigner(); CipherParameters param = ECUtil.generatePublicKeyParameter(pubKey); ecdsa.init(false, param); EcdsaSigValue sigVal = EcdsaSigValue.getInstance(signature); return ecdsa.verifySignature(digest, sigVal.getR(), sigVal.getS()); } catch (Exception ex) { Logger.getLogger(XMLSign.class.getName()).log(Level.SEVERE, null, ex); } return false; }
From source file:com.bitsofproof.supernode.api.ECKeyPair.java
License:Apache License
public static boolean verify(byte[] hash, byte[] signature, byte[] pub) { ASN1InputStream asn1 = new ASN1InputStream(signature); try {// w w w.j a va2 s . com ECDSASigner signer = new ECDSASigner(); signer.init(false, new ECPublicKeyParameters(curve.getCurve().decodePoint(pub), domain)); DLSequence seq = (DLSequence) asn1.readObject(); BigInteger r = ((DERInteger) seq.getObjectAt(0)).getPositiveValue(); BigInteger s = ((DERInteger) seq.getObjectAt(1)).getPositiveValue(); return signer.verifySignature(hash, r, s); } catch (Exception e) { // threat format errors as invalid signatures return false; } finally { try { asn1.close(); } catch (IOException e) { } } }
From source file:com.DSC.crypto.ECDSA.java
License:Open Source License
/** * Verify the data, return true if the signature is valid, false otherwise * @param pubKey/*from w w w .jav a 2s . c o m*/ * @param data * @param signature * @return */ private static boolean verify(CipherParameters pubKey, byte[] data, BigInteger[] signature) { ECDSASigner ecdsa = new ECDSASigner(); ecdsa.init(false, pubKey); return ecdsa.verifySignature(data, signature[0], signature[1]); }
From source file:com.github.horrorho.inflatabledonkey.crypto.ec.ECCurvePoint.java
License:Open Source License
public boolean verifySignature(byte[] message, BigInteger r, BigInteger s) { ECDomainParameters ecDomainParameters = ECAssistant.ecDomainParametersFrom(x9ECParameters); ECPublicKeyParameters ecPublicKeyParameters = new ECPublicKeyParameters(Q, ecDomainParameters); ECDSASigner signer = new ECDSASigner(); signer.init(false, ecPublicKeyParameters); return signer.verifySignature(message, r, s); }
From source file:com.github.horrorho.inflatabledonkey.crypto.eckey.DefaultECPublicKey.java
License:Open Source License
@Override public boolean verifySignature(byte[] message, BigInteger r, BigInteger s) { ECDomainParameters ecDomainParameters = ECAssistant.ecDomainParametersFrom(x9ECParameters); ECPublicKeyParameters ecPublicKeyParameters = new ECPublicKeyParameters(Q, ecDomainParameters); ECDSASigner signer = new ECDSASigner(); signer.init(false, ecPublicKeyParameters); return signer.verifySignature(message, r, s); }
From source file:com.google.bitcoin.core.ECKey.java
License:Apache License
/** * <p>Verifies the given ECDSA signature against the message bytes using the public key bytes.</p> * /*w ww . j a v a 2 s . co m*/ * <p>When using native ECDSA verification, data must be 32 bytes, and no element may be * larger than 520 bytes.</p> * * @param data Hash of the data to verify. * @param signature ASN.1 encoded signature. * @param pub The public key bytes to use. */ public static boolean verify(byte[] data, ECDSASignature signature, byte[] pub) { if (FAKE_SIGNATURES) return true; if (NativeSecp256k1.enabled) return NativeSecp256k1.verify(data, signature.encodeToDER(), pub); ECDSASigner signer = new ECDSASigner(); ECPublicKeyParameters params = new ECPublicKeyParameters(CURVE.getCurve().decodePoint(pub), CURVE); signer.init(false, params); try { return signer.verifySignature(data, signature.r, signature.s); } catch (NullPointerException e) { // Bouncy Castle contains a bug that can cause NPEs given specially crafted signatures. Those signatures // are inherently invalid/attack sigs so we just fail them here rather than crash the thread. log.error("Caught NPE inside bouncy castle"); e.printStackTrace(); return false; } }
From source file:COSE.SignCommon.java
boolean validateSignature(byte[] rgbToBeSigned, byte[] rgbSignature, CipherParameters key) throws CoseException { AlgorithmID alg = AlgorithmID.FromCBOR(findAttribute(HeaderKeys.Algorithm)); Digest digest;/*from ww w .j a v a 2 s . c o m*/ switch (alg) { case ECDSA_256: digest = new SHA256Digest(); break; case ECDSA_384: digest = new SHA384Digest(); break; case ECDSA_512: digest = new SHA512Digest(); break; default: throw new CoseException("Unsupported algorithm specified"); } switch (alg) { case ECDSA_256: case ECDSA_384: case ECDSA_512: { byte[] rgbR = new byte[rgbSignature.length / 2]; byte[] rgbS = new byte[rgbSignature.length / 2]; System.arraycopy(rgbSignature, 0, rgbR, 0, rgbR.length); System.arraycopy(rgbSignature, rgbR.length, rgbS, 0, rgbR.length); digest.update(rgbToBeSigned, 0, rgbToBeSigned.length); byte[] rgbDigest = new byte[digest.getDigestSize()]; digest.doFinal(rgbDigest, 0); ECDSASigner ecdsa = new ECDSASigner(); ecdsa.init(false, key); return ecdsa.verifySignature(rgbDigest, new BigInteger(1, rgbR), new BigInteger(1, rgbS)); } default: throw new CoseException("Internal error"); } }
From source file:COSE.SignCommon.java
boolean validateSignature(byte[] rgbToBeSigned, byte[] rgbSignature, OneKey cnKey) throws CoseException { AlgorithmID alg = AlgorithmID.FromCBOR(findAttribute(HeaderKeys.Algorithm)); Digest digest;/*w w w . jav a 2 s . co m*/ switch (alg) { case ECDSA_256: digest = new SHA256Digest(); break; case ECDSA_384: digest = new SHA384Digest(); break; case ECDSA_512: digest = new SHA512Digest(); break; default: throw new CoseException("Unsupported algorithm specified"); } switch (alg) { case ECDSA_256: case ECDSA_384: case ECDSA_512: { byte[] rgbR = new byte[rgbSignature.length / 2]; byte[] rgbS = new byte[rgbSignature.length / 2]; System.arraycopy(rgbSignature, 0, rgbR, 0, rgbR.length); System.arraycopy(rgbSignature, rgbR.length, rgbS, 0, rgbR.length); digest.update(rgbToBeSigned, 0, rgbToBeSigned.length); byte[] rgbDigest = new byte[digest.getDigestSize()]; digest.doFinal(rgbDigest, 0); X9ECParameters p = cnKey.GetCurve(); ECDomainParameters parameters = new ECDomainParameters(p.getCurve(), p.getG(), p.getN(), p.getH()); BigInteger bnX = new BigInteger(1, cnKey.get(KeyKeys.EC2_X).GetByteString()); ECPoint point = p.getCurve().createPoint(bnX, new BigInteger(1, cnKey.get(KeyKeys.EC2_Y).GetByteString())); ECPublicKeyParameters pubKey = new ECPublicKeyParameters(point, parameters); ECDSASigner ecdsa = new ECDSASigner(); ecdsa.init(false, pubKey); return ecdsa.verifySignature(rgbDigest, new BigInteger(1, rgbR), new BigInteger(1, rgbS)); } default: throw new CoseException("Internal error"); } }
From source file:COSE.Signer.java
static boolean validateSignature(AlgorithmID alg, byte[] rgbToBeSigned, byte[] rgbSignature, OneKey cnKey) throws CoseException { Digest digest;/*from w ww .jav a 2 s . c o m*/ switch (alg) { case ECDSA_256: digest = new SHA256Digest(); break; case ECDSA_384: digest = new SHA384Digest(); break; case ECDSA_512: digest = new SHA512Digest(); break; default: throw new CoseException("Unsupported algorithm specified"); } switch (alg) { case ECDSA_256: case ECDSA_384: case ECDSA_512: { byte[] rgbR = new byte[rgbSignature.length / 2]; byte[] rgbS = new byte[rgbSignature.length / 2]; System.arraycopy(rgbSignature, 0, rgbR, 0, rgbR.length); System.arraycopy(rgbSignature, rgbR.length, rgbS, 0, rgbR.length); digest.update(rgbToBeSigned, 0, rgbToBeSigned.length); byte[] rgbDigest = new byte[digest.getDigestSize()]; digest.doFinal(rgbDigest, 0); X9ECParameters p = cnKey.GetCurve(); ECDomainParameters parameters = new ECDomainParameters(p.getCurve(), p.getG(), p.getN(), p.getH()); BigInteger bnX = new BigInteger(1, cnKey.get(KeyKeys.EC2_X.AsCBOR()).GetByteString()); ECPoint point = p.getCurve().createPoint(bnX, new BigInteger(1, cnKey.get(KeyKeys.EC2_Y.AsCBOR()).GetByteString())); ECPublicKeyParameters pubKey = new ECPublicKeyParameters(point, parameters); ECDSASigner ecdsa = new ECDSASigner(); ecdsa.init(false, pubKey); return ecdsa.verifySignature(rgbDigest, new BigInteger(1, rgbR), new BigInteger(1, rgbS)); } default: throw new CoseException("Internal error"); } }