コード例 #1
0
ファイル: ConnectionSpec.java プロジェクト: luohaohaha/okhttp
  /**
   * Returns a copy of this that omits cipher suites and TLS versions not enabled by {@code
   * sslSocket}.
   */
  private ConnectionSpec supportedSpec(SSLSocket sslSocket, boolean isFallback) {
    String[] cipherSuitesIntersection =
        cipherSuites != null
            ? Util.intersect(String.class, cipherSuites, sslSocket.getEnabledCipherSuites())
            : sslSocket.getEnabledCipherSuites();
    String[] tlsVersionsIntersection =
        tlsVersions != null
            ? Util.intersect(String.class, tlsVersions, sslSocket.getEnabledProtocols())
            : sslSocket.getEnabledProtocols();

    // In accordance with https://tools.ietf.org/html/draft-ietf-tls-downgrade-scsv-00
    // the SCSV cipher is added to signal that a protocol fallback has taken place.
    if (isFallback && contains(sslSocket.getSupportedCipherSuites(), "TLS_FALLBACK_SCSV")) {
      cipherSuitesIntersection = concat(cipherSuitesIntersection, "TLS_FALLBACK_SCSV");
    }

    return new Builder(this)
        .cipherSuites(cipherSuitesIntersection)
        .tlsVersions(tlsVersionsIntersection)
        .build();
  }