com.unboundid.util.ssl
Class PromptTrustManager

java.lang.Object
  extended by com.unboundid.util.ssl.PromptTrustManager
All Implemented Interfaces:
javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager

public final class PromptTrustManager
extends java.lang.Object
implements javax.net.ssl.X509TrustManager

This class provides an SSL trust manager that will interactively prompt the user to determine whether to trust any certificate that is presented to it. It provides the ability to cache information about certificates that had been previously trusted so that the user is not prompted about the same certificate repeatedly, and it can be configured to store trusted certificates in a file so that the trust information can be persisted.


Constructor Summary
PromptTrustManager()
          Creates a new instance of this prompt trust manager.
PromptTrustManager(java.lang.String acceptedCertsFile)
          Creates a new instance of this prompt trust manager.
PromptTrustManager(java.lang.String acceptedCertsFile, boolean examineValidityDates, java.io.InputStream in, java.io.PrintStream out)
          Creates a new instance of this prompt trust manager.
 
Method Summary
 void checkClientTrusted(java.security.cert.X509Certificate[] chain, java.lang.String authType)
          Checks to determine whether the provided client certificate chain should be trusted.
 void checkServerTrusted(java.security.cert.X509Certificate[] chain, java.lang.String authType)
          Checks to determine whether the provided server certificate chain should be trusted.
 boolean examineValidityDates()
          Indicate whether to prompt about certificates contained in the cache if the current time is outside the validity window for the certificate.
 java.security.cert.X509Certificate[] getAcceptedIssuers()
          Retrieves the accepted issuer certificates for this trust manager.
 boolean wouldPrompt(java.security.cert.X509Certificate[] chain)
          Indicates whether this trust manager would interactively prompt the user about whether to trust the provided certificate chain.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PromptTrustManager

public PromptTrustManager()
Creates a new instance of this prompt trust manager. It will cache trust information in memory but not on disk.


PromptTrustManager

public PromptTrustManager(java.lang.String acceptedCertsFile)
Creates a new instance of this prompt trust manager. It may optionally cache trust information on disk.

Parameters:
acceptedCertsFile - The path to a file in which the certificates that have been previously accepted will be cached. It may be null if the cache should only be maintained in memory.

PromptTrustManager

public PromptTrustManager(java.lang.String acceptedCertsFile,
                          boolean examineValidityDates,
                          java.io.InputStream in,
                          java.io.PrintStream out)
Creates a new instance of this prompt trust manager. It may optionally cache trust information on disk, and may also be configured to examine or ignore validity dates.

Parameters:
acceptedCertsFile - The path to a file in which the certificates that have been previously accepted will be cached. It may be null if the cache should only be maintained in memory.
examineValidityDates - Indicates whether to reject certificates if the current time is outside the validity window for the certificate.
in - The input stream that will be used to read input from the user. If this is null then System.in will be used.
out - The print stream that will be used to display the prompt to the user. If this is null then System.out will be used.
Method Detail

wouldPrompt

public boolean wouldPrompt(java.security.cert.X509Certificate[] chain)
Indicates whether this trust manager would interactively prompt the user about whether to trust the provided certificate chain.

Parameters:
chain - The chain of certificates for which to make the determination.
Returns:
true if this trust manger would interactively prompt the user about whether to trust the certificate chain, or false if not (e.g., because the certificate is already known to be trusted).

examineValidityDates

public boolean examineValidityDates()
Indicate whether to prompt about certificates contained in the cache if the current time is outside the validity window for the certificate.

Returns:
true if the certificate validity time should be examined for cached certificates and the user should be prompted if they are expired or not yet valid, or false if cached certificates should be accepted even outside of the validity window.

checkClientTrusted

public void checkClientTrusted(java.security.cert.X509Certificate[] chain,
                               java.lang.String authType)
                        throws java.security.cert.CertificateException
Checks to determine whether the provided client certificate chain should be trusted.

Specified by:
checkClientTrusted in interface javax.net.ssl.X509TrustManager
Parameters:
chain - The client certificate chain for which to make the determination.
authType - The authentication type based on the client certificate.
Throws:
java.security.cert.CertificateException - If the provided client certificate chain should not be trusted.

checkServerTrusted

public void checkServerTrusted(java.security.cert.X509Certificate[] chain,
                               java.lang.String authType)
                        throws java.security.cert.CertificateException
Checks to determine whether the provided server certificate chain should be trusted.

Specified by:
checkServerTrusted in interface javax.net.ssl.X509TrustManager
Parameters:
chain - The server certificate chain for which to make the determination.
authType - The key exchange algorithm used.
Throws:
java.security.cert.CertificateException - If the provided server certificate chain should not be trusted.

getAcceptedIssuers

public java.security.cert.X509Certificate[] getAcceptedIssuers()
Retrieves the accepted issuer certificates for this trust manager. This will always return an empty array.

Specified by:
getAcceptedIssuers in interface javax.net.ssl.X509TrustManager
Returns:
The accepted issuer certificates for this trust manager.