public static boolean verify(Curves curve, ECPublicKey key, byte[] signature, int sigoffset, int siglen, byte[]... data) {
if(key == null || curve == null || signature == null || data == null)
return false;
boolean result = false;
try {
Signature sig = Signature.getInstance(curve.defaultHashAlgorithm, curve.sigProvider);
sig.initVerify(key);
for(byte[] d: data)
sig.update(d);
siglen = actualSignatureLength(signature, sigoffset, siglen);
result = sig.verify(signature, sigoffset, siglen);
} catch (NoSuchAlgorithmException e) {
Logger.error(ECDSA.class, "NoSuchAlgorithmException : "+e.getMessage(),e);
e.printStackTrace();
} catch (InvalidKeyException e) {
Logger.error(ECDSA.class, "InvalidKeyException : "+e.getMessage(),e);
e.printStackTrace();
} catch (SignatureException e) {
Logger.error(ECDSA.class, "SignatureException : "+e.getMessage(),e);
e.printStackTrace();
}
return result;
}