Browse Source

Move the SSL_eNULL special-case into the matching function.

This avoids needing to keep track of which rules do and don't need it.

Change-Id: Id086b0622305f7f4acd3892f5d24d8e0c970febb
Reviewed-on: https://boringssl-review.googlesource.com/22468
Commit-Queue: Steven Valdez <svaldez@google.com>
Reviewed-by: Steven Valdez <svaldez@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
kris/onging/CECPQ3_patch15
David Benjamin 7 years ago
committed by CQ bot account: commit-bot@chromium.org
parent
commit
3b903f252a
1 changed files with 13 additions and 11 deletions
  1. +13
    -11
      ssl/ssl_cipher.cc

+ 13
- 11
ssl/ssl_cipher.cc View File

@@ -578,7 +578,7 @@ typedef struct cipher_alias_st {


static const CIPHER_ALIAS kCipherAliases[] = { static const CIPHER_ALIAS kCipherAliases[] = {
// "ALL" doesn't include eNULL. It must be explicitly enabled. // "ALL" doesn't include eNULL. It must be explicitly enabled.
{"ALL", ~0u, ~0u, ~SSL_eNULL, ~0u, 0},
{"ALL", ~0u, ~0u, ~0u, ~0u, 0},


// The "COMPLEMENTOFDEFAULT" rule is omitted. It matches nothing. // The "COMPLEMENTOFDEFAULT" rule is omitted. It matches nothing.


@@ -594,7 +594,7 @@ static const CIPHER_ALIAS kCipherAliases[] = {
{"kPSK", SSL_kPSK, ~0u, ~0u, ~0u, 0}, {"kPSK", SSL_kPSK, ~0u, ~0u, ~0u, 0},


// server authentication aliases // server authentication aliases
{"aRSA", ~0u, SSL_aRSA, ~SSL_eNULL, ~0u, 0},
{"aRSA", ~0u, SSL_aRSA, ~0u, ~0u, 0},
{"aECDSA", ~0u, SSL_aECDSA, ~0u, ~0u, 0}, {"aECDSA", ~0u, SSL_aECDSA, ~0u, ~0u, 0},
{"ECDSA", ~0u, SSL_aECDSA, ~0u, ~0u, 0}, {"ECDSA", ~0u, SSL_aECDSA, ~0u, ~0u, 0},
{"aPSK", ~0u, SSL_aPSK, ~0u, ~0u, 0}, {"aPSK", ~0u, SSL_aPSK, ~0u, ~0u, 0},
@@ -602,7 +602,7 @@ static const CIPHER_ALIAS kCipherAliases[] = {
// aliases combining key exchange and server authentication // aliases combining key exchange and server authentication
{"ECDHE", SSL_kECDHE, ~0u, ~0u, ~0u, 0}, {"ECDHE", SSL_kECDHE, ~0u, ~0u, ~0u, 0},
{"EECDH", SSL_kECDHE, ~0u, ~0u, ~0u, 0}, {"EECDH", SSL_kECDHE, ~0u, ~0u, ~0u, 0},
{"RSA", SSL_kRSA, SSL_aRSA, ~SSL_eNULL, ~0u, 0},
{"RSA", SSL_kRSA, SSL_aRSA, ~0u, ~0u, 0},
{"PSK", SSL_kPSK, SSL_aPSK, ~0u, ~0u, 0}, {"PSK", SSL_kPSK, SSL_aPSK, ~0u, ~0u, 0},


// symmetric encryption aliases // symmetric encryption aliases
@@ -614,20 +614,20 @@ static const CIPHER_ALIAS kCipherAliases[] = {
{"CHACHA20", ~0u, ~0u, SSL_CHACHA20POLY1305, ~0u, 0}, {"CHACHA20", ~0u, ~0u, SSL_CHACHA20POLY1305, ~0u, 0},


// MAC aliases // MAC aliases
{"SHA1", ~0u, ~0u, ~SSL_eNULL, SSL_SHA1, 0},
{"SHA", ~0u, ~0u, ~SSL_eNULL, SSL_SHA1, 0},
{"SHA1", ~0u, ~0u, ~0u, SSL_SHA1, 0},
{"SHA", ~0u, ~0u, ~0u, SSL_SHA1, 0},
{"SHA256", ~0u, ~0u, ~0u, SSL_SHA256, 0}, {"SHA256", ~0u, ~0u, ~0u, SSL_SHA256, 0},
{"SHA384", ~0u, ~0u, ~0u, SSL_SHA384, 0}, {"SHA384", ~0u, ~0u, ~0u, SSL_SHA384, 0},


// Legacy protocol minimum version aliases. "TLSv1" is intentionally the // Legacy protocol minimum version aliases. "TLSv1" is intentionally the
// same as "SSLv3". // same as "SSLv3".
{"SSLv3", ~0u, ~0u, ~SSL_eNULL, ~0u, SSL3_VERSION},
{"TLSv1", ~0u, ~0u, ~SSL_eNULL, ~0u, SSL3_VERSION},
{"TLSv1.2", ~0u, ~0u, ~SSL_eNULL, ~0u, TLS1_2_VERSION},
{"SSLv3", ~0u, ~0u, ~0u, ~0u, SSL3_VERSION},
{"TLSv1", ~0u, ~0u, ~0u, ~0u, SSL3_VERSION},
{"TLSv1.2", ~0u, ~0u, ~0u, ~0u, TLS1_2_VERSION},


// Legacy strength classes. // Legacy strength classes.
{"HIGH", ~0u, ~0u, ~SSL_eNULL, ~0u, 0},
{"FIPS", ~0u, ~0u, ~SSL_eNULL, ~0u, 0},
{"HIGH", ~0u, ~0u, ~0u, ~0u, 0},
{"FIPS", ~0u, ~0u, ~0u, ~0u, 0},
}; };


static const size_t kCipherAliasesLen = OPENSSL_ARRAY_SIZE(kCipherAliases); static const size_t kCipherAliasesLen = OPENSSL_ARRAY_SIZE(kCipherAliases);
@@ -918,7 +918,9 @@ static void ssl_cipher_apply_rule(
!(alg_auth & cp->algorithm_auth) || !(alg_auth & cp->algorithm_auth) ||
!(alg_enc & cp->algorithm_enc) || !(alg_enc & cp->algorithm_enc) ||
!(alg_mac & cp->algorithm_mac) || !(alg_mac & cp->algorithm_mac) ||
(min_version != 0 && SSL_CIPHER_get_min_version(cp) != min_version)) {
(min_version != 0 && SSL_CIPHER_get_min_version(cp) != min_version) ||
// The NULL cipher must be selected explicitly.
cp->algorithm_enc == SSL_eNULL) {
continue; continue;
} }
} }


Loading…
Cancel
Save