Package com.nimbusds.jose.jwk
Class JWKMatcher
java.lang.Object
com.nimbusds.jose.jwk.JWKMatcher
JSON Web Key (JWK) matcher. May be used to ensure a JWK matches a set of
application-specific criteria.
Supported key matching criteria:
- Any, unspecified, one or more key types (typ).
- Any, unspecified, one or more key uses (use).
- Any, unspecified, one or more key operations (key_ops).
- Any, unspecified, one or more key algorithms (alg).
- Any, unspecified, one or more key identifiers (kid).
- Private key only.
- Public key only.
- Non-revoked key only.
- Revoked key only.
- Minimum, maximum or exact key sizes.
- Any, unspecified, one or more curves for EC and OKP keys (crv).
- X.509 certificate SHA-256 thumbprint.
- With X.509 certificate only.
Matching by JWK thumbprint (RFC 7638), X.509 certificate URL and X.509 certificate chain is not supported.
- Version:
- 2024-11-01
- Author:
- Vladimir Dzhuvinov, Josh Cummings, Ben Arena
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Builder for constructing JWK matchers. -
Constructor Summary
ConstructorDescriptionJWKMatcher
(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean privateOnly, boolean publicOnly) Deprecated.JWKMatcher
(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean withUseOnly, boolean withIDOnly, boolean privateOnly, boolean publicOnly, boolean nonRevokedOnly, boolean revokedOnly, int minSizeBits, int maxSizeBits, Set<Integer> sizesBits, Set<Curve> curves, Set<Base64URL> x5tS256s, boolean withX5COnly) Creates a new JSON Web Key (JWK) matcher.JWKMatcher
(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean withUseOnly, boolean withIDOnly, boolean privateOnly, boolean publicOnly, int minSizeBits, int maxSizeBits, Set<Integer> sizesBits, Set<Curve> curves) Deprecated.JWKMatcher
(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean withUseOnly, boolean withIDOnly, boolean privateOnly, boolean publicOnly, int minSizeBits, int maxSizeBits, Set<Integer> sizesBits, Set<Curve> curves, Set<Base64URL> x5tS256s) Deprecated.JWKMatcher
(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean withUseOnly, boolean withIDOnly, boolean privateOnly, boolean publicOnly, int minSizeBits, int maxSizeBits, Set<Integer> sizesBits, Set<Curve> curves, Set<Base64URL> x5tS256s, boolean withX5COnly) Deprecated.JWKMatcher
(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean privateOnly, boolean publicOnly, int minSizeBits, int maxSizeBits) Deprecated.JWKMatcher
(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean privateOnly, boolean publicOnly, int minSizeBits, int maxSizeBits, Set<Curve> curves) Deprecated.JWKMatcher
(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean privateOnly, boolean publicOnly, int minSizeBits, int maxSizeBits, Set<Integer> sizesBits, Set<Curve> curves) Deprecated. -
Method Summary
Modifier and TypeMethodDescriptionstatic JWKMatcher
forJWEHeader
(JWEHeader jweHeader) Returns aJWKMatcher
based on the givenJWEHeader
.static JWKMatcher
forJWSHeader
(JWSHeader jwsHeader) Returns aJWKMatcher
based on the givenJWSHeader
.Returns the JOSE algorithms to match.Returns the curves to match (for EC and OKP keys).Returns the key IDs to match.Returns the key operations to match.Returns the key sizes.Returns the key types to match.Returns the public key uses to match.int
Returns the maximum key size.int
Deprecated.int
Returns the minimum key size.int
Deprecated.Returns the X.509 certificate SHA-256 thumbprints to match.boolean
hasKeyID()
Deprecated.boolean
Deprecated.boolean
Deprecated.boolean
Returnstrue
if only non-revoked keys are matched.boolean
Returnstrue
if only private keys are matched.boolean
Returnstrue
if only public keys are matched.boolean
Returnstrue
if only revoked keys are matched.boolean
Returnstrue
if keys with a specified ID are matched.boolean
Returnstrue
if keys with a specified use are matched.boolean
Returnstrue
if keys with a specified X.509 certificate chain are matched.boolean
Returnstrue
if the specified JWK matches.toString()
-
Constructor Details
-
JWKMatcher
@Deprecated public JWKMatcher(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean privateOnly, boolean publicOnly) Deprecated.Creates a new JSON Web Key (JWK) matcher.- Parameters:
types
- The key types to match,null
if not specified.uses
- The public key uses to match,null
if not specified.ops
- The key operations to match,null
if not specified.algs
- The JOSE algorithms to match,null
if not specified.ids
- The key IDs to match,null
if not specified.privateOnly
-true
to match a private key.publicOnly
-true
to match a public only key.
-
JWKMatcher
@Deprecated public JWKMatcher(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean privateOnly, boolean publicOnly, int minSizeBits, int maxSizeBits) Deprecated.Creates a new JSON Web Key (JWK) matcher.- Parameters:
types
- The key types to match,null
if not specified.uses
- The public key uses to match,null
if not specified.ops
- The key operations to match,null
if not specified.algs
- The JOSE algorithms to match,null
if not specified.ids
- The key IDs to match,null
if not specified.privateOnly
-true
to match a private key.publicOnly
-true
to match a public only key.minSizeBits
- The minimum key size in bits, zero implies no minimum size limit.maxSizeBits
- The maximum key size in bits, zero implies no maximum size limit.
-
JWKMatcher
@Deprecated public JWKMatcher(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean privateOnly, boolean publicOnly, int minSizeBits, int maxSizeBits, Set<Curve> curves) Deprecated.Creates a new JSON Web Key (JWK) matcher.- Parameters:
types
- The key types to match,null
if not specified.uses
- The public key uses to match,null
if not specified.ops
- The key operations to match,null
if not specified.algs
- The JOSE algorithms to match,null
if not specified.ids
- The key IDs to match,null
if not specified.privateOnly
-true
to match a private key.publicOnly
-true
to match a public only key.minSizeBits
- The minimum key size in bits, zero implies no minimum size limit.maxSizeBits
- The maximum key size in bits, zero implies no maximum size limit.curves
- The curves to match (for EC keys),null
if not specified.
-
JWKMatcher
@Deprecated public JWKMatcher(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean privateOnly, boolean publicOnly, int minSizeBits, int maxSizeBits, Set<Integer> sizesBits, Set<Curve> curves) Deprecated.Creates a new JSON Web Key (JWK) matcher.- Parameters:
types
- The key types to match,null
if not specified.uses
- The public key uses to match,null
if not specified.ops
- The key operations to match,null
if not specified.algs
- The JOSE algorithms to match,null
if not specified.ids
- The key IDs to match,null
if not specified.privateOnly
-true
to match a private key.publicOnly
-true
to match a public only key.minSizeBits
- The minimum key size in bits, zero implies no minimum size limit.maxSizeBits
- The maximum key size in bits, zero implies no maximum size limit.sizesBits
- The key sizes in bits,null
if not specified.curves
- The curves to match (for EC and OKP keys),null
if not specified.
-
JWKMatcher
@Deprecated public JWKMatcher(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean withUseOnly, boolean withIDOnly, boolean privateOnly, boolean publicOnly, int minSizeBits, int maxSizeBits, Set<Integer> sizesBits, Set<Curve> curves) Deprecated.Creates a new JSON Web Key (JWK) matcher.- Parameters:
types
- The key types to match,null
if not specified.uses
- The public key uses to match,null
if not specified.ops
- The key operations to match,null
if not specified.algs
- The JOSE algorithms to match,null
if not specified.ids
- The key IDs to match,null
if not specified.withUseOnly
-true
to match a key with a set use.withIDOnly
-true
to match a key with a set ID.privateOnly
-true
to match a private key.publicOnly
-true
to match a public only key.minSizeBits
- The minimum key size in bits, zero implies no minimum size limit.maxSizeBits
- The maximum key size in bits, zero implies no maximum size limit.sizesBits
- The key sizes in bits,null
if not specified.curves
- The curves to match (for EC and OKP keys),null
if not specified.
-
JWKMatcher
@Deprecated public JWKMatcher(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean withUseOnly, boolean withIDOnly, boolean privateOnly, boolean publicOnly, int minSizeBits, int maxSizeBits, Set<Integer> sizesBits, Set<Curve> curves, Set<Base64URL> x5tS256s) Deprecated.Creates a new JSON Web Key (JWK) matcher.- Parameters:
types
- The key types to match,null
if not specified.uses
- The public key uses to match,null
if not specified.ops
- The key operations to match,null
if not specified.algs
- The JOSE algorithms to match,null
if not specified.ids
- The key IDs to match,null
if not specified.withUseOnly
-true
to match a key with a set use.withIDOnly
-true
to match a key with a set ID.privateOnly
-true
to match a private key.publicOnly
-true
to match a public only key.minSizeBits
- The minimum key size in bits, zero implies no minimum size limit.maxSizeBits
- The maximum key size in bits, zero implies no maximum size limit.sizesBits
- The key sizes in bits,null
if not specified.curves
- The curves to match (for EC and OKP keys),null
if not specified.x5tS256s
- The X.509 certificate thumbprints to match,null
if not specified.
-
JWKMatcher
@Deprecated public JWKMatcher(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean withUseOnly, boolean withIDOnly, boolean privateOnly, boolean publicOnly, int minSizeBits, int maxSizeBits, Set<Integer> sizesBits, Set<Curve> curves, Set<Base64URL> x5tS256s, boolean withX5COnly) Deprecated.Creates a new JSON Web Key (JWK) matcher.- Parameters:
types
- The key types to match,null
if not specified.uses
- The public key uses to match,null
if not specified.ops
- The key operations to match,null
if not specified.algs
- The JOSE algorithms to match,null
if not specified.ids
- The key IDs to match,null
if not specified.withUseOnly
-true
to match a key with a set use.withIDOnly
-true
to match a key with a set ID.privateOnly
-true
to match a private key.publicOnly
-true
to match a public only key.minSizeBits
- The minimum key size in bits, zero implies no minimum size limit.maxSizeBits
- The maximum key size in bits, zero implies no maximum size limit.sizesBits
- The key sizes in bits,null
if not specified.curves
- The curves to match (for EC and OKP keys),null
if not specified.x5tS256s
- The X.509 certificate thumbprints to match,null
if not specified.withX5COnly
-true
to match a key with a set X.509 certificate chain.
-
JWKMatcher
public JWKMatcher(Set<KeyType> types, Set<KeyUse> uses, Set<KeyOperation> ops, Set<Algorithm> algs, Set<String> ids, boolean withUseOnly, boolean withIDOnly, boolean privateOnly, boolean publicOnly, boolean nonRevokedOnly, boolean revokedOnly, int minSizeBits, int maxSizeBits, Set<Integer> sizesBits, Set<Curve> curves, Set<Base64URL> x5tS256s, boolean withX5COnly) Creates a new JSON Web Key (JWK) matcher.- Parameters:
types
- The key types to match,null
if not specified.uses
- The public key uses to match,null
if not specified.ops
- The key operations to match,null
if not specified.algs
- The JOSE algorithms to match,null
if not specified.ids
- The key IDs to match,null
if not specified.withUseOnly
-true
to match a key with a set use.withIDOnly
-true
to match a key with a set ID.privateOnly
-true
to match a private key only.publicOnly
-true
to match a public key only.nonRevokedOnly
-true
to match a non-revoked key only.revokedOnly
-true
to match a revoked key only.minSizeBits
- The minimum key size in bits, zero implies no minimum size.maxSizeBits
- The maximum key size in bits, zero implies no maximum size.sizesBits
- The key sizes in bits,null
if not specified.curves
- The curves to match (for EC and OKP keys),null
if not specified.x5tS256s
- The X.509 certificate thumbprints to match,null
if not specified.withX5COnly
-true
to match a key with a set X.509 certificate chain.
-
-
Method Details
-
forJWEHeader
Returns aJWKMatcher
based on the givenJWEHeader
.The
JWKMatcher
is configured as follows:- The key type to match is determined by the JWE algorithm (alg).
- The key ID to match is set by the JWE header key ID (kid) parameter (if set).
- The key uses to match are set to encryption or not specified.
- The key algorithm to match is set to the JWE algorithm (alg) or not specified.
Other JWE header parameters are not taken into account.
- Parameters:
jweHeader
- The header to use.- Returns:
- A
JWKMatcher
based on the given header.
-
forJWSHeader
Returns aJWKMatcher
based on the givenJWSHeader
.The
JWKMatcher
is configured as follows:- The key type to match is determined by the JWS algorithm (alg).
- The key ID to match is set by the JWS header key ID (kid) parameter (if set).
- The key uses to match are set to signature or not specified.
- The key algorithm to match is set to the JWS algorithm (alg) or not specified.
- The X.509 certificate SHA-256 thumbprint to match is set to the x5t#S256 parameter (if set).
Other JWS header parameters are not taken into account.
- Parameters:
jwsHeader
- The header to use.- Returns:
- A
JWKMatcher
based on the given header,null
if the JWS algorithm is not supported.
-
getKeyTypes
Returns the key types to match.- Returns:
- The key types,
null
if not specified.
-
getKeyUses
Returns the public key uses to match.- Returns:
- The public key uses,
null
if not specified.
-
getKeyOperations
Returns the key operations to match.- Returns:
- The key operations,
null
if not specified.
-
getAlgorithms
Returns the JOSE algorithms to match.- Returns:
- The JOSE algorithms,
null
if not specified.
-
getKeyIDs
Returns the key IDs to match.- Returns:
- The key IDs,
null
if not specified.
-
hasKeyUse
Deprecated.Returnstrue
if keys with a specified use are matched.- Returns:
true
if keys with a specified use are matched, elsefalse
.
-
isWithKeyUseOnly
Returnstrue
if keys with a specified use are matched.- Returns:
true
if keys with a specified use are matched, elsefalse
.
-
hasKeyID
Deprecated.Returnstrue
if keys with a specified ID are matched.- Returns:
true
if keys with a specified ID are matched, elsefalse
.
-
isWithKeyIDOnly
Returnstrue
if keys with a specified ID are matched.- Returns:
true
if keys with a specified ID are matched, elsefalse
.
-
isPrivateOnly
Returnstrue
if only private keys are matched.- Returns:
true
if only private keys are matched, elsefalse
.
-
isPublicOnly
Returnstrue
if only public keys are matched.- Returns:
true
if only public keys are matched, elsefalse
.
-
isNonRevokedOnly
Returnstrue
if only non-revoked keys are matched.- Returns:
true
if only non-revoked keys are matched, elsefalse
.
-
isRevokedOnly
Returnstrue
if only revoked keys are matched.- Returns:
true
if only revoked keys are matched, elsefalse
.
-
getMinSize
Deprecated.Returns the minimum key size. UsegetMinKeySize()
instead.- Returns:
- The minimum key size in bits, zero implies no minimum size limit.
-
getMinKeySize
Returns the minimum key size.- Returns:
- The minimum key size in bits, zero implies no minimum size limit.
-
getMaxSize
Deprecated.Returns the maximum key size. UsegetMaxKeySize()
instead.- Returns:
- The maximum key size in bits, zero implies no maximum size limit.
-
getMaxKeySize
Returns the maximum key size.- Returns:
- The maximum key size in bits, zero implies no maximum size limit.
-
getKeySizes
Returns the key sizes.- Returns:
- The key sizes in bits,
null
if not specified.
-
getCurves
Returns the curves to match (for EC and OKP keys).- Returns:
- The curves,
null
if not specified.
-
getX509CertSHA256Thumbprints
Returns the X.509 certificate SHA-256 thumbprints to match.- Returns:
- The thumbprints,
null
if not specified.
-
hasX509CertChain
Deprecated.Returnstrue
if keys with a specified X.509 certificate chain are matched.- Returns:
true
if keys with a specified X.509 certificate are matched, elsefalse
.
-
isWithX509CertChainOnly
Returnstrue
if keys with a specified X.509 certificate chain are matched.- Returns:
true
if keys with a specified X.509 certificate chain are matched, elsefalse
.
-
matches
Returnstrue
if the specified JWK matches.- Parameters:
key
- The JSON Web Key (JWK). Must not benull
.- Returns:
true
if the JWK matches, elsefalse
.
-
toString
-