15#ifndef AWS_ENCRYPTION_SDK_KMS_KEYRING_H
16#define AWS_ENCRYPTION_SDK_KMS_KEYRING_H
18#include <aws/cryptosdk/cpp/exports.h>
20#include <aws/core/Aws.h>
21#include <aws/core/utils/Outcome.h>
22#include <aws/core/utils/memory/stl/AWSMap.h>
23#include <aws/core/utils/memory/stl/AWSSet.h>
24#include <aws/core/utils/memory/stl/AWSString.h>
25#include <aws/core/utils/memory/stl/AWSVector.h>
27#include <aws/kms/KMSClient.h>
131 const Aws::String &generator_key_id,
const Aws::Vector<Aws::String> &additional_key_ids = {})
const;
172 std::shared_ptr<KMS::KMSClient> kms_client;
173 Aws::Vector<Aws::String> grant_tokens;
174 std::shared_ptr<ClientSupplier> client_supplier;
193 const Aws::String ®ion, std::function<
void()> &report_success) = 0;
201 static std::shared_ptr<CachingClientSupplier>
Create();
209 std::shared_ptr<KMS::KMSClient>
GetClient(
const Aws::String ®ion, std::function<
void()> &report_success);
216 Aws::Map<Aws::String, std::shared_ptr<Aws::KMS::KMSClient>>
cache;
228 static std::shared_ptr<SingleClientSupplier>
Create(
const std::shared_ptr<KMS::KMSClient> &kms_client);
233 std::shared_ptr<KMS::KMSClient>
GetClient(
const Aws::String &, std::function<
void()> &report_success);
238 std::shared_ptr<KMS::KMSClient> kms_client;
270 std::shared_ptr<DiscoveryFilter>
Build()
const;
273 Aws::String partition;
274 Aws::Set<Aws::String> account_ids;
299 : partition(partition), account_ids(account_ids) {}
302 Aws::String partition;
303 Aws::Set<Aws::String> account_ids;
aws_cryptosdk_keyring * BuildDiscovery(std::shared_ptr< KmsKeyring::DiscoveryFilter > discovery_filter) const
aws_cryptosdk_keyring * Build(const Aws::String &generator_key_id, const Aws::Vector< Aws::String > &additional_key_ids={}) const
Builder & WithClientSupplier(const std::shared_ptr< ClientSupplier > &client_supplier)
Builder & WithKmsClient(const std::shared_ptr< KMS::KMSClient > &kms_client)
Builder & WithGrantToken(const Aws::String &grant_token)
aws_cryptosdk_keyring * BuildDiscovery() const
Builder & WithGrantTokens(const Aws::Vector< Aws::String > &grant_tokens)
static std::shared_ptr< CachingClientSupplier > Create()
std::shared_ptr< KMS::KMSClient > GetClient(const Aws::String ®ion, std::function< void()> &report_success)
Aws::Map< Aws::String, std::shared_ptr< Aws::KMS::KMSClient > > cache
virtual std::shared_ptr< KMS::KMSClient > GetClient(const Aws::String ®ion, std::function< void()> &report_success)=0
virtual ~ClientSupplier()
std::shared_ptr< DiscoveryFilter > Build() const
DiscoveryFilterBuilder(Aws::String partition)
DiscoveryFilterBuilder & AddAccount(const Aws::String &account_id)
DiscoveryFilterBuilder & WithAccounts(const Aws::Vector< Aws::String > &account_ids)
DiscoveryFilterBuilder & AddAccounts(const Aws::Vector< Aws::String > &account_ids)
bool IsAuthorized(const Aws::String &key_arn) const
DiscoveryFilter(Aws::String partition, Aws::Set< Aws::String > account_ids)
static DiscoveryFilterBuilder Builder(Aws::String partition)
SingleClientSupplier(const std::shared_ptr< KMS::KMSClient > &kms_client)
std::shared_ptr< KMS::KMSClient > GetClient(const Aws::String &, std::function< void()> &report_success)
static std::shared_ptr< SingleClientSupplier > Create(const std::shared_ptr< KMS::KMSClient > &kms_client)