Package org.apache.wss4j.common.crypto
Class Merlin
java.lang.Object
org.apache.wss4j.common.crypto.CryptoBase
org.apache.wss4j.common.crypto.Merlin
- All Implemented Interfaces:
Crypto
- Direct Known Subclasses:
MerlinAKI,MerlinDevice
A Crypto implementation based on two Java KeyStore objects, one being the keystore, and one
being the truststore.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected CertStorestatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringprotected KeyStorestatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringprotected booleanstatic final Stringstatic final Stringprotected PasswordEncryptorstatic final Stringprotected booleanprotected Propertiesprotected KeyStorestatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final StringFields inherited from class org.apache.wss4j.common.crypto.CryptoBase
certificateFactory, NAME_CONSTRAINTS_OID, SKI_OID -
Constructor Summary
ConstructorsConstructorDescriptionMerlin()Merlin(Properties properties, ClassLoader loader, PasswordEncryptor passwordEncryptor) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddTrustAnchors(Set<TrustAnchor> set, KeyStore keyStore) AddsTrustAnchors found in the provided key store to the set.voidprotected PKIXParameterscreatePKIXParameters(Set<TrustAnchor> trustAnchors, boolean enableRevocation) protected StringdecryptPassword(String password, PasswordEncryptor passwordEncryptor) Singleton certificate factory for this Crypto instance.Get the CertStore from which to obtain a list of CRLs for Certificate Revocation checking.Retrieves the identifier name of the default certificate.Gets the Keystore that was loadedgetPrivateKey(String identifier, String password) Gets the private key corresponding to the identifier.getPrivateKey(X509Certificate certificate, CallbackHandler callbackHandler) Gets the private key corresponding to the certificate.getPrivateKey(PublicKey publicKey, CallbackHandler callbackHandler) Gets the private key corresponding to the given PublicKey.Gets the trust store that was loaded by the underlying implementationgetX509Certificates(CryptoType cryptoType) Get an X509Certificate (chain) corresponding to the CryptoType argument.Get the implementation-specific identifier corresponding to the cert parameter.booleanprotected KeyStoreload(InputStream input, String storepass, String provider, String type) Loads the keystore from anInputStream.static InputStreamloadInputStream(ClassLoader loader, String location) Load a KeyStore object as an InputStream, using the ClassLoader and location argumentsvoidloadProperties(Properties properties, ClassLoader loader, PasswordEncryptor passwordEncryptor) voidsetCRLCertStore(CertStore crlCertStore) Set the CertStore from which to obtain a list of CRLs for Certificate Revocation checking.voidsetEnablePrivateKeyCaching(boolean enablePrivateKeyCaching) voidsetKeyStore(KeyStore keyStore) Set the Keystore on this Crypto instancevoidsetPasswordEncryptor(PasswordEncryptor passwordEncryptor) voidsetTrustStore(KeyStore trustStore) Set the trust store on this Crypto instanceprotected voidverifyTrust(X509Certificate[] certs, boolean enableRevocation, Collection<Pattern> subjectCertConstraints) Evaluate whether a given certificate chain should be trusted.voidverifyTrust(X509Certificate[] certs, boolean enableRevocation, Collection<Pattern> subjectCertConstraints, Collection<Pattern> issuerCertConstraints) Evaluate whether a given certificate chain should be trusted.voidverifyTrust(PublicKey publicKey) Evaluate whether a given public key should be trusted.Methods inherited from class org.apache.wss4j.common.crypto.CryptoBase
createBCX509Name, getBytesFromCertificates, getCertificatesFromBytes, getCryptoProvider, getNameConstraints, getSKIBytesFromCert, getTrustProvider, loadCertificate, matchesIssuerDnPattern, matchesName, matchesSubjectDnPattern, setCertificateFactory, setCryptoProvider, setDefaultX509Identifier, setTrustProvider
-
Field Details
-
ENCRYPTED_PASSWORD_PREFIX
- See Also:
-
ENCRYPTED_PASSWORD_SUFFIX
- See Also:
-
PREFIX
- See Also:
-
OLD_PREFIX
- See Also:
-
OLD_KEYSTORE_FILE
- See Also:
-
CRYPTO_KEYSTORE_PROVIDER
- See Also:
-
CRYPTO_CERT_PROVIDER
- See Also:
-
CRYPTO_CERT_PROVIDER_HANDLES_NAME_CONSTRAINTS
- See Also:
-
KEYSTORE_FILE
- See Also:
-
KEYSTORE_PASSWORD
- See Also:
-
KEYSTORE_TYPE
- See Also:
-
KEYSTORE_ALIAS
- See Also:
-
KEYSTORE_PRIVATE_PASSWORD
- See Also:
-
KEYSTORE_PRIVATE_KEY_CACHING
- See Also:
-
LOAD_CA_CERTS
- See Also:
-
TRUSTSTORE_FILE
- See Also:
-
TRUSTSTORE_PASSWORD
- See Also:
-
TRUSTSTORE_TYPE
- See Also:
-
TRUSTSTORE_PROVIDER
- See Also:
-
X509_CRL_FILE
- See Also:
-
properties
-
keystore
-
truststore
-
crlCertStore
-
loadCACerts
protected boolean loadCACerts -
privatePasswordSet
protected boolean privatePasswordSet -
passwordEncryptor
-
-
Constructor Details
-
Merlin
public Merlin() -
Merlin
-
Merlin
public Merlin(Properties properties, ClassLoader loader, PasswordEncryptor passwordEncryptor) throws WSSecurityException, IOException - Throws:
WSSecurityExceptionIOException
-
-
Method Details
-
loadProperties
public void loadProperties(Properties properties, ClassLoader loader, PasswordEncryptor passwordEncryptor) throws WSSecurityException, IOException - Throws:
WSSecurityExceptionIOException
-
loadInputStream
public static InputStream loadInputStream(ClassLoader loader, String location) throws WSSecurityException, IOException Load a KeyStore object as an InputStream, using the ClassLoader and location arguments- Throws:
WSSecurityExceptionIOException
-
load
protected KeyStore load(InputStream input, String storepass, String provider, String type) throws WSSecurityException Loads the keystore from anInputStream.- Parameters:
input-InputStreamto read from- Throws:
WSSecurityException
-
getKeyStore
Gets the Keystore that was loaded- Returns:
- the Keystore
-
setKeyStore
Set the Keystore on this Crypto instance- Parameters:
keyStore- the Keystore to set
-
getTrustStore
Gets the trust store that was loaded by the underlying implementation- Returns:
- the trust store
-
setTrustStore
Set the trust store on this Crypto instance- Parameters:
trustStore- the trust store to set
-
setCRLCertStore
Set the CertStore from which to obtain a list of CRLs for Certificate Revocation checking.- Parameters:
crlCertStore- the CertStore from which to obtain a list of CRLs for Certificate Revocation checking.
-
getCRLCertStore
Get the CertStore from which to obtain a list of CRLs for Certificate Revocation checking.- Returns:
- the CertStore from which to obtain a list of CRLs for Certificate Revocation checking.
-
getCertificateFactory
Singleton certificate factory for this Crypto instance.- Specified by:
getCertificateFactoryin interfaceCrypto- Overrides:
getCertificateFactoryin classCryptoBase- Returns:
- Returns a
CertificateFactoryto construct X509 certificates - Throws:
WSSecurityException
-
getDefaultX509Identifier
Retrieves the identifier name of the default certificate. This should be the certificate that is used for signature and encryption. This identifier corresponds to the certificate that should be used whenever KeyInfo is not present in a signed or an encrypted message. May return null. The identifier is implementation specific, e.g. it could be the KeyStore alias.- Specified by:
getDefaultX509Identifierin interfaceCrypto- Overrides:
getDefaultX509Identifierin classCryptoBase- Returns:
- name of the default X509 certificate.
- Throws:
WSSecurityException
-
getX509Certificates
Get an X509Certificate (chain) corresponding to the CryptoType argument. The supported types are as follows: TYPE.ISSUER_SERIAL - A certificate (chain) is located by the issuer name and serial number TYPE.THUMBPRINT_SHA1 - A certificate (chain) is located by the SHA1 of the (root) cert TYPE.SKI_BYTES - A certificate (chain) is located by the SKI bytes of the (root) cert TYPE.SUBJECT_DN - A certificate (chain) is located by the Subject DN of the (root) cert TYPE.ALIAS - A certificate (chain) is located by an alias, which for this implementation means an alias of the keystore or truststore.- Throws:
WSSecurityException
-
getX509Identifier
Get the implementation-specific identifier corresponding to the cert parameter. In this case, the identifier corresponds to a KeyStore alias.- Parameters:
cert- The X509Certificate for which to search for an identifier- Returns:
- the identifier corresponding to the cert parameter
- Throws:
WSSecurityException
-
getPrivateKey
public PrivateKey getPrivateKey(X509Certificate certificate, CallbackHandler callbackHandler) throws WSSecurityException Gets the private key corresponding to the certificate.- Parameters:
certificate- The X509Certificate corresponding to the private keycallbackHandler- The callbackHandler needed to get the password- Returns:
- The private key
- Throws:
WSSecurityException
-
getPrivateKey
public PrivateKey getPrivateKey(PublicKey publicKey, CallbackHandler callbackHandler) throws WSSecurityException Gets the private key corresponding to the given PublicKey.- Parameters:
publicKey- The PublicKey corresponding to the private keycallbackHandler- The callbackHandler needed to get the password- Returns:
- The private key
- Throws:
WSSecurityException
-
getPrivateKey
Gets the private key corresponding to the identifier.- Parameters:
identifier- The implementation-specific identifier corresponding to the keypassword- The password needed to get the key- Returns:
- The private key
- Throws:
WSSecurityException
-
verifyTrust
protected void verifyTrust(X509Certificate[] certs, boolean enableRevocation, Collection<Pattern> subjectCertConstraints) throws WSSecurityException Evaluate whether a given certificate chain should be trusted.- Parameters:
certs- Certificate chain to validateenableRevocation- whether to enable CRL verification or notsubjectCertConstraints- A set of constraints on the Subject DN of the certificates- Throws:
WSSecurityException- if the certificate chain is invalid
-
verifyTrust
public void verifyTrust(X509Certificate[] certs, boolean enableRevocation, Collection<Pattern> subjectCertConstraints, Collection<Pattern> issuerCertConstraints) throws WSSecurityException Description copied from interface:CryptoEvaluate whether a given certificate chain should be trusted.- Parameters:
certs- Certificate chain to validateenableRevocation- whether to enable CRL verification or notsubjectCertConstraints- A set of constraints on the Subject DN of the certificatesissuerCertConstraints- A set of constraints on the Issuer DN of the certificates- Throws:
WSSecurityException- if the certificate chain is invalid
-
createPKIXParameters
protected PKIXParameters createPKIXParameters(Set<TrustAnchor> trustAnchors, boolean enableRevocation) throws InvalidAlgorithmParameterException -
verifyTrust
Evaluate whether a given public key should be trusted.- Parameters:
publicKey- The PublicKey to be evaluated- Throws:
WSSecurityException- if the PublicKey is invalid
-
addTrustAnchors
protected void addTrustAnchors(Set<TrustAnchor> set, KeyStore keyStore) throws KeyStoreException, WSSecurityException AddsTrustAnchors found in the provided key store to the set.When the Trust Anchors are constructed, the value of the
CRYPTO_CERT_PROVIDER_HANDLES_NAME_CONSTRAINTSproperty will be checked. If it has been set totrue, thenNameConstraints will be added to their Trust Anchors; if unset or set to false, the Name Constraints will be nulled out on their Trust Anchors. The default Sun PKIX Path Validator does not support Name Constraints on Trust Anchors and will throw an InvalidAlgorithmParameterException if they are provided. Other implementations may also be unsafe.- Parameters:
set- the set to which to add theTrustAnchorskeyStore- the store to search forX509Certificates- Throws:
KeyStoreException- if a problem occurs accessing the keyStoreWSSecurityException
-
decryptPassword
-
setPasswordEncryptor
-
clearCache
public void clearCache() -
isEnablePrivateKeyCaching
public boolean isEnablePrivateKeyCaching() -
setEnablePrivateKeyCaching
public void setEnablePrivateKeyCaching(boolean enablePrivateKeyCaching)
-