in main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java [467:493]
private void signatureVerify(Headers h, SignatureRecord sign,
byte[] decoded, PublicKeyRecord key, List<CharSequence> headers)
throws PermFailException {
try {
Signature signature = Signature.getInstance(sign.getHashMethod()
.toString().toUpperCase()
+ "with" + sign.getHashKeyType().toString().toUpperCase());
PublicKey publicKey;
try {
publicKey = key.getPublicKey();
} catch (IllegalStateException e) {
throw new PermFailException("Invalid Public Key: " + e.getMessage(), e);
}
signature.initVerify(publicKey);
signatureCheck(h, sign, headers, signature);
if (!signature.verify(decoded))
throw new PermFailException("Header signature does not verify");
} catch (InvalidKeyException e) {
throw new PermFailException(e.getMessage(), e);
} catch (NoSuchAlgorithmException e) {
throw new PermFailException(e.getMessage(), e);
} catch (SignatureException e) {
throw new PermFailException(e.getMessage(), e);
}
}