package com.nimbusds.jose;
import com.nimbusds.jose.util.Base64URL;
/**
* Interface for verifying JSON Web Signature (JWS) objects.
*
* <p>Callers can query the verifier to determine its algorithm capabilities as
* well as the JWS algorithms and header parameters that are accepted for
* processing.
*
* @author Vladimir Dzhuvinov
* @version $version$ (2012-10-23)
*/
public interface JWSVerifier extends JWSAlgorithmProvider {
/**
* Gets the JWS header filter associated with the verifier. Specifies the
* names of those {@link #supportedAlgorithms supported JWS algorithms} and
* header parameters that the verifier is configured to accept.
*
* <p>Attempting to {@link #verify verify} a JWS object signature with an
* algorithm or header parameter that is not accepted must result in a
* {@link JOSEException}.
*
* @return The JWS header filter.
*/
public JWSHeaderFilter getJWSHeaderFilter();
/**
* Verifies the specified {@link JWSObject#getSignature signature} of a
* {@link JWSObject JWS object}.
*
* @param header The JSON Web Signature (JWS) header. Must
* specify an accepted JWS algorithm, must contain
* only accepted header parameters, and must not be
* {@code null}.
* @param signedContent The signed content. Must not be {@code null}.
* @param signature The signature part of the JWS object. Must not
* be {@code null}.
*
* @return {@code true} if the signature was successfully verified, else
* {@code false}.
*
* @throws JOSEException If the JWS algorithm is not accepted, if a header
* parameter is not accepted, or if signature
* verification failed for some other reason.
*/
public boolean verify(final ReadOnlyJWSHeader header,
final byte[] signedContent,
final Base64URL signature)
throws JOSEException;
}