1 // Copyright 2020 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "net/ssl/ssl_key_logger.h" 6 7 #include "base/check.h" 8 #include "base/no_destructor.h" 9 10 namespace net { 11 12 // static IsActive()13bool SSLKeyLoggerManager::IsActive() { 14 return Get()->ssl_key_logger_ != nullptr; 15 } 16 17 // static SetSSLKeyLogger(std::unique_ptr<SSLKeyLogger> logger)18void SSLKeyLoggerManager::SetSSLKeyLogger( 19 std::unique_ptr<SSLKeyLogger> logger) { 20 DCHECK(!IsActive()); 21 Get()->ssl_key_logger_ = std::move(logger); 22 } 23 24 // static KeyLogCallback(const SSL *,const char * line)25void SSLKeyLoggerManager::KeyLogCallback(const SSL* /*ssl*/, const char* line) { 26 DCHECK(IsActive()); 27 Get()->ssl_key_logger_->WriteLine(line); 28 } 29 30 SSLKeyLoggerManager::SSLKeyLoggerManager() = default; 31 32 // static Get()33SSLKeyLoggerManager* SSLKeyLoggerManager::Get() { 34 static base::NoDestructor<SSLKeyLoggerManager> owner; 35 return owner.get(); 36 } 37 38 } // namespace net 39