@@ -83,6 +83,14 @@ jmethodID g_SSLParametersGetProtocols;
83
83
jmethodID g_SSLParametersSetApplicationProtocols ;
84
84
jmethodID g_SSLParametersSetServerNames ;
85
85
86
+ // com/android/org/conscrypt/OpenSSLEngineImpl
87
+ jclass g_ConscryptOpenSSLEngineImplClass ;
88
+ jfieldID g_ConscryptOpenSSLEngineImplSslParametersField ;
89
+
90
+ // com/android/org/conscrypt/SSLParametersImpl
91
+ jclass g_ConscryptSSLParametersImplClass ;
92
+ jmethodID g_ConscryptSSLParametersImplSetUseSni ;
93
+
86
94
// javax/net/ssl/SSLContext
87
95
jclass g_sslCtxClass ;
88
96
jmethodID g_sslCtxGetDefaultMethod ;
@@ -416,6 +424,7 @@ jmethodID g_SSLEngineBeginHandshake;
416
424
jmethodID g_SSLEngineCloseOutbound ;
417
425
jmethodID g_SSLEngineGetApplicationProtocol ;
418
426
jmethodID g_SSLEngineGetHandshakeStatus ;
427
+ jmethodID g_SSLEngineGetHandshakeSession ;
419
428
jmethodID g_SSLEngineGetSession ;
420
429
jmethodID g_SSLEngineGetSSLParameters ;
421
430
jmethodID g_SSLEngineGetSupportedProtocols ;
@@ -445,6 +454,7 @@ jmethodID g_SSLContextGetDefault;
445
454
jmethodID g_SSLContextGetInstanceMethod ;
446
455
jmethodID g_SSLContextInitMethod ;
447
456
jmethodID g_SSLContextCreateSSLEngineMethod ;
457
+ jmethodID g_SSLContextCreateSSLEngineMethodWithHostAndPort ;
448
458
449
459
// javax/net/ssl/SSLSession
450
460
jclass g_SSLSession ;
@@ -458,6 +468,7 @@ jmethodID g_SSLSessionGetProtocol;
458
468
jclass g_SSLEngineResult ;
459
469
jmethodID g_SSLEngineResultGetStatus ;
460
470
jmethodID g_SSLEngineResultGetHandshakeStatus ;
471
+ bool g_SSLEngineResultStatusLegacyOrder ;
461
472
462
473
// javax/crypto/KeyAgreement
463
474
jclass g_KeyAgreementClass ;
@@ -733,6 +744,15 @@ JNI_OnLoad(JavaVM *vm, void *reserved)
733
744
g_SSLParametersGetProtocols = GetMethod (env , false, g_SSLParametersClass , "getProtocols" , "()[Ljava/lang/String;" );
734
745
g_SSLParametersSetApplicationProtocols = GetOptionalMethod (env , false, g_SSLParametersClass , "setApplicationProtocols" , "([Ljava/lang/String;)V" );
735
746
747
+ g_ConscryptOpenSSLEngineImplClass = GetOptionalClassGRef (env , "com/android/org/conscrypt/OpenSSLEngineImpl" );
748
+ if (g_ConscryptOpenSSLEngineImplClass != NULL )
749
+ {
750
+ g_ConscryptOpenSSLEngineImplSslParametersField = GetField (env , false, g_ConscryptOpenSSLEngineImplClass , "sslParameters" , "Lcom/android/org/conscrypt/SSLParametersImpl;" );
751
+
752
+ g_ConscryptSSLParametersImplClass = GetClassGRef (env , "com/android/org/conscrypt/SSLParametersImpl" );
753
+ g_ConscryptSSLParametersImplSetUseSni = GetMethod (env , false, g_ConscryptSSLParametersImplClass , "setUseSni" , "(Z)V" );
754
+ }
755
+
736
756
g_sslCtxClass = GetClassGRef (env , "javax/net/ssl/SSLContext" );
737
757
g_sslCtxGetDefaultMethod = GetMethod (env , true, g_sslCtxClass , "getDefault" , "()Ljavax/net/ssl/SSLContext;" );
738
758
g_sslCtxGetDefaultSslParamsMethod = GetMethod (env , false, g_sslCtxClass , "getDefaultSSLParameters" , "()Ljavax/net/ssl/SSLParameters;" );
@@ -997,6 +1017,7 @@ JNI_OnLoad(JavaVM *vm, void *reserved)
997
1017
g_SSLEngineGetApplicationProtocol = GetOptionalMethod (env , false, g_SSLEngine , "getApplicationProtocol" , "()Ljava/lang/String;" );
998
1018
g_SSLEngineGetHandshakeStatus = GetMethod (env , false, g_SSLEngine , "getHandshakeStatus" , "()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;" );
999
1019
g_SSLEngineGetSession = GetMethod (env , false, g_SSLEngine , "getSession" , "()Ljavax/net/ssl/SSLSession;" );
1020
+ g_SSLEngineGetHandshakeSession = GetOptionalMethod (env , false, g_SSLEngine , "getHandshakeSession" , "()Ljavax/net/ssl/SSLSession;" );
1000
1021
g_SSLEngineGetSSLParameters = GetMethod (env , false, g_SSLEngine , "getSSLParameters" , "()Ljavax/net/ssl/SSLParameters;" );
1001
1022
g_SSLEngineGetSupportedProtocols = GetMethod (env , false, g_SSLEngine , "getSupportedProtocols" , "()[Ljava/lang/String;" );
1002
1023
g_SSLEngineSetEnabledProtocols = GetMethod (env , false, g_SSLEngine , "setEnabledProtocols" , "([Ljava/lang/String;)V" );
@@ -1023,6 +1044,7 @@ JNI_OnLoad(JavaVM *vm, void *reserved)
1023
1044
g_SSLContextGetInstanceMethod = GetMethod (env , true, g_SSLContext , "getInstance" , "(Ljava/lang/String;)Ljavax/net/ssl/SSLContext;" );
1024
1045
g_SSLContextInitMethod = GetMethod (env , false, g_SSLContext , "init" , "([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V" );
1025
1046
g_SSLContextCreateSSLEngineMethod = GetMethod (env , false, g_SSLContext , "createSSLEngine" , "()Ljavax/net/ssl/SSLEngine;" );
1047
+ g_SSLContextCreateSSLEngineMethodWithHostAndPort = GetMethod (env , false, g_SSLContext , "createSSLEngine" , "(Ljava/lang/String;I)Ljavax/net/ssl/SSLEngine;" );
1026
1048
1027
1049
g_SSLSession = GetClassGRef (env , "javax/net/ssl/SSLSession" );
1028
1050
g_SSLSessionGetApplicationBufferSize = GetMethod (env , false, g_SSLSession , "getApplicationBufferSize" , "()I" );
@@ -1034,6 +1056,7 @@ JNI_OnLoad(JavaVM *vm, void *reserved)
1034
1056
g_SSLEngineResult = GetClassGRef (env , "javax/net/ssl/SSLEngineResult" );
1035
1057
g_SSLEngineResultGetStatus = GetMethod (env , false, g_SSLEngineResult , "getStatus" , "()Ljavax/net/ssl/SSLEngineResult$Status;" );
1036
1058
g_SSLEngineResultGetHandshakeStatus = GetMethod (env , false, g_SSLEngineResult , "getHandshakeStatus" , "()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;" );
1059
+ g_SSLEngineResultStatusLegacyOrder = android_get_device_api_level () < 24 ;
1037
1060
1038
1061
g_KeyAgreementClass = GetClassGRef (env , "javax/crypto/KeyAgreement" );
1039
1062
g_KeyAgreementGetInstance = GetMethod (env , true, g_KeyAgreementClass , "getInstance" , "(Ljava/lang/String;)Ljavax/crypto/KeyAgreement;" );
0 commit comments