12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- #include "WeakCryptoOverride.h"
- #include "MainThreadUtils.h"
- #include "SharedSSLState.h"
- #include "nss.h"
- using namespace mozilla;
- using namespace mozilla::psm;
- NS_IMPL_ISUPPORTS(WeakCryptoOverride,
- nsIWeakCryptoOverride)
- WeakCryptoOverride::WeakCryptoOverride()
- {
- }
- WeakCryptoOverride::~WeakCryptoOverride()
- {
- }
- NS_IMETHODIMP
- WeakCryptoOverride::AddWeakCryptoOverride(const nsACString& aHostName,
- bool aPrivate, bool aTemporary)
- {
- if (!NS_IsMainThread()) {
- return NS_ERROR_NOT_SAME_THREAD;
- }
- SharedSSLState* sharedState = aPrivate ? PrivateSSLState()
- : PublicSSLState();
- if (!sharedState) {
- return NS_ERROR_NOT_AVAILABLE;
- }
- const nsPromiseFlatCString& host = PromiseFlatCString(aHostName);
- sharedState->IOLayerHelpers().addInsecureFallbackSite(host, aTemporary);
- return NS_OK;
- }
- NS_IMETHODIMP
- WeakCryptoOverride::RemoveWeakCryptoOverride(const nsACString& aHostName,
- int32_t aPort, bool aPrivate)
- {
- if (!NS_IsMainThread()) {
- return NS_ERROR_NOT_SAME_THREAD;
- }
- SharedSSLState* sharedState = aPrivate ? PrivateSSLState()
- : PublicSSLState();
- if (!sharedState) {
- return NS_ERROR_NOT_AVAILABLE;
- }
- const nsPromiseFlatCString& host = PromiseFlatCString(aHostName);
- sharedState->IOLayerHelpers().removeInsecureFallbackSite(host, aPort);
- // Some servers will fail with SSL_ERROR_ILLEGAL_PARAMETER_ALERT
- // unless the session cache is cleared.
- SSL_ClearSessionCache();
- return NS_OK;
- }
|