LCOV - code coverage report
Current view: top level - envoy/secret - secret_provider.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 1 2 50.0 %
Date: 2024-01-05 06:35:25 Functions: 1 8 12.5 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include <functional>
       4             : 
       5             : #include "envoy/common/callback.h"
       6             : #include "envoy/common/pure.h"
       7             : #include "envoy/extensions/transport_sockets/tls/v3/cert.pb.h"
       8             : #include "envoy/init/target.h"
       9             : #include "envoy/ssl/certificate_validation_context_config.h"
      10             : #include "envoy/ssl/tls_certificate_config.h"
      11             : 
      12             : namespace Envoy {
      13             : namespace Secret {
      14             : 
      15             : /**
      16             :  * A secret provider for each kind of secret.
      17             :  */
      18             : template <class SecretType> class SecretProvider {
      19             : public:
      20          70 :   virtual ~SecretProvider() = default;
      21             : 
      22             :   /**
      23             :    * @return the secret. Returns nullptr if the secret is not ready.
      24             :    */
      25             :   virtual const SecretType* secret() const PURE;
      26             : 
      27             :   /**
      28             :    * Add secret validation callback into secret provider.
      29             :    * It is safe to call this method by main thread and callback is safe to be invoked
      30             :    * on main thread.
      31             :    * @param callback callback that is executed by secret provider.
      32             :    * @return CallbackHandle the handle which can remove that validation callback.
      33             :    */
      34             :   ABSL_MUST_USE_RESULT virtual Common::CallbackHandlePtr
      35             :   addValidationCallback(std::function<void(const SecretType&)> callback) PURE;
      36             : 
      37             :   /**
      38             :    * Add secret update callback into secret provider.
      39             :    * It is safe to call this method by main thread and callback is safe to be invoked
      40             :    * on main thread.
      41             :    * @param callback callback that is executed by secret provider.
      42             :    * @return CallbackHandle the handle which can remove that update callback.
      43             :    */
      44             :   ABSL_MUST_USE_RESULT virtual Common::CallbackHandlePtr
      45             :   addUpdateCallback(std::function<void()> callback) PURE;
      46             : 
      47             :   /**
      48             :    * @return const Init::Target* A shared init target that can be used by multiple init managers.
      49             :    * nullptr if the provider isn't dynamic.
      50             :    */
      51           0 :   virtual const Init::Target* initTarget() { return nullptr; }
      52             : };
      53             : 
      54             : using TlsCertificatePtr =
      55             :     std::unique_ptr<envoy::extensions::transport_sockets::tls::v3::TlsCertificate>;
      56             : using CertificateValidationContextPtr =
      57             :     std::unique_ptr<envoy::extensions::transport_sockets::tls::v3::CertificateValidationContext>;
      58             : using TlsSessionTicketKeysPtr =
      59             :     std::unique_ptr<envoy::extensions::transport_sockets::tls::v3::TlsSessionTicketKeys>;
      60             : using GenericSecretPtr =
      61             :     std::unique_ptr<envoy::extensions::transport_sockets::tls::v3::GenericSecret>;
      62             : 
      63             : using TlsCertificateConfigProvider =
      64             :     SecretProvider<envoy::extensions::transport_sockets::tls::v3::TlsCertificate>;
      65             : using TlsCertificateConfigProviderSharedPtr = std::shared_ptr<TlsCertificateConfigProvider>;
      66             : 
      67             : using CertificateValidationContextConfigProvider =
      68             :     SecretProvider<envoy::extensions::transport_sockets::tls::v3::CertificateValidationContext>;
      69             : using CertificateValidationContextConfigProviderSharedPtr =
      70             :     std::shared_ptr<CertificateValidationContextConfigProvider>;
      71             : 
      72             : using TlsSessionTicketKeysConfigProvider =
      73             :     SecretProvider<envoy::extensions::transport_sockets::tls::v3::TlsSessionTicketKeys>;
      74             : using TlsSessionTicketKeysConfigProviderSharedPtr =
      75             :     std::shared_ptr<TlsSessionTicketKeysConfigProvider>;
      76             : 
      77             : using GenericSecretConfigProvider =
      78             :     SecretProvider<envoy::extensions::transport_sockets::tls::v3::GenericSecret>;
      79             : using GenericSecretConfigProviderSharedPtr = std::shared_ptr<GenericSecretConfigProvider>;
      80             : 
      81             : } // namespace Secret
      82             : } // namespace Envoy

Generated by: LCOV version 1.15