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