external/conscrypt: add SSL_CIPHER_get_kx_name
This will be used by a future change to avoid needing to know the
OpenSSL-internal SSL_aRSA (etc) constants.
Bug: 20521989
Change-Id: I99d83005530f81956d102426fe28beeaed058cea
diff --git a/src/main/java/org/conscrypt/NativeCrypto.java b/src/main/java/org/conscrypt/NativeCrypto.java
index ecd176f..81986f2 100644
--- a/src/main/java/org/conscrypt/NativeCrypto.java
+++ b/src/main/java/org/conscrypt/NativeCrypto.java
@@ -1373,4 +1373,6 @@
+ SSL3_RT_HEADER_LENGTH;
public static native long ERR_peek_last_error();
+
+ public static native String SSL_CIPHER_get_kx_name(long cipherAddress);
}
diff --git a/src/main/native/org_conscrypt_NativeCrypto.cpp b/src/main/native/org_conscrypt_NativeCrypto.cpp
index 1bf5590..4dc22dc 100644
--- a/src/main/native/org_conscrypt_NativeCrypto.cpp
+++ b/src/main/native/org_conscrypt_NativeCrypto.cpp
@@ -10086,6 +10086,19 @@
return ERR_peek_last_error();
}
+static jstring NativeCrypto_SSL_CIPHER_get_kx_name(JNIEnv* env, jclass, jlong cipher_address) {
+ const SSL_CIPHER* cipher = to_SSL_CIPHER(env, cipher_address, true);
+ const char *kx_name = NULL;
+
+#if defined(OPENSSL_IS_BORINGSSL)
+ kx_name = SSL_CIPHER_get_kx_name(cipher);
+#else
+ kx_name = SSL_CIPHER_authentication_method(cipher);
+#endif
+
+ return env->NewStringUTF(kx_name);
+}
+
#define FILE_DESCRIPTOR "Ljava/io/FileDescriptor;"
#define SSL_CALLBACKS "L" TO_STRING(JNI_JARJAR_PREFIX) "org/conscrypt/NativeCrypto$SSLHandshakeCallbacks;"
#define REF_EC_GROUP "L" TO_STRING(JNI_JARJAR_PREFIX) "org/conscrypt/NativeRef$EC_GROUP;"
@@ -10320,6 +10333,7 @@
NATIVE_METHOD(NativeCrypto, SSL_set_alpn_protos, "(J[B)I"),
NATIVE_METHOD(NativeCrypto, SSL_get0_alpn_selected, "(J)[B"),
NATIVE_METHOD(NativeCrypto, ERR_peek_last_error, "()J"),
+ NATIVE_METHOD(NativeCrypto, SSL_CIPHER_get_kx_name, "(J)Ljava/lang/String;"),
};
static jclass getGlobalRefToClass(JNIEnv* env, const char* className) {