Package org.opensaml.xmlsec.algorithm
Class AlgorithmRegistry
java.lang.Object
org.opensaml.xmlsec.algorithm.AlgorithmRegistry
A registry of
AlgorithmDescriptor
instances, to support various use cases for working with algorithm URIs.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected class
Class used as index key for signature algorithm lookup. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Map<String,
AlgorithmDescriptor> Map of registered algorithm descriptors.private Map<String,
DigestAlgorithm> Index of digest type to AlgorithmDescriptor.private org.slf4j.Logger
Logger.Set containing algorithms which are supported by the runtime environment.Index of (KeyType,DigestType) to AlgorithmDescriptor.private Map<AlgorithmDescriptor.AlgorithmType,
Set<String>> Index of registered AlgorithmType to algorithm URI. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate boolean
checkCipherSupportedKeyLength
(AlgorithmDescriptor descriptor) Check if the key length of the specifiedCipher
-based algorithm, if known, is supported by the current runtime.private boolean
checkRuntimeSupports
(AlgorithmDescriptor descriptor) Evaluate whether the algorithm is supported by the current runtime environment.private boolean
checkSpecialCasesRuntimeSupport
(AlgorithmDescriptor descriptor) Check for special cases of runtime support which failed the initial simple service class load check.void
clear()
Clear all registered algorithms.private void
deindex
(AlgorithmDescriptor descriptor) Remove the algorithm descriptor from the indexes which support the various lookup methods available via the registry's API.void
deregister
(String uri) Deregister an algorithm.void
deregister
(AlgorithmDescriptor descriptor) Deregister an algorithm.Get the algorithm descriptor instance associated with the specified algorithm URI.getDigestAlgorithm
(String digestMethod) Lookup a digest method algorithm descriptor by the JCA digest method ID.Get the set ofAlgorithmDescriptor
registered for the given type.Get the set of algorithm URIs registered for the given type.getSignatureAlgorithm
(String keyType, String digestMethod) Lookup a signature algorithm descriptor by the JCA key algorithm and digest method IDs.private void
index
(AlgorithmDescriptor descriptor) Add the algorithm descriptor to the indexes which support the various lookup methods available via the registry's API.boolean
isRuntimeSupported
(String algorithmURI) Retrieve indication of whether the runtime environment supports the algorithm.void
register
(AlgorithmDescriptor descriptor) Register an algorithm.
-
Field Details
-
log
private org.slf4j.Logger logLogger. -
descriptors
Map of registered algorithm descriptors. -
types
Index of registered AlgorithmType to algorithm URI. -
runtimeSupported
Set containing algorithms which are supported by the runtime environment. -
digestAlgorithms
Index of digest type to AlgorithmDescriptor. -
signatureAlgorithms
Index of (KeyType,DigestType) to AlgorithmDescriptor.
-
-
Constructor Details
-
AlgorithmRegistry
public AlgorithmRegistry()Constructor.
-
-
Method Details
-
get
Get the algorithm descriptor instance associated with the specified algorithm URI.- Parameters:
algorithmURI
- the algorithm URI to resolve- Returns:
- the resolved algorithm descriptor or null
-
isRuntimeSupported
Retrieve indication of whether the runtime environment supports the algorithm.This evaluation is performed dynamically when the algorithm is registered.
- Parameters:
algorithmURI
- the algorithm URI to evaluate- Returns:
- true if the algorithm is supported by the current runtime environment, false otherwise
-
clear
public void clear()Clear all registered algorithms. -
register
Register an algorithm.- Parameters:
descriptor
- the algorithm
-
deregister
Deregister an algorithm.- Parameters:
descriptor
- the algorithm
-
deregister
Deregister an algorithm.- Parameters:
uri
- the algorithm URI
-
getDigestAlgorithm
Lookup a digest method algorithm descriptor by the JCA digest method ID.- Parameters:
digestMethod
- the JCA digest method ID.- Returns:
- the algorithm descriptor, or null
-
getSignatureAlgorithm
@Nullable public SignatureAlgorithm getSignatureAlgorithm(@Nonnull String keyType, @Nonnull String digestMethod) Lookup a signature algorithm descriptor by the JCA key algorithm and digest method IDs.- Parameters:
keyType
- the JCA key algorithm ID.digestMethod
- the JCA digest method ID.- Returns:
- the algorithm descriptor, or null
-
getRegisteredURIsByType
@Nonnull @NonnullElements @Unmodifiable @NotLive public Set<String> getRegisteredURIsByType(@Nonnull AlgorithmDescriptor.AlgorithmType type) Get the set of algorithm URIs registered for the given type.- Parameters:
type
- the algorithm type- Returns:
- the set of URIs for the given type, may be empty
-
getRegisteredByType
@Nonnull @NonnullElements @Unmodifiable @NotLive public Set<AlgorithmDescriptor> getRegisteredByType(@Nonnull AlgorithmDescriptor.AlgorithmType type) Get the set ofAlgorithmDescriptor
registered for the given type.- Parameters:
type
- the algorithm type- Returns:
- the set of descriptors for the given type, may be empty
-
index
Add the algorithm descriptor to the indexes which support the various lookup methods available via the registry's API.- Parameters:
descriptor
- the algorithm
-
deindex
Remove the algorithm descriptor from the indexes which support the various lookup methods available via the registry's API.- Parameters:
descriptor
- the algorithm
-
checkRuntimeSupports
Evaluate whether the algorithm is supported by the current runtime environment.- Parameters:
descriptor
- the algorithm- Returns:
- true if runtime supports the algorithm, false otherwise
-
checkCipherSupportedKeyLength
private boolean checkCipherSupportedKeyLength(AlgorithmDescriptor descriptor) throws NoSuchAlgorithmException Check if the key length of the specifiedCipher
-based algorithm, if known, is supported by the current runtime.- Parameters:
descriptor
- the algorithm- Returns:
- true if key length supported, false otherwise
- Throws:
NoSuchAlgorithmException
- if the associated JCA algorithm is not supported by the runtime
-
checkSpecialCasesRuntimeSupport
Check for special cases of runtime support which failed the initial simple service class load check.- Parameters:
descriptor
- the algorithm- Returns:
- true if algorithm is supported by the runtime environment, false otherwise
-