Package org.conscrypt
Class Platform
- java.lang.Object
-
- org.conscrypt.Platform
-
@Internal public final class Platform extends java.lang.Object
Platform-specific methods for OpenJDK. Uses reflection to implement Java 8 SSL features for backwards compatibility.
-
-
Field Summary
Fields Modifier and Type Field Description private static booleanDEPRECATED_TLS_V1private static booleanENABLED_TLS_V1private static booleanFILTERED_TLS_V1private static java.lang.reflect.MethodGET_CURVE_NAME_METHODprivate static intJAVA_VERSION
-
Constructor Summary
Constructors Modifier Constructor Description privatePlatform()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static intandroidSdkInt(){@return the Android SDK int if this is an Android platform, or 0 if it is not}(package private) static voidblockGuardOnNetwork()(package private) static booleancanExecuteExecutable(java.io.File file)(package private) static voidcheckClientTrusted(javax.net.ssl.X509TrustManager tm, java.security.cert.X509Certificate[] chain, java.lang.String authType, AbstractConscryptSocket socket)(package private) static voidcheckClientTrusted(javax.net.ssl.X509TrustManager tm, java.security.cert.X509Certificate[] chain, java.lang.String authType, ConscryptEngine engine)(package private) static voidcheckServerTrusted(javax.net.ssl.X509TrustManager tm, java.security.cert.X509Certificate[] chain, java.lang.String authType, AbstractConscryptSocket socket)(package private) static voidcheckServerTrusted(javax.net.ssl.X509TrustManager tm, java.security.cert.X509Certificate[] chain, java.lang.String authType, ConscryptEngine engine)(package private) static voidcloseGuardClose(java.lang.Object guardObj)(package private) static java.lang.ObjectcloseGuardGet()(package private) static voidcloseGuardOpen(java.lang.Object guardObj, java.lang.String message)(package private) static voidcloseGuardWarnIfOpen(java.lang.Object guardObj)(package private) static ConscryptEngineSocketcreateEngineSocket(java.lang.String hostname, int port, java.net.InetAddress clientAddress, int clientPort, SSLParametersImpl sslParameters)(package private) static ConscryptEngineSocketcreateEngineSocket(java.lang.String hostname, int port, SSLParametersImpl sslParameters)(package private) static ConscryptEngineSocketcreateEngineSocket(java.net.InetAddress address, int port, java.net.InetAddress clientAddress, int clientPort, SSLParametersImpl sslParameters)(package private) static ConscryptEngineSocketcreateEngineSocket(java.net.InetAddress address, int port, SSLParametersImpl sslParameters)(package private) static ConscryptEngineSocketcreateEngineSocket(java.net.Socket socket, java.lang.String hostname, int port, boolean autoClose, SSLParametersImpl sslParameters)(package private) static ConscryptEngineSocketcreateEngineSocket(SSLParametersImpl sslParameters)(package private) static ConscryptFileDescriptorSocketcreateFileDescriptorSocket(java.lang.String hostname, int port, java.net.InetAddress clientAddress, int clientPort, SSLParametersImpl sslParameters)(package private) static ConscryptFileDescriptorSocketcreateFileDescriptorSocket(java.lang.String hostname, int port, SSLParametersImpl sslParameters)(package private) static ConscryptFileDescriptorSocketcreateFileDescriptorSocket(java.net.InetAddress address, int port, java.net.InetAddress clientAddress, int clientPort, SSLParametersImpl sslParameters)(package private) static ConscryptFileDescriptorSocketcreateFileDescriptorSocket(java.net.InetAddress address, int port, SSLParametersImpl sslParameters)(package private) static ConscryptFileDescriptorSocketcreateFileDescriptorSocket(java.net.Socket socket, java.lang.String hostname, int port, boolean autoClose, SSLParametersImpl sslParameters)(package private) static ConscryptFileDescriptorSocketcreateFileDescriptorSocket(SSLParametersImpl sslParameters)(package private) static java.io.FilecreateTempFile(java.lang.String prefix, java.lang.String suffix, java.io.File directory)Approximates the behavior of File.createTempFile without depending on SecureRandom.(package private) static java.security.spec.AlgorithmParameterSpecfromGCMParameters(java.security.AlgorithmParameters params)Convert from an opaque AlgorithmParameters to the platform's GCMParameterSpec.(package private) static GCMParametersfromGCMParameterSpec(java.security.spec.AlgorithmParameterSpec params)Convert from platform's GCMParameterSpec to our internal version.(package private) static java.lang.StringgetCurveName(java.security.spec.ECParameterSpec spec)(package private) static java.security.KeyStoregetDefaultCertKeyStore()static ConscryptHostnameVerifiergetDefaultHostnameVerifier()(package private) static java.lang.StringgetDefaultProviderName()Default name used in theJCE systembyOpenSSLProviderif the default constructor is used.(package private) static java.lang.StringgetEndpointIdentificationAlgorithm(javax.net.ssl.SSLParameters params)(package private) static java.io.FileDescriptorgetFileDescriptor(java.net.Socket s)(package private) static java.io.FileDescriptorgetFileDescriptorFromSSLSocket(AbstractConscryptSocket socket)(package private) static java.lang.StringgetHostStringFromInetSocketAddress(java.net.InetSocketAddress addr)(package private) static longgetMillisSinceBoot()static java.lang.StringgetOriginalHostNameFromInetAddress(java.net.InetAddress addr)(package private) static voidgetSSLParameters(javax.net.ssl.SSLParameters params, SSLParametersImpl impl)(package private) static voidgetSSLParameters(javax.net.ssl.SSLParameters params, SSLParametersImpl impl, AbstractConscryptSocket socket)(package private) static voidgetSSLParameters(javax.net.ssl.SSLParameters params, SSLParametersImpl impl, ConscryptEngine engine)static StatsLoggetStatsLog()static SourcegetStatsSource()private static java.lang.ClassLoadergetSystemClassLoader()static int[]getUids()static booleanisCTVerificationRequired(java.lang.String hostname)Check if SCT verification is required for a given hostname.static booleanisJavaxCertificateSupported()static booleanisPakeSupported()static booleanisSdkGreater(int sdk)(package private) static booleanisSniEnabledByDefault()For unbundled versions, SNI is always enabled by default.static booleanisTlsV1Deprecated()static booleanisTlsV1Filtered()static booleanisTlsV1Supported()(package private) static intjavaVersion()private static intjavaVersion0()private static intmajorVersion(java.lang.String javaSpecVersion)private static intmajorVersionFromJavaSpecificationVersion()(package private) static CertBlocklistnewDefaultBlocklist()(package private) static CertificateTransparencynewDefaultCertificateTransparency()(package private) static ConscryptCertStorenewDefaultCertStore()(package private) static java.lang.StringoidToAlgorithmName(java.lang.String oid)OID to Algorithm Name mapping.(package private) static booleanprovideTrustManagerByDefault()static CertificateTransparencyVerificationReasonreasonCTVerificationRequired(java.lang.String hostname)(package private) static booleanserverNamePermitted(SSLParametersImpl parameters, java.lang.String serverName)(package private) static voidsetCurveName(java.security.spec.ECParameterSpec spec, java.lang.String curveName)(package private) static voidsetEndpointIdentificationAlgorithm(javax.net.ssl.SSLParameters params, java.lang.String endpointIdentificationAlgorithm)(package private) static voidsetSocketWriteTimeout(java.net.Socket s, long timeoutMillis)(package private) static voidsetSSLParameters(javax.net.ssl.SSLParameters params, SSLParametersImpl impl)(package private) static voidsetSSLParameters(javax.net.ssl.SSLParameters params, SSLParametersImpl impl, AbstractConscryptSocket socket)(package private) static voidsetSSLParameters(javax.net.ssl.SSLParameters params, SSLParametersImpl impl, ConscryptEngine engine)static voidsetup(boolean deprecatedTlsV1, boolean enabledTlsV1)(package private) static booleansupportsConscryptCertStore()(package private) static booleansupportsX509ExtendedTrustManager()(package private) static java.security.spec.AlgorithmParameterSpectoGCMParameterSpec(int tagLenInBits, byte[] iv)Creates a platform version ofGCMParameterSpec.(package private) static javax.net.ssl.SSLEngineunwrapEngine(javax.net.ssl.SSLEngine engine)(package private) static javax.net.ssl.SSLEnginewrapEngine(ConscryptEngine engine)(package private) static javax.net.ssl.SSLSocketFactorywrapSocketFactoryIfNeeded(OpenSSLSocketFactoryImpl factory)Currently we don't wrap anything from the RI.(package private) static javax.net.ssl.SSLSessionwrapSSLSession(ExternalSession sslSession)
-
-
-
Field Detail
-
JAVA_VERSION
private static final int JAVA_VERSION
-
GET_CURVE_NAME_METHOD
private static final java.lang.reflect.Method GET_CURVE_NAME_METHOD
-
DEPRECATED_TLS_V1
private static boolean DEPRECATED_TLS_V1
-
ENABLED_TLS_V1
private static boolean ENABLED_TLS_V1
-
FILTERED_TLS_V1
private static boolean FILTERED_TLS_V1
-
-
Method Detail
-
setup
public static void setup(boolean deprecatedTlsV1, boolean enabledTlsV1)
-
createTempFile
static java.io.File createTempFile(java.lang.String prefix, java.lang.String suffix, java.io.File directory) throws java.io.IOExceptionApproximates the behavior of File.createTempFile without depending on SecureRandom.- Throws:
java.io.IOException
-
getDefaultProviderName
static java.lang.String getDefaultProviderName()
Default name used in theJCE systembyOpenSSLProviderif the default constructor is used.
-
provideTrustManagerByDefault
static boolean provideTrustManagerByDefault()
-
canExecuteExecutable
static boolean canExecuteExecutable(java.io.File file) throws java.io.IOException- Throws:
java.io.IOException
-
getFileDescriptor
static java.io.FileDescriptor getFileDescriptor(java.net.Socket s)
-
getFileDescriptorFromSSLSocket
static java.io.FileDescriptor getFileDescriptorFromSSLSocket(AbstractConscryptSocket socket)
-
getCurveName
static java.lang.String getCurveName(java.security.spec.ECParameterSpec spec)
-
setCurveName
static void setCurveName(java.security.spec.ECParameterSpec spec, java.lang.String curveName)
-
setSocketWriteTimeout
static void setSocketWriteTimeout(java.net.Socket s, long timeoutMillis) throws java.net.SocketException- Throws:
java.net.SocketException
-
setSSLParameters
static void setSSLParameters(javax.net.ssl.SSLParameters params, SSLParametersImpl impl)
-
setSSLParameters
static void setSSLParameters(javax.net.ssl.SSLParameters params, SSLParametersImpl impl, AbstractConscryptSocket socket)
-
getSSLParameters
static void getSSLParameters(javax.net.ssl.SSLParameters params, SSLParametersImpl impl)
-
getSSLParameters
static void getSSLParameters(javax.net.ssl.SSLParameters params, SSLParametersImpl impl, AbstractConscryptSocket socket)
-
setSSLParameters
static void setSSLParameters(javax.net.ssl.SSLParameters params, SSLParametersImpl impl, ConscryptEngine engine)
-
getSSLParameters
static void getSSLParameters(javax.net.ssl.SSLParameters params, SSLParametersImpl impl, ConscryptEngine engine)
-
setEndpointIdentificationAlgorithm
static void setEndpointIdentificationAlgorithm(javax.net.ssl.SSLParameters params, java.lang.String endpointIdentificationAlgorithm)
-
getEndpointIdentificationAlgorithm
static java.lang.String getEndpointIdentificationAlgorithm(javax.net.ssl.SSLParameters params)
-
checkClientTrusted
static void checkClientTrusted(javax.net.ssl.X509TrustManager tm, java.security.cert.X509Certificate[] chain, java.lang.String authType, AbstractConscryptSocket socket) throws java.security.cert.CertificateException- Throws:
java.security.cert.CertificateException
-
checkServerTrusted
static void checkServerTrusted(javax.net.ssl.X509TrustManager tm, java.security.cert.X509Certificate[] chain, java.lang.String authType, AbstractConscryptSocket socket) throws java.security.cert.CertificateException- Throws:
java.security.cert.CertificateException
-
checkClientTrusted
static void checkClientTrusted(javax.net.ssl.X509TrustManager tm, java.security.cert.X509Certificate[] chain, java.lang.String authType, ConscryptEngine engine) throws java.security.cert.CertificateException- Throws:
java.security.cert.CertificateException
-
checkServerTrusted
static void checkServerTrusted(javax.net.ssl.X509TrustManager tm, java.security.cert.X509Certificate[] chain, java.lang.String authType, ConscryptEngine engine) throws java.security.cert.CertificateException- Throws:
java.security.cert.CertificateException
-
isSniEnabledByDefault
static boolean isSniEnabledByDefault()
For unbundled versions, SNI is always enabled by default.
-
wrapEngine
static javax.net.ssl.SSLEngine wrapEngine(ConscryptEngine engine)
-
unwrapEngine
static javax.net.ssl.SSLEngine unwrapEngine(javax.net.ssl.SSLEngine engine)
-
createEngineSocket
static ConscryptEngineSocket createEngineSocket(SSLParametersImpl sslParameters) throws java.io.IOException
- Throws:
java.io.IOException
-
createEngineSocket
static ConscryptEngineSocket createEngineSocket(java.lang.String hostname, int port, SSLParametersImpl sslParameters) throws java.io.IOException
- Throws:
java.io.IOException
-
createEngineSocket
static ConscryptEngineSocket createEngineSocket(java.net.InetAddress address, int port, SSLParametersImpl sslParameters) throws java.io.IOException
- Throws:
java.io.IOException
-
createEngineSocket
static ConscryptEngineSocket createEngineSocket(java.lang.String hostname, int port, java.net.InetAddress clientAddress, int clientPort, SSLParametersImpl sslParameters) throws java.io.IOException
- Throws:
java.io.IOException
-
createEngineSocket
static ConscryptEngineSocket createEngineSocket(java.net.InetAddress address, int port, java.net.InetAddress clientAddress, int clientPort, SSLParametersImpl sslParameters) throws java.io.IOException
- Throws:
java.io.IOException
-
createEngineSocket
static ConscryptEngineSocket createEngineSocket(java.net.Socket socket, java.lang.String hostname, int port, boolean autoClose, SSLParametersImpl sslParameters) throws java.io.IOException
- Throws:
java.io.IOException
-
createFileDescriptorSocket
static ConscryptFileDescriptorSocket createFileDescriptorSocket(SSLParametersImpl sslParameters) throws java.io.IOException
- Throws:
java.io.IOException
-
createFileDescriptorSocket
static ConscryptFileDescriptorSocket createFileDescriptorSocket(java.lang.String hostname, int port, SSLParametersImpl sslParameters) throws java.io.IOException
- Throws:
java.io.IOException
-
createFileDescriptorSocket
static ConscryptFileDescriptorSocket createFileDescriptorSocket(java.net.InetAddress address, int port, SSLParametersImpl sslParameters) throws java.io.IOException
- Throws:
java.io.IOException
-
createFileDescriptorSocket
static ConscryptFileDescriptorSocket createFileDescriptorSocket(java.lang.String hostname, int port, java.net.InetAddress clientAddress, int clientPort, SSLParametersImpl sslParameters) throws java.io.IOException
- Throws:
java.io.IOException
-
createFileDescriptorSocket
static ConscryptFileDescriptorSocket createFileDescriptorSocket(java.net.InetAddress address, int port, java.net.InetAddress clientAddress, int clientPort, SSLParametersImpl sslParameters) throws java.io.IOException
- Throws:
java.io.IOException
-
createFileDescriptorSocket
static ConscryptFileDescriptorSocket createFileDescriptorSocket(java.net.Socket socket, java.lang.String hostname, int port, boolean autoClose, SSLParametersImpl sslParameters) throws java.io.IOException
- Throws:
java.io.IOException
-
wrapSocketFactoryIfNeeded
static javax.net.ssl.SSLSocketFactory wrapSocketFactoryIfNeeded(OpenSSLSocketFactoryImpl factory)
Currently we don't wrap anything from the RI.
-
fromGCMParameterSpec
static GCMParameters fromGCMParameterSpec(java.security.spec.AlgorithmParameterSpec params)
Convert from platform's GCMParameterSpec to our internal version.
-
fromGCMParameters
static java.security.spec.AlgorithmParameterSpec fromGCMParameters(java.security.AlgorithmParameters params)
Convert from an opaque AlgorithmParameters to the platform's GCMParameterSpec.
-
toGCMParameterSpec
static java.security.spec.AlgorithmParameterSpec toGCMParameterSpec(int tagLenInBits, byte[] iv)Creates a platform version ofGCMParameterSpec.
-
closeGuardGet
static java.lang.Object closeGuardGet()
-
closeGuardOpen
static void closeGuardOpen(java.lang.Object guardObj, java.lang.String message)
-
closeGuardClose
static void closeGuardClose(java.lang.Object guardObj)
-
closeGuardWarnIfOpen
static void closeGuardWarnIfOpen(java.lang.Object guardObj)
-
blockGuardOnNetwork
static void blockGuardOnNetwork()
-
oidToAlgorithmName
static java.lang.String oidToAlgorithmName(java.lang.String oid)
OID to Algorithm Name mapping.
-
wrapSSLSession
static javax.net.ssl.SSLSession wrapSSLSession(ExternalSession sslSession)
-
getOriginalHostNameFromInetAddress
public static java.lang.String getOriginalHostNameFromInetAddress(java.net.InetAddress addr)
-
getHostStringFromInetSocketAddress
static java.lang.String getHostStringFromInetSocketAddress(java.net.InetSocketAddress addr)
-
supportsX509ExtendedTrustManager
static boolean supportsX509ExtendedTrustManager()
-
isCTVerificationRequired
public static boolean isCTVerificationRequired(java.lang.String hostname)
Check if SCT verification is required for a given hostname. SCT Verification is enabled usingSecurityproperties. The "conscrypt.ct.enable" property must be true, as well as a per domain property. The reverse notation of the domain name, prefixed with "conscrypt.ct.enforce." is used as the property name. Basic globbing is also supported. For example, for the domain foo.bar.com, the following properties will be looked up, in order of precedence. - conscrypt.ct.enforce.com.bar.foo - conscrypt.ct.enforce.com.bar.* - conscrypt.ct.enforce.com.* - conscrypt.ct.enforce.*
-
reasonCTVerificationRequired
public static CertificateTransparencyVerificationReason reasonCTVerificationRequired(java.lang.String hostname)
-
supportsConscryptCertStore
static boolean supportsConscryptCertStore()
-
getDefaultCertKeyStore
static java.security.KeyStore getDefaultCertKeyStore() throws java.security.KeyStoreException- Throws:
java.security.KeyStoreException
-
newDefaultCertStore
static ConscryptCertStore newDefaultCertStore()
-
newDefaultBlocklist
static CertBlocklist newDefaultBlocklist()
-
newDefaultCertificateTransparency
static CertificateTransparency newDefaultCertificateTransparency()
-
serverNamePermitted
static boolean serverNamePermitted(SSLParametersImpl parameters, java.lang.String serverName)
-
androidSdkInt
private static int androidSdkInt()
{@return the Android SDK int if this is an Android platform, or 0 if it is not}
-
javaVersion
static int javaVersion()
-
javaVersion0
private static int javaVersion0()
-
majorVersionFromJavaSpecificationVersion
private static int majorVersionFromJavaSpecificationVersion()
-
majorVersion
private static int majorVersion(java.lang.String javaSpecVersion)
-
getSystemClassLoader
private static java.lang.ClassLoader getSystemClassLoader()
-
getDefaultHostnameVerifier
public static ConscryptHostnameVerifier getDefaultHostnameVerifier()
-
getMillisSinceBoot
static long getMillisSinceBoot()
-
getStatsLog
public static StatsLog getStatsLog()
-
getStatsSource
public static Source getStatsSource()
-
getUids
public static int[] getUids()
-
isJavaxCertificateSupported
public static boolean isJavaxCertificateSupported()
-
isTlsV1Deprecated
public static boolean isTlsV1Deprecated()
-
isTlsV1Filtered
public static boolean isTlsV1Filtered()
-
isTlsV1Supported
public static boolean isTlsV1Supported()
-
isPakeSupported
public static boolean isPakeSupported()
-
isSdkGreater
public static boolean isSdkGreater(int sdk)
-
-