tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

FuzzySocketControl.cpp (5136B)


      1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim:set ts=2 sw=2 sts=2 et cindent: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #include "FuzzySocketControl.h"
      8 
      9 #include "FuzzySecurityInfo.h"
     10 #include "ipc/IPCMessageUtils.h"
     11 #include "nsITlsHandshakeListener.h"
     12 #include "sslt.h"
     13 
     14 namespace mozilla {
     15 namespace net {
     16 
     17 FuzzySocketControl::FuzzySocketControl() {}
     18 
     19 FuzzySocketControl::~FuzzySocketControl() {}
     20 
     21 NS_IMPL_ISUPPORTS(FuzzySocketControl, nsITLSSocketControl)
     22 
     23 NS_IMETHODIMP
     24 FuzzySocketControl::GetProviderFlags(uint32_t* aProviderFlags) {
     25  MOZ_CRASH("Unused");
     26  return NS_OK;
     27 }
     28 
     29 NS_IMETHODIMP
     30 FuzzySocketControl::GetKEAUsed(int16_t* aKea) {
     31  // Can be ssl_kea_dh or ssl_kea_ecdh for HTTP2
     32  *aKea = ssl_kea_ecdh;
     33  return NS_OK;
     34 }
     35 
     36 NS_IMETHODIMP
     37 FuzzySocketControl::GetKEAKeyBits(uint32_t* aKeyBits) {
     38  // Must be >= 224 for ecdh and >= 2048 for dh when using HTTP2
     39  *aKeyBits = 256;
     40  return NS_OK;
     41 }
     42 
     43 NS_IMETHODIMP
     44 FuzzySocketControl::GetSSLVersionUsed(int16_t* aSSLVersionUsed) {
     45  // Must be >= TLS 1.2 for HTTP2
     46  *aSSLVersionUsed = nsITLSSocketControl::TLS_VERSION_1_2;
     47  return NS_OK;
     48 }
     49 
     50 NS_IMETHODIMP
     51 FuzzySocketControl::GetSSLVersionOffered(int16_t* aSSLVersionOffered) {
     52  *aSSLVersionOffered = nsITLSSocketControl::TLS_VERSION_1_2;
     53  return NS_OK;
     54 }
     55 
     56 NS_IMETHODIMP
     57 FuzzySocketControl::GetMACAlgorithmUsed(int16_t* aMac) {
     58  // The only valid choice for HTTP2 is SSL_MAC_AEAD
     59  *aMac = nsITLSSocketControl::SSL_MAC_AEAD;
     60  return NS_OK;
     61 }
     62 
     63 bool FuzzySocketControl::GetDenyClientCert() { return false; }
     64 
     65 void FuzzySocketControl::SetDenyClientCert(bool aDenyClientCert) {
     66  // Called by mozilla::net::nsHttpConnection::StartSpdy
     67 }
     68 
     69 NS_IMETHODIMP
     70 FuzzySocketControl::GetClientCertSent(bool* arg) {
     71  *arg = false;
     72  return NS_OK;
     73 }
     74 
     75 NS_IMETHODIMP
     76 FuzzySocketControl::GetFailedVerification(bool* arg) {
     77  *arg = false;
     78  return NS_OK;
     79 }
     80 
     81 NS_IMETHODIMP
     82 FuzzySocketControl::GetAlpnEarlySelection(nsACString& aAlpnSelected) {
     83  // TODO: For now we don't support early selection
     84  return NS_ERROR_NOT_AVAILABLE;
     85 }
     86 
     87 NS_IMETHODIMP
     88 FuzzySocketControl::GetEarlyDataAccepted(bool* aAccepted) {
     89  *aAccepted = false;
     90  return NS_OK;
     91 }
     92 
     93 NS_IMETHODIMP
     94 FuzzySocketControl::DriveHandshake() { return NS_OK; }
     95 
     96 NS_IMETHODIMP
     97 FuzzySocketControl::IsAcceptableForHost(const nsACString& hostname,
     98                                        bool* _retval) {
     99  NS_ENSURE_ARG(_retval);
    100  *_retval = true;
    101  return NS_OK;
    102 }
    103 
    104 NS_IMETHODIMP
    105 FuzzySocketControl::TestJoinConnection(const nsACString& npnProtocol,
    106                                       const nsACString& hostname, int32_t port,
    107                                       bool* _retval) {
    108  *_retval = false;
    109  return NS_OK;
    110 }
    111 
    112 NS_IMETHODIMP
    113 FuzzySocketControl::JoinConnection(const nsACString& npnProtocol,
    114                                   const nsACString& hostname, int32_t port,
    115                                   bool* _retval) {
    116  *_retval = false;
    117  return NS_OK;
    118 }
    119 
    120 NS_IMETHODIMP
    121 FuzzySocketControl::ProxyStartSSL() { return NS_OK; }
    122 
    123 NS_IMETHODIMP
    124 FuzzySocketControl::StartTLS() { return NS_OK; }
    125 
    126 NS_IMETHODIMP
    127 FuzzySocketControl::AsyncStartTLS(JSContext* aCx,
    128                                  mozilla::dom::Promise** aPromise) {
    129  return NS_OK;
    130 }
    131 
    132 NS_IMETHODIMP
    133 FuzzySocketControl::SetNPNList(nsTArray<nsCString>& protocolArray) {
    134  return NS_OK;
    135 }
    136 
    137 NS_IMETHODIMP
    138 FuzzySocketControl::GetEsniTxt(nsACString& aEsniTxt) { return NS_OK; }
    139 
    140 NS_IMETHODIMP
    141 FuzzySocketControl::SetEsniTxt(const nsACString& aEsniTxt) {
    142  MOZ_CRASH("Unused");
    143  return NS_OK;
    144 }
    145 
    146 NS_IMETHODIMP
    147 FuzzySocketControl::GetEchConfig(nsACString& aEchConfig) { return NS_OK; }
    148 
    149 NS_IMETHODIMP
    150 FuzzySocketControl::SetEchConfig(const nsACString& aEchConfig) {
    151  MOZ_CRASH("Unused");
    152  return NS_OK;
    153 }
    154 
    155 NS_IMETHODIMP
    156 FuzzySocketControl::GetRetryEchConfig(nsACString& aEchConfig) { return NS_OK; }
    157 
    158 NS_IMETHODIMP
    159 FuzzySocketControl::GetPeerId(nsACString& aResult) {
    160  aResult.Assign(""_ns);
    161  return NS_OK;
    162 }
    163 
    164 NS_IMETHODIMP FuzzySocketControl::SetHandshakeCallbackListener(
    165    nsITlsHandshakeCallbackListener* callback) {
    166  if (callback) {
    167    callback->HandshakeDone();
    168  }
    169  return NS_OK;
    170 }
    171 
    172 NS_IMETHODIMP
    173 FuzzySocketControl::DisableEarlyData(void) { return NS_ERROR_NOT_IMPLEMENTED; }
    174 
    175 NS_IMETHODIMP FuzzySocketControl::GetSecurityInfo(
    176    nsITransportSecurityInfo** aSecurityInfo) {
    177  nsCOMPtr<nsITransportSecurityInfo> securityInfo(new FuzzySecurityInfo());
    178  securityInfo.forget(aSecurityInfo);
    179  return NS_OK;
    180 }
    181 
    182 NS_IMETHODIMP
    183 FuzzySocketControl::AsyncGetSecurityInfo(JSContext* aCx,
    184                                         mozilla::dom::Promise** aPromise) {
    185  return NS_ERROR_NOT_IMPLEMENTED;
    186 }
    187 
    188 NS_IMETHODIMP FuzzySocketControl::Claim() { return NS_OK; }
    189 
    190 NS_IMETHODIMP FuzzySocketControl::SetBrowserId(uint64_t) { return NS_OK; }
    191 
    192 NS_IMETHODIMP FuzzySocketControl::GetBrowserId(uint64_t*) {
    193  MOZ_CRASH("Unused");
    194  return NS_ERROR_NOT_IMPLEMENTED;
    195 }
    196 
    197 }  // namespace net
    198 }  // namespace mozilla