Browse Source

Add SSL_CIPHER_get_kx_name.

This is needed by Android because it passes this string to a handshake
callback. It's implemented in Android's OpenSSL in this patch:
  https://android.googlesource.com/platform/external/openssl.git/+/master/patches/0003-jsse.patch

(Note that it's called |SSL_authentication_method| there.)

I didn't format this function in OpenSSL style because it's crazy and
because we'll probably clang-format ssl/ soon.

Change-Id: I865540511b50859c339da5d76ce37810449aa444
kris/onging/CECPQ3_patch15
Adam Langley 10 years ago
parent
commit
f1df2b3fbf
2 changed files with 46 additions and 0 deletions
  1. +3
    -0
      include/openssl/ssl.h
  2. +43
    -0
      ssl/ssl_ciph.c

+ 3
- 0
include/openssl/ssl.h View File

@@ -1950,6 +1950,9 @@ OPENSSL_EXPORT const SSL_CIPHER *SSL_get_current_cipher(const SSL *s);
OPENSSL_EXPORT int SSL_CIPHER_get_bits(const SSL_CIPHER *c,int *alg_bits);
OPENSSL_EXPORT const char * SSL_CIPHER_get_version(const SSL_CIPHER *c);
OPENSSL_EXPORT const char * SSL_CIPHER_get_name(const SSL_CIPHER *c);
/* SSL_CIPHER_get_kx_name returns a string that describes the key-exchange
* method used by |c|. For example, "ECDHE-ECDSA". */
OPENSSL_EXPORT const char * SSL_CIPHER_get_kx_name(const SSL_CIPHER *cipher);
OPENSSL_EXPORT unsigned long SSL_CIPHER_get_id(const SSL_CIPHER *c);

OPENSSL_EXPORT int SSL_get_fd(const SSL *s);


+ 43
- 0
ssl/ssl_ciph.c View File

@@ -1742,6 +1742,49 @@ const char *SSL_CIPHER_get_name(const SSL_CIPHER *c)
return("(NONE)");
}

const char *SSL_CIPHER_get_kx_name(const SSL_CIPHER *cipher) {
if (cipher == NULL) {
return "";
}

switch (cipher->algorithm_mkey) {
case SSL_kRSA:
return SSL_TXT_RSA;
case SSL_kDHr:
return SSL_TXT_DH "_" SSL_TXT_RSA;
case SSL_kDHd:
return SSL_TXT_DH "_" SSL_TXT_DSS;
case SSL_kEDH:
switch (cipher->algorithm_auth) {
case SSL_aDSS:
return "DHE_" SSL_TXT_DSS;
case SSL_aRSA:
return "DHE_" SSL_TXT_RSA;
case SSL_aNULL:
return SSL_TXT_DH "_anon";
default:
return "UNKNOWN";
}
case SSL_kECDHr:
return SSL_TXT_ECDH "_" SSL_TXT_RSA;
case SSL_kECDHe:
return SSL_TXT_ECDH "_" SSL_TXT_ECDSA;
case SSL_kEECDH:
switch (cipher->algorithm_auth) {
case SSL_aECDSA:
return "ECDHE_" SSL_TXT_ECDSA;
case SSL_aRSA:
return "ECDHE_" SSL_TXT_RSA;
case SSL_aNULL:
return SSL_TXT_ECDH "_anon";
default:
return "UNKNOWN";
}
default:
return "UNKNOWN";
}
}

/* number of bits for symmetric cipher */
int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits)
{


Loading…
Cancel
Save