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/. */
7 #include "FuzzySocketControl.h"
9 #include "FuzzySecurityInfo.h"
10 #include "ipc/IPCMessageUtils.h"
11 #include "nsITlsHandshakeListener.h"
17 FuzzySocketControl::FuzzySocketControl() {}
19 FuzzySocketControl::~FuzzySocketControl() {}
21 NS_IMPL_ISUPPORTS(FuzzySocketControl
, nsITLSSocketControl
)
24 FuzzySocketControl::GetProviderFlags(uint32_t* aProviderFlags
) {
30 FuzzySocketControl::GetKEAUsed(int16_t* aKea
) {
31 // Can be ssl_kea_dh or ssl_kea_ecdh for HTTP2
37 FuzzySocketControl::GetKEAKeyBits(uint32_t* aKeyBits
) {
38 // Must be >= 224 for ecdh and >= 2048 for dh when using HTTP2
44 FuzzySocketControl::GetSSLVersionUsed(int16_t* aSSLVersionUsed
) {
45 // Must be >= TLS 1.2 for HTTP2
46 *aSSLVersionUsed
= nsITLSSocketControl::TLS_VERSION_1_2
;
51 FuzzySocketControl::GetSSLVersionOffered(int16_t* aSSLVersionOffered
) {
52 *aSSLVersionOffered
= nsITLSSocketControl::TLS_VERSION_1_2
;
57 FuzzySocketControl::GetMACAlgorithmUsed(int16_t* aMac
) {
58 // The only valid choice for HTTP2 is SSL_MAC_AEAD
59 *aMac
= nsITLSSocketControl::SSL_MAC_AEAD
;
63 bool FuzzySocketControl::GetDenyClientCert() { return false; }
65 void FuzzySocketControl::SetDenyClientCert(bool aDenyClientCert
) {
66 // Called by mozilla::net::nsHttpConnection::StartSpdy
70 FuzzySocketControl::GetClientCertSent(bool* arg
) {
76 FuzzySocketControl::GetFailedVerification(bool* arg
) {
82 FuzzySocketControl::GetAlpnEarlySelection(nsACString
& aAlpnSelected
) {
83 // TODO: For now we don't support early selection
84 return NS_ERROR_NOT_AVAILABLE
;
88 FuzzySocketControl::GetEarlyDataAccepted(bool* aAccepted
) {
94 FuzzySocketControl::DriveHandshake() { return NS_OK
; }
97 FuzzySocketControl::IsAcceptableForHost(const nsACString
& hostname
,
99 NS_ENSURE_ARG(_retval
);
105 FuzzySocketControl::TestJoinConnection(const nsACString
& npnProtocol
,
106 const nsACString
& hostname
, int32_t port
,
113 FuzzySocketControl::JoinConnection(const nsACString
& npnProtocol
,
114 const nsACString
& hostname
, int32_t port
,
121 FuzzySocketControl::ProxyStartSSL() { return NS_OK
; }
124 FuzzySocketControl::StartTLS() { return NS_OK
; }
127 FuzzySocketControl::AsyncStartTLS(JSContext
* aCx
,
128 mozilla::dom::Promise
** aPromise
) {
133 FuzzySocketControl::SetNPNList(nsTArray
<nsCString
>& protocolArray
) {
138 FuzzySocketControl::GetEsniTxt(nsACString
& aEsniTxt
) { return NS_OK
; }
141 FuzzySocketControl::SetEsniTxt(const nsACString
& aEsniTxt
) {
147 FuzzySocketControl::GetEchConfig(nsACString
& aEchConfig
) { return NS_OK
; }
150 FuzzySocketControl::SetEchConfig(const nsACString
& aEchConfig
) {
156 FuzzySocketControl::GetRetryEchConfig(nsACString
& aEchConfig
) { return NS_OK
; }
159 FuzzySocketControl::GetPeerId(nsACString
& aResult
) {
160 aResult
.Assign(""_ns
);
164 NS_IMETHODIMP
FuzzySocketControl::SetHandshakeCallbackListener(
165 nsITlsHandshakeCallbackListener
* callback
) {
167 callback
->HandshakeDone();
173 FuzzySocketControl::DisableEarlyData(void) { return NS_ERROR_NOT_IMPLEMENTED
; }
175 NS_IMETHODIMP
FuzzySocketControl::GetSecurityInfo(
176 nsITransportSecurityInfo
** aSecurityInfo
) {
177 nsCOMPtr
<nsITransportSecurityInfo
> securityInfo(new FuzzySecurityInfo());
178 securityInfo
.forget(aSecurityInfo
);
183 FuzzySocketControl::AsyncGetSecurityInfo(JSContext
* aCx
,
184 mozilla::dom::Promise
** aPromise
) {
185 return NS_ERROR_NOT_IMPLEMENTED
;
188 NS_IMETHODIMP
FuzzySocketControl::Claim() { return NS_OK
; }
190 NS_IMETHODIMP
FuzzySocketControl::SetBrowserId(uint64_t) { return NS_OK
; }
192 NS_IMETHODIMP
FuzzySocketControl::GetBrowserId(uint64_t*) {
194 return NS_ERROR_NOT_IMPLEMENTED
;
198 } // namespace mozilla