package es.uji.security.crypto.raw;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.Provider;
import java.security.Signature;
import java.security.SignatureException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import es.uji.security.crypto.VerificationResult;
public class RawSignatureVerifier
{
public VerificationResult verify(byte[] data, byte[] signature, X509Certificate caCertificate, Provider provider)
throws CertificateException, IOException, NoSuchAlgorithmException,
InvalidKeyException, SignatureException
{
Signature rsa_vfy = Signature.getInstance("SHA1withRSA", provider);
rsa_vfy.initVerify(caCertificate.getPublicKey());
rsa_vfy.update(data);
VerificationResult verificationDetails = new VerificationResult();
verificationDetails.setValid(rsa_vfy.verify(signature));
if (! verificationDetails.isValid())
{
verificationDetails.addError("RAW signature can not be verified");
}
return verificationDetails;
}
}