Package com.nimbusds.jose.crypto
Class MACVerifier
java.lang.Object
com.nimbusds.jose.crypto.impl.BaseJWSProvider
com.nimbusds.jose.crypto.impl.MACProvider
com.nimbusds.jose.crypto.MACVerifier
- All Implemented Interfaces:
CriticalHeaderParamsAware,JCAAware<JCAContext>,JOSEProvider,JWSProvider,JWSVerifier
@ThreadSafe
public class MACVerifier
extends MACProvider
implements JWSVerifier, CriticalHeaderParamsAware
Message Authentication Code (MAC) verifier of
JWS objects. Expects a secret key.
See RFC 7518 section 3.2 for more information.
This class is thread-safe.
Supports the following algorithms:
Tested with the AWS CloudHSM JCE provider.
- Version:
- 2024-10-28
- Author:
- Vladimir Dzhuvinov
-
Field Summary
Fields inherited from class com.nimbusds.jose.crypto.impl.MACProvider
SUPPORTED_ALGORITHMS -
Constructor Summary
ConstructorsConstructorDescriptionMACVerifier(byte[] secret) Creates a new Message Authentication (MAC) verifier.MACVerifier(byte[] secret, Set<String> defCritHeaders) Creates a new Message Authentication (MAC) verifier.Creates a new Message Authentication (MAC) verifier.MACVerifier(OctetSequenceKey jwk, Set<String> defCritHeaders) Creates a new Message Authentication (MAC) verifier.MACVerifier(String secretString) Creates a new Message Authentication (MAC) verifier.MACVerifier(SecretKey secretKey) Creates a new Message Authentication (MAC) verifier.MACVerifier(SecretKey secretKey, Set<String> defCritHeaders) Creates a new Message Authentication (MAC) verifier. -
Method Summary
Modifier and TypeMethodDescriptionReturns the names of the critical (crit) header parameters that are deferred to the application for processing and will be ignored by the JWS verifier / JWE decrypter.Returns the names of the critical (crit) header parameters that are understood and processed by the JWS verifier / JWE decrypter.booleanVerifies the specifiedsignatureof aJWS object.Methods inherited from class com.nimbusds.jose.crypto.impl.MACProvider
ensureSecretLengthSatisfiesAlgorithm, getCompatibleAlgorithms, getJCAAlgorithmName, getMinRequiredSecretLength, getSecret, getSecretKey, getSecretStringMethods inherited from class com.nimbusds.jose.crypto.impl.BaseJWSProvider
getJCAContext, supportedJWSAlgorithmsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.nimbusds.jose.jca.JCAAware
getJCAContextMethods inherited from interface com.nimbusds.jose.JWSProvider
supportedJWSAlgorithms
-
Constructor Details
-
MACVerifier
Creates a new Message Authentication (MAC) verifier.- Parameters:
secret- The secret. Must be at least 256 bits long and notnull.- Throws:
JOSEException- If the secret length is shorter than the minimum 256-bit requirement.
-
MACVerifier
Creates a new Message Authentication (MAC) verifier.- Parameters:
secretString- The secret as a UTF-8 encoded string. Must be at least 256 bits long and notnull.- Throws:
JOSEException- If the secret length is shorter than the minimum 256-bit requirement.
-
MACVerifier
Creates a new Message Authentication (MAC) verifier.- Parameters:
secretKey- The secret key. Must be at least 256 bits long and notnull.- Throws:
JOSEException- If the secret length is shorter than the minimum 256-bit requirement.
-
MACVerifier
Creates a new Message Authentication (MAC) verifier.- Parameters:
jwk- The secret as a JWK. Must be at least 256 bits long and notnull.- Throws:
JOSEException- If the secret length is shorter than the minimum 256-bit requirement.
-
MACVerifier
Creates a new Message Authentication (MAC) verifier.- Parameters:
secret- The secret. Must be at least 256 bits long and notnull.defCritHeaders- The names of the critical header parameters that are deferred to the application for processing, empty set ornullif none.- Throws:
JOSEException- If the secret length is shorter than the minimum 256-bit requirement.
-
MACVerifier
Creates a new Message Authentication (MAC) verifier.- Parameters:
secretKey- The secret key. Must be at least 256 bits long and notnull.defCritHeaders- The names of the critical header parameters that are deferred to the application for processing, empty set ornullif none.- Throws:
JOSEException- If the secret length is shorter than the minimum 256-bit requirement.
-
MACVerifier
Creates a new Message Authentication (MAC) verifier.- Parameters:
jwk- The secret as a JWK. Must be at least 256 bits long and notnull.defCritHeaders- The names of the critical header parameters that are deferred to the application for processing, empty set ornullif none.- Throws:
JOSEException- If the secret length is shorter than the minimum 256-bit requirement.
-
-
Method Details
-
getProcessedCriticalHeaderParams
Description copied from interface:CriticalHeaderParamsAwareReturns the names of the critical (crit) header parameters that are understood and processed by the JWS verifier / JWE decrypter.- Specified by:
getProcessedCriticalHeaderParamsin interfaceCriticalHeaderParamsAware- Returns:
- The names of the critical header parameters that are understood and processed, empty set if none.
-
getDeferredCriticalHeaderParams
Description copied from interface:CriticalHeaderParamsAwareReturns the names of the critical (crit) header parameters that are deferred to the application for processing and will be ignored by the JWS verifier / JWE decrypter.- Specified by:
getDeferredCriticalHeaderParamsin interfaceCriticalHeaderParamsAware- Returns:
- The names of the critical header parameters that are deferred to the application for processing, empty set if none.
-
verify
public boolean verify(JWSHeader header, byte[] signedContent, Base64URL signature) throws JOSEException Description copied from interface:JWSVerifierVerifies the specifiedsignatureof aJWS object.- Specified by:
verifyin interfaceJWSVerifier- Parameters:
header- The JSON Web Signature (JWS) header. Must specify a supported JWS algorithm and must not benull.signedContent- The signing input. Must not benull.signature- The signature part of the JWS object. Must not benull.- Returns:
trueif the signature was successfully verified,falseif the signature is invalid or if a critical header is neither supported nor marked for deferral to the application.- Throws:
JOSEException- If the JWS algorithm is not supported, or if signature verification failed for some other internal reason.
-