/** * Verifies that the email contains a valid signature.<br/> * If the <code>SIGNATURE_VALID_HEADER</code> is present, its value is * used.<br/> * If not, the value of the <code>SIGNATURE_HEADER</code> header * field is verified (which is more CPU intensive). * @return <code>true</code> if the signature is valid; <code>false</code> * if it is invalid or an error occurred. */ public boolean isSignatureValid() { try { String[] sigValidFlag = getHeader(SIGNATURE_VALID_HEADER); if (sigValidFlag==null || sigValidFlag.length==0) return verifySignature(); else return "true".equalsIgnoreCase(sigValidFlag[0]); } catch (MessagingException e) { log.error("Cannot get header field: " + SIGNATURE_VALID_HEADER, e); return false; } }
/** * Verifies the signature and sets the <code>SIGNATURE_VALID_HEADER</code> * header field accordingly. */ public void setSignatureFlag() { try { removeHeader(SIGNATURE_VALID_HEADER); // remove the signature validity flag before verifying boolean valid = verifySignature(); setHeader(SIGNATURE_VALID_HEADER, String.valueOf(valid)); } catch (MessagingException e) { log.error("Cannot get header field: " + SIGNATURE_VALID_HEADER, e); } }