/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include
#include
#include
#include
#include
#include
namespace Aws
{
namespace ACMPCA
{
/**
* This is the Amazon Web Services Private Certificate Authority API
* Reference. It provides descriptions, syntax, and usage examples for each of
* the actions and data types involved in creating and managing a private
* certificate authority (CA) for your organization.
The documentation for
* each action shows the API request parameters and the JSON response.
* Alternatively, you can use one of the Amazon Web Services SDKs to access an API
* that is tailored to the programming language or platform that you prefer. For
* more information, see Amazon Web
* Services SDKs.
Each Amazon Web Services Private CA API operation has
* a quota that determines the number of times the operation can be called per
* second. Amazon Web Services Private CA throttles API requests at different rates
* depending on the operation. Throttling means that Amazon Web Services Private CA
* rejects an otherwise valid request because the request exceeds the operation's
* quota for the number of requests per second. When a request is throttled, Amazon
* Web Services Private CA returns a ThrottlingException
* error. Amazon Web Services Private CA does not guarantee a minimum request rate
* for APIs.
To see an up-to-date list of your Amazon Web Services Private
* CA quotas, or to request a quota increase, log into your Amazon Web Services
* account and visit the Service Quotas
* console.
*/
class AWS_ACMPCA_API ACMPCAClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods
{
public:
typedef Aws::Client::AWSJsonClient BASECLASS;
static const char* SERVICE_NAME;
static const char* ALLOCATION_TAG;
typedef ACMPCAClientConfiguration ClientConfigurationType;
typedef ACMPCAEndpointProvider EndpointProviderType;
/**
* Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
ACMPCAClient(const Aws::ACMPCA::ACMPCAClientConfiguration& clientConfiguration = Aws::ACMPCA::ACMPCAClientConfiguration(),
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG));
/**
* Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
ACMPCAClient(const Aws::Auth::AWSCredentials& credentials,
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG),
const Aws::ACMPCA::ACMPCAClientConfiguration& clientConfiguration = Aws::ACMPCA::ACMPCAClientConfiguration());
/**
* Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
* the default http client factory will be used
*/
ACMPCAClient(const std::shared_ptr& credentialsProvider,
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG),
const Aws::ACMPCA::ACMPCAClientConfiguration& clientConfiguration = Aws::ACMPCA::ACMPCAClientConfiguration());
/* Legacy constructors due deprecation */
/**
* Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
ACMPCAClient(const Aws::Client::ClientConfiguration& clientConfiguration);
/**
* Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
ACMPCAClient(const Aws::Auth::AWSCredentials& credentials,
const Aws::Client::ClientConfiguration& clientConfiguration);
/**
* Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
* the default http client factory will be used
*/
ACMPCAClient(const std::shared_ptr& credentialsProvider,
const Aws::Client::ClientConfiguration& clientConfiguration);
/* End of legacy constructors due deprecation */
virtual ~ACMPCAClient();
/**
* Creates a root or subordinate private certificate authority (CA). You must
* specify the CA configuration, an optional configuration for Online Certificate
* Status Protocol (OCSP) and/or a certificate revocation list (CRL), the CA type,
* and an optional idempotency token to avoid accidental creation of multiple CAs.
* The CA configuration specifies the name of the algorithm and key size to be used
* to create the CA private key, the type of signing algorithm that the CA uses,
* and X.500 subject information. The OCSP configuration can optionally specify a
* custom URL for the OCSP responder. The CRL configuration specifies the CRL
* expiration period in days (the validity period of the CRL), the Amazon S3 bucket
* that will contain the CRL, and a CNAME alias for the S3 bucket that is included
* in certificates issued by the CA. If successful, this action returns the Amazon
* Resource Name (ARN) of the CA.
Both Amazon Web Services Private CA
* and the IAM principal must have permission to write to the S3 bucket that you
* specify. If the IAM principal making the call does not have permission to write
* to the bucket, then an exception is thrown. For more information, see Access
* policies for CRLs in Amazon S3.
Amazon Web Services Private
* CA assets that are stored in Amazon S3 can be protected with encryption. For
* more information, see Encrypting
* Your CRLs.
See Also:
AWS
* API Reference
*/
virtual Model::CreateCertificateAuthorityOutcome CreateCertificateAuthority(const Model::CreateCertificateAuthorityRequest& request) const;
/**
* A Callable wrapper for CreateCertificateAuthority that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::CreateCertificateAuthorityOutcomeCallable CreateCertificateAuthorityCallable(const CreateCertificateAuthorityRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::CreateCertificateAuthority, request);
}
/**
* An Async wrapper for CreateCertificateAuthority that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void CreateCertificateAuthorityAsync(const CreateCertificateAuthorityRequestT& request, const CreateCertificateAuthorityResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::CreateCertificateAuthority, request, handler, context);
}
/**
* Creates an audit report that lists every time that your CA private key is
* used. The report is saved in the Amazon S3 bucket that you specify on input. The
* IssueCertificate
* and RevokeCertificate
* actions use the private key.
Both Amazon Web Services Private CA
* and the IAM principal must have permission to write to the S3 bucket that you
* specify. If the IAM principal making the call does not have permission to write
* to the bucket, then an exception is thrown. For more information, see Access
* policies for CRLs in Amazon S3.
Amazon Web Services Private
* CA assets that are stored in Amazon S3 can be protected with encryption. For
* more information, see Encrypting
* Your Audit Reports.
You can generate a maximum of one report
* every 30 minutes.
See Also:
AWS
* API Reference
*/
virtual Model::CreateCertificateAuthorityAuditReportOutcome CreateCertificateAuthorityAuditReport(const Model::CreateCertificateAuthorityAuditReportRequest& request) const;
/**
* A Callable wrapper for CreateCertificateAuthorityAuditReport that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::CreateCertificateAuthorityAuditReportOutcomeCallable CreateCertificateAuthorityAuditReportCallable(const CreateCertificateAuthorityAuditReportRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::CreateCertificateAuthorityAuditReport, request);
}
/**
* An Async wrapper for CreateCertificateAuthorityAuditReport that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void CreateCertificateAuthorityAuditReportAsync(const CreateCertificateAuthorityAuditReportRequestT& request, const CreateCertificateAuthorityAuditReportResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::CreateCertificateAuthorityAuditReport, request, handler, context);
}
/**
* Grants one or more permissions on a private CA to the Certificate Manager
* (ACM) service principal (acm.amazonaws.com
). These permissions
* allow ACM to issue and renew ACM certificates that reside in the same Amazon Web
* Services account as the CA.
You can list current permissions with the ListPermissions
* action and revoke them with the DeletePermission
* action.
About Permissions
-
If the
* private CA and the certificates it issues reside in the same account, you can
* use CreatePermission
to grant permissions for ACM to carry out
* automatic certificate renewals.
-
For automatic certificate
* renewal to succeed, the ACM service principal needs permissions to create,
* retrieve, and list certificates.
-
If the private CA and the ACM
* certificates reside in different accounts, then permissions cannot be used to
* enable automatic renewals. Instead, the ACM certificate owner must set up a
* resource-based policy to enable cross-account issuance and renewals. For more
* information, see Using
* a Resource Based Policy with Amazon Web Services Private CA.
*
See Also:
AWS
* API Reference
*/
virtual Model::CreatePermissionOutcome CreatePermission(const Model::CreatePermissionRequest& request) const;
/**
* A Callable wrapper for CreatePermission that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::CreatePermissionOutcomeCallable CreatePermissionCallable(const CreatePermissionRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::CreatePermission, request);
}
/**
* An Async wrapper for CreatePermission that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void CreatePermissionAsync(const CreatePermissionRequestT& request, const CreatePermissionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::CreatePermission, request, handler, context);
}
/**
* Deletes a private certificate authority (CA). You must provide the Amazon
* Resource Name (ARN) of the private CA that you want to delete. You can find the
* ARN by calling the ListCertificateAuthorities
* action.
Deleting a CA will invalidate other CAs and certificates
* below it in your CA hierarchy.
Before you can delete a CA that
* you have created and activated, you must disable it. To do this, call the UpdateCertificateAuthority
* action and set the CertificateAuthorityStatus parameter to
* DISABLED
.
Additionally, you can delete a CA if you are
* waiting for it to be created (that is, the status of the CA is
* CREATING
). You can also delete it if the CA has been created but
* you haven't yet imported the signed certificate into Amazon Web Services Private
* CA (that is, the status of the CA is PENDING_CERTIFICATE
).
* When you successfully call DeleteCertificateAuthority,
* the CA's status changes to DELETED
. However, the CA won't be
* permanently deleted until the restoration period has passed. By default, if you
* do not set the PermanentDeletionTimeInDays
parameter, the CA
* remains restorable for 30 days. You can set the parameter from 7 to 30 days. The
* DescribeCertificateAuthority
* action returns the time remaining in the restoration window of a private CA in
* the DELETED
state. To restore an eligible CA, call the RestoreCertificateAuthority
* action.
See Also:
AWS
* API Reference
*/
virtual Model::DeleteCertificateAuthorityOutcome DeleteCertificateAuthority(const Model::DeleteCertificateAuthorityRequest& request) const;
/**
* A Callable wrapper for DeleteCertificateAuthority that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::DeleteCertificateAuthorityOutcomeCallable DeleteCertificateAuthorityCallable(const DeleteCertificateAuthorityRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::DeleteCertificateAuthority, request);
}
/**
* An Async wrapper for DeleteCertificateAuthority that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void DeleteCertificateAuthorityAsync(const DeleteCertificateAuthorityRequestT& request, const DeleteCertificateAuthorityResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::DeleteCertificateAuthority, request, handler, context);
}
/**
* Revokes permissions on a private CA granted to the Certificate Manager (ACM)
* service principal (acm.amazonaws.com).
These permissions allow ACM to
* issue and renew ACM certificates that reside in the same Amazon Web Services
* account as the CA. If you revoke these permissions, ACM will no longer renew the
* affected certificates automatically.
Permissions can be granted with the
* CreatePermission
* action and listed with the ListPermissions
* action.
About Permissions
-
If the
* private CA and the certificates it issues reside in the same account, you can
* use CreatePermission
to grant permissions for ACM to carry out
* automatic certificate renewals.
-
For automatic certificate
* renewal to succeed, the ACM service principal needs permissions to create,
* retrieve, and list certificates.
-
If the private CA and the ACM
* certificates reside in different accounts, then permissions cannot be used to
* enable automatic renewals. Instead, the ACM certificate owner must set up a
* resource-based policy to enable cross-account issuance and renewals. For more
* information, see Using
* a Resource Based Policy with Amazon Web Services Private CA.
*
See Also:
AWS
* API Reference
*/
virtual Model::DeletePermissionOutcome DeletePermission(const Model::DeletePermissionRequest& request) const;
/**
* A Callable wrapper for DeletePermission that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::DeletePermissionOutcomeCallable DeletePermissionCallable(const DeletePermissionRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::DeletePermission, request);
}
/**
* An Async wrapper for DeletePermission that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void DeletePermissionAsync(const DeletePermissionRequestT& request, const DeletePermissionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::DeletePermission, request, handler, context);
}
/**
* Deletes the resource-based policy attached to a private CA. Deletion will
* remove any access that the policy has granted. If there is no policy attached to
* the private CA, this action will return successful.
If you delete a
* policy that was applied through Amazon Web Services Resource Access Manager
* (RAM), the CA will be removed from all shares in which it was included.
* The Certificate Manager Service Linked Role that the policy supports is not
* affected when you delete the policy.
The current policy can be shown
* with GetPolicy
* and updated with PutPolicy.
* About Policies
-
A policy grants access
* on a private CA to an Amazon Web Services customer account, to Amazon Web
* Services Organizations, or to an Amazon Web Services Organizations unit.
* Policies are under the control of a CA administrator. For more information, see
* Using
* a Resource Based Policy with Amazon Web Services Private CA.
-
*
A policy permits a user of Certificate Manager (ACM) to issue ACM
* certificates signed by a CA in another account.
-
For ACM to
* manage automatic renewal of these certificates, the ACM user must configure a
* Service Linked Role (SLR). The SLR allows the ACM service to assume the identity
* of the user, subject to confirmation against the Amazon Web Services Private CA
* policy. For more information, see Using a
* Service Linked Role with ACM.
-
Updates made in Amazon Web
* Services Resource Manager (RAM) are reflected in policies. For more information,
* see Attach
* a Policy for Cross-Account Access.
See Also:
AWS
* API Reference
*/
virtual Model::DeletePolicyOutcome DeletePolicy(const Model::DeletePolicyRequest& request) const;
/**
* A Callable wrapper for DeletePolicy that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::DeletePolicyOutcomeCallable DeletePolicyCallable(const DeletePolicyRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::DeletePolicy, request);
}
/**
* An Async wrapper for DeletePolicy that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void DeletePolicyAsync(const DeletePolicyRequestT& request, const DeletePolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::DeletePolicy, request, handler, context);
}
/**
* Lists information about your private certificate authority (CA) or one that
* has been shared with you. You specify the private CA on input by its ARN (Amazon
* Resource Name). The output contains the status of your CA. This can be any of
* the following:
-
CREATING
- Amazon Web Services
* Private CA is creating your private certificate authority.
-
* PENDING_CERTIFICATE
- The certificate is pending. You must use your
* Amazon Web Services Private CA-hosted or on-premises root or subordinate CA to
* sign your private CA CSR and then import it into Amazon Web Services Private CA.
*
-
ACTIVE
- Your private CA is active.
* -
DISABLED
- Your private CA has been disabled.
* -
EXPIRED
- Your private CA certificate has expired.
* -
FAILED
- Your private CA has failed. Your CA can
* fail because of problems such a network outage or back-end Amazon Web Services
* failure or other errors. A failed CA can never return to the pending state. You
* must create a new CA.
-
DELETED
- Your private CA
* is within the restoration period, after which it is permanently deleted. The
* length of time remaining in the CA's restoration period is also included in this
* action's output.
See Also:
AWS
* API Reference
*/
virtual Model::DescribeCertificateAuthorityOutcome DescribeCertificateAuthority(const Model::DescribeCertificateAuthorityRequest& request) const;
/**
* A Callable wrapper for DescribeCertificateAuthority that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::DescribeCertificateAuthorityOutcomeCallable DescribeCertificateAuthorityCallable(const DescribeCertificateAuthorityRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::DescribeCertificateAuthority, request);
}
/**
* An Async wrapper for DescribeCertificateAuthority that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void DescribeCertificateAuthorityAsync(const DescribeCertificateAuthorityRequestT& request, const DescribeCertificateAuthorityResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::DescribeCertificateAuthority, request, handler, context);
}
/**
* Lists information about a specific audit report created by calling the CreateCertificateAuthorityAuditReport
* action. Audit information is created every time the certificate authority (CA)
* private key is used. The private key is used when you call the IssueCertificate
* action or the RevokeCertificate
* action.
See Also:
AWS
* API Reference
*/
virtual Model::DescribeCertificateAuthorityAuditReportOutcome DescribeCertificateAuthorityAuditReport(const Model::DescribeCertificateAuthorityAuditReportRequest& request) const;
/**
* A Callable wrapper for DescribeCertificateAuthorityAuditReport that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::DescribeCertificateAuthorityAuditReportOutcomeCallable DescribeCertificateAuthorityAuditReportCallable(const DescribeCertificateAuthorityAuditReportRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::DescribeCertificateAuthorityAuditReport, request);
}
/**
* An Async wrapper for DescribeCertificateAuthorityAuditReport that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void DescribeCertificateAuthorityAuditReportAsync(const DescribeCertificateAuthorityAuditReportRequestT& request, const DescribeCertificateAuthorityAuditReportResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::DescribeCertificateAuthorityAuditReport, request, handler, context);
}
/**
* Retrieves a certificate from your private CA or one that has been shared with
* you. The ARN of the certificate is returned when you call the IssueCertificate
* action. You must specify both the ARN of your private CA and the ARN of the
* issued certificate when calling the GetCertificate action. You can
* retrieve the certificate if it is in the ISSUED state. You can call the
* CreateCertificateAuthorityAuditReport
* action to create a report that contains information about all of the
* certificates issued and revoked by your private CA.
See Also:
* AWS
* API Reference
*/
virtual Model::GetCertificateOutcome GetCertificate(const Model::GetCertificateRequest& request) const;
/**
* A Callable wrapper for GetCertificate that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::GetCertificateOutcomeCallable GetCertificateCallable(const GetCertificateRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::GetCertificate, request);
}
/**
* An Async wrapper for GetCertificate that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void GetCertificateAsync(const GetCertificateRequestT& request, const GetCertificateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::GetCertificate, request, handler, context);
}
/**
* Retrieves the certificate and certificate chain for your private certificate
* authority (CA) or one that has been shared with you. Both the certificate and
* the chain are base64 PEM-encoded. The chain does not include the CA certificate.
* Each certificate in the chain signs the one before it.
See Also:
* AWS
* API Reference
*/
virtual Model::GetCertificateAuthorityCertificateOutcome GetCertificateAuthorityCertificate(const Model::GetCertificateAuthorityCertificateRequest& request) const;
/**
* A Callable wrapper for GetCertificateAuthorityCertificate that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::GetCertificateAuthorityCertificateOutcomeCallable GetCertificateAuthorityCertificateCallable(const GetCertificateAuthorityCertificateRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::GetCertificateAuthorityCertificate, request);
}
/**
* An Async wrapper for GetCertificateAuthorityCertificate that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void GetCertificateAuthorityCertificateAsync(const GetCertificateAuthorityCertificateRequestT& request, const GetCertificateAuthorityCertificateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::GetCertificateAuthorityCertificate, request, handler, context);
}
/**
* Retrieves the certificate signing request (CSR) for your private certificate
* authority (CA). The CSR is created when you call the CreateCertificateAuthority
* action. Sign the CSR with your Amazon Web Services Private CA-hosted or
* on-premises root or subordinate CA. Then import the signed certificate back into
* Amazon Web Services Private CA by calling the ImportCertificateAuthorityCertificate
* action. The CSR is returned as a base64 PEM-encoded string.
See
* Also:
AWS
* API Reference
*/
virtual Model::GetCertificateAuthorityCsrOutcome GetCertificateAuthorityCsr(const Model::GetCertificateAuthorityCsrRequest& request) const;
/**
* A Callable wrapper for GetCertificateAuthorityCsr that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::GetCertificateAuthorityCsrOutcomeCallable GetCertificateAuthorityCsrCallable(const GetCertificateAuthorityCsrRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::GetCertificateAuthorityCsr, request);
}
/**
* An Async wrapper for GetCertificateAuthorityCsr that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void GetCertificateAuthorityCsrAsync(const GetCertificateAuthorityCsrRequestT& request, const GetCertificateAuthorityCsrResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::GetCertificateAuthorityCsr, request, handler, context);
}
/**
* Retrieves the resource-based policy attached to a private CA. If either the
* private CA resource or the policy cannot be found, this action returns a
* ResourceNotFoundException
.
The policy can be attached or
* updated with PutPolicy
* and removed with DeletePolicy.
* About Policies
-
A policy grants access
* on a private CA to an Amazon Web Services customer account, to Amazon Web
* Services Organizations, or to an Amazon Web Services Organizations unit.
* Policies are under the control of a CA administrator. For more information, see
* Using
* a Resource Based Policy with Amazon Web Services Private CA.
-
*
A policy permits a user of Certificate Manager (ACM) to issue ACM
* certificates signed by a CA in another account.
-
For ACM to
* manage automatic renewal of these certificates, the ACM user must configure a
* Service Linked Role (SLR). The SLR allows the ACM service to assume the identity
* of the user, subject to confirmation against the Amazon Web Services Private CA
* policy. For more information, see Using a
* Service Linked Role with ACM.
-
Updates made in Amazon Web
* Services Resource Manager (RAM) are reflected in policies. For more information,
* see Attach
* a Policy for Cross-Account Access.
See Also:
AWS
* API Reference
*/
virtual Model::GetPolicyOutcome GetPolicy(const Model::GetPolicyRequest& request) const;
/**
* A Callable wrapper for GetPolicy that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::GetPolicyOutcomeCallable GetPolicyCallable(const GetPolicyRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::GetPolicy, request);
}
/**
* An Async wrapper for GetPolicy that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void GetPolicyAsync(const GetPolicyRequestT& request, const GetPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::GetPolicy, request, handler, context);
}
/**
* Imports a signed private CA certificate into Amazon Web Services Private CA.
* This action is used when you are using a chain of trust whose root is located
* outside Amazon Web Services Private CA. Before you can call this action, the
* following preparations must in place:
-
In Amazon Web Services
* Private CA, call the CreateCertificateAuthority
* action to create the private CA that you plan to back with the imported
* certificate.
-
Call the GetCertificateAuthorityCsr
* action to generate a certificate signing request (CSR).
-
Sign
* the CSR using a root or intermediate CA hosted by either an on-premises PKI
* hierarchy or by a commercial CA.
-
Create a certificate chain
* and copy the signed certificate and the certificate chain to your working
* directory.
Amazon Web Services Private CA supports three
* scenarios for installing a CA certificate:
-
Installing a
* certificate for a root CA hosted by Amazon Web Services Private CA.
* -
Installing a subordinate CA certificate whose parent authority is hosted
* by Amazon Web Services Private CA.
-
Installing a subordinate CA
* certificate whose parent authority is externally hosted.
The
* following additional requirements apply when you import a CA certificate.
* -
Only a self-signed certificate can be imported as a root CA.
* -
A self-signed certificate cannot be imported as a subordinate
* CA.
-
Your certificate chain must not include the private CA
* certificate that you are importing.
-
Your root CA must be the
* last certificate in your chain. The subordinate certificate, if any, that your
* root CA signed must be next to last. The subordinate certificate signed by the
* preceding subordinate CA must come next, and so on until your chain is built.
*
-
The chain must be PEM-encoded.
-
The maximum
* allowed size of a certificate is 32 KB.
-
The maximum allowed
* size of a certificate chain is 2 MB.
Enforcement of
* Critical Constraints
Amazon Web Services Private CA allows the
* following extensions to be marked critical in the imported CA certificate or
* chain.
-
Basic constraints (must be marked critical)
* -
Subject alternative names
-
Key usage
* -
Extended key usage
-
Authority key identifier
* -
Subject key identifier
-
Issuer alternative name
* -
Subject directory attributes
-
Subject information
* access
-
Certificate policies
-
Policy
* mappings
-
Inhibit anyPolicy
Amazon Web
* Services Private CA rejects the following extensions when they are marked
* critical in an imported CA certificate or chain.
See Also:
AWS
* API Reference
*/
virtual Model::ImportCertificateAuthorityCertificateOutcome ImportCertificateAuthorityCertificate(const Model::ImportCertificateAuthorityCertificateRequest& request) const;
/**
* A Callable wrapper for ImportCertificateAuthorityCertificate that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ImportCertificateAuthorityCertificateOutcomeCallable ImportCertificateAuthorityCertificateCallable(const ImportCertificateAuthorityCertificateRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::ImportCertificateAuthorityCertificate, request);
}
/**
* An Async wrapper for ImportCertificateAuthorityCertificate that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ImportCertificateAuthorityCertificateAsync(const ImportCertificateAuthorityCertificateRequestT& request, const ImportCertificateAuthorityCertificateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::ImportCertificateAuthorityCertificate, request, handler, context);
}
/**
* Uses your private certificate authority (CA), or one that has been shared
* with you, to issue a client certificate. This action returns the Amazon Resource
* Name (ARN) of the certificate. You can retrieve the certificate by calling the
* GetCertificate
* action and specifying the ARN.
You cannot use the ACM
* ListCertificateAuthorities action to retrieve the ARNs of the
* certificates that you issue by using Amazon Web Services Private CA.
* See Also:
AWS
* API Reference
*/
virtual Model::IssueCertificateOutcome IssueCertificate(const Model::IssueCertificateRequest& request) const;
/**
* A Callable wrapper for IssueCertificate that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::IssueCertificateOutcomeCallable IssueCertificateCallable(const IssueCertificateRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::IssueCertificate, request);
}
/**
* An Async wrapper for IssueCertificate that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void IssueCertificateAsync(const IssueCertificateRequestT& request, const IssueCertificateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::IssueCertificate, request, handler, context);
}
/**
* Lists the private certificate authorities that you created by using the CreateCertificateAuthority
* action.
See Also:
AWS
* API Reference
*/
virtual Model::ListCertificateAuthoritiesOutcome ListCertificateAuthorities(const Model::ListCertificateAuthoritiesRequest& request) const;
/**
* A Callable wrapper for ListCertificateAuthorities that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ListCertificateAuthoritiesOutcomeCallable ListCertificateAuthoritiesCallable(const ListCertificateAuthoritiesRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::ListCertificateAuthorities, request);
}
/**
* An Async wrapper for ListCertificateAuthorities that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ListCertificateAuthoritiesAsync(const ListCertificateAuthoritiesRequestT& request, const ListCertificateAuthoritiesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::ListCertificateAuthorities, request, handler, context);
}
/**
* List all permissions on a private CA, if any, granted to the Certificate
* Manager (ACM) service principal (acm.amazonaws.com).
These permissions
* allow ACM to issue and renew ACM certificates that reside in the same Amazon Web
* Services account as the CA.
Permissions can be granted with the CreatePermission
* action and revoked with the DeletePermission
* action.
About Permissions
-
If the
* private CA and the certificates it issues reside in the same account, you can
* use CreatePermission
to grant permissions for ACM to carry out
* automatic certificate renewals.
-
For automatic certificate
* renewal to succeed, the ACM service principal needs permissions to create,
* retrieve, and list certificates.
-
If the private CA and the ACM
* certificates reside in different accounts, then permissions cannot be used to
* enable automatic renewals. Instead, the ACM certificate owner must set up a
* resource-based policy to enable cross-account issuance and renewals. For more
* information, see Using
* a Resource Based Policy with Amazon Web Services Private CA.
*
See Also:
AWS
* API Reference
*/
virtual Model::ListPermissionsOutcome ListPermissions(const Model::ListPermissionsRequest& request) const;
/**
* A Callable wrapper for ListPermissions that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ListPermissionsOutcomeCallable ListPermissionsCallable(const ListPermissionsRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::ListPermissions, request);
}
/**
* An Async wrapper for ListPermissions that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ListPermissionsAsync(const ListPermissionsRequestT& request, const ListPermissionsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::ListPermissions, request, handler, context);
}
/**
* Lists the tags, if any, that are associated with your private CA or one that
* has been shared with you. Tags are labels that you can use to identify and
* organize your CAs. Each tag consists of a key and an optional value. Call the TagCertificateAuthority
* action to add one or more tags to your CA. Call the UntagCertificateAuthority
* action to remove tags.
See Also:
AWS
* API Reference
*/
virtual Model::ListTagsOutcome ListTags(const Model::ListTagsRequest& request) const;
/**
* A Callable wrapper for ListTags that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ListTagsOutcomeCallable ListTagsCallable(const ListTagsRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::ListTags, request);
}
/**
* An Async wrapper for ListTags that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ListTagsAsync(const ListTagsRequestT& request, const ListTagsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::ListTags, request, handler, context);
}
/**
* Attaches a resource-based policy to a private CA.
A policy can also
* be applied by sharing a private CA through Amazon Web Services Resource Access
* Manager (RAM). For more information, see Attach
* a Policy for Cross-Account Access.
The policy can be displayed with
* GetPolicy
* and removed with DeletePolicy.
* About Policies
-
A policy grants access
* on a private CA to an Amazon Web Services customer account, to Amazon Web
* Services Organizations, or to an Amazon Web Services Organizations unit.
* Policies are under the control of a CA administrator. For more information, see
* Using
* a Resource Based Policy with Amazon Web Services Private CA.
-
*
A policy permits a user of Certificate Manager (ACM) to issue ACM
* certificates signed by a CA in another account.
-
For ACM to
* manage automatic renewal of these certificates, the ACM user must configure a
* Service Linked Role (SLR). The SLR allows the ACM service to assume the identity
* of the user, subject to confirmation against the Amazon Web Services Private CA
* policy. For more information, see Using a
* Service Linked Role with ACM.
-
Updates made in Amazon Web
* Services Resource Manager (RAM) are reflected in policies. For more information,
* see Attach
* a Policy for Cross-Account Access.
See Also:
AWS
* API Reference
*/
virtual Model::PutPolicyOutcome PutPolicy(const Model::PutPolicyRequest& request) const;
/**
* A Callable wrapper for PutPolicy that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::PutPolicyOutcomeCallable PutPolicyCallable(const PutPolicyRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::PutPolicy, request);
}
/**
* An Async wrapper for PutPolicy that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void PutPolicyAsync(const PutPolicyRequestT& request, const PutPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::PutPolicy, request, handler, context);
}
/**
* Restores a certificate authority (CA) that is in the DELETED
* state. You can restore a CA during the period that you defined in the
* PermanentDeletionTimeInDays parameter of the DeleteCertificateAuthority
* action. Currently, you can specify 7 to 30 days. If you did not specify a
* PermanentDeletionTimeInDays value, by default you can restore the CA at
* any time in a 30 day period. You can check the time remaining in the restoration
* period of a private CA in the DELETED
state by calling the DescribeCertificateAuthority
* or ListCertificateAuthorities
* actions. The status of a restored CA is set to its pre-deletion status when the
* RestoreCertificateAuthority action returns. To change its status to
* ACTIVE
, call the UpdateCertificateAuthority
* action. If the private CA was in the PENDING_CERTIFICATE
state at
* deletion, you must use the ImportCertificateAuthorityCertificate
* action to import a certificate authority into the private CA before it can be
* activated. You cannot restore a CA after the restoration period has
* ended.
See Also:
AWS
* API Reference
*/
virtual Model::RestoreCertificateAuthorityOutcome RestoreCertificateAuthority(const Model::RestoreCertificateAuthorityRequest& request) const;
/**
* A Callable wrapper for RestoreCertificateAuthority that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::RestoreCertificateAuthorityOutcomeCallable RestoreCertificateAuthorityCallable(const RestoreCertificateAuthorityRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::RestoreCertificateAuthority, request);
}
/**
* An Async wrapper for RestoreCertificateAuthority that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void RestoreCertificateAuthorityAsync(const RestoreCertificateAuthorityRequestT& request, const RestoreCertificateAuthorityResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::RestoreCertificateAuthority, request, handler, context);
}
/**
* Revokes a certificate that was issued inside Amazon Web Services Private CA.
* If you enable a certificate revocation list (CRL) when you create or update your
* private CA, information about the revoked certificates will be included in the
* CRL. Amazon Web Services Private CA writes the CRL to an S3 bucket that you
* specify. A CRL is typically updated approximately 30 minutes after a certificate
* is revoked. If for any reason the CRL update fails, Amazon Web Services Private
* CA attempts makes further attempts every 15 minutes. With Amazon CloudWatch, you
* can create alarms for the metrics CRLGenerated
and
* MisconfiguredCRLBucket
. For more information, see Supported
* CloudWatch Metrics.
Both Amazon Web Services Private CA and
* the IAM principal must have permission to write to the S3 bucket that you
* specify. If the IAM principal making the call does not have permission to write
* to the bucket, then an exception is thrown. For more information, see Access
* policies for CRLs in Amazon S3.
Amazon Web Services Private
* CA also writes revocation information to the audit report. For more information,
* see CreateCertificateAuthorityAuditReport.
* You cannot revoke a root CA self-signed certificate.
* See Also:
AWS
* API Reference
*/
virtual Model::RevokeCertificateOutcome RevokeCertificate(const Model::RevokeCertificateRequest& request) const;
/**
* A Callable wrapper for RevokeCertificate that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::RevokeCertificateOutcomeCallable RevokeCertificateCallable(const RevokeCertificateRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::RevokeCertificate, request);
}
/**
* An Async wrapper for RevokeCertificate that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void RevokeCertificateAsync(const RevokeCertificateRequestT& request, const RevokeCertificateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::RevokeCertificate, request, handler, context);
}
/**
* Adds one or more tags to your private CA. Tags are labels that you can use to
* identify and organize your Amazon Web Services resources. Each tag consists of a
* key and an optional value. You specify the private CA on input by its Amazon
* Resource Name (ARN). You specify the tag by using a key-value pair. You can
* apply a tag to just one private CA if you want to identify a specific
* characteristic of that CA, or you can apply the same tag to multiple private CAs
* if you want to filter for a common relationship among those CAs. To remove one
* or more tags, use the UntagCertificateAuthority
* action. Call the ListTags
* action to see what tags are associated with your CA.
To attach
* tags to a private CA during the creation procedure, a CA administrator must
* first associate an inline IAM policy with the
* CreateCertificateAuthority
action and explicitly allow tagging. For
* more information, see Attaching
* tags to a CA at the time of creation.
See Also:
AWS
* API Reference
*/
virtual Model::TagCertificateAuthorityOutcome TagCertificateAuthority(const Model::TagCertificateAuthorityRequest& request) const;
/**
* A Callable wrapper for TagCertificateAuthority that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::TagCertificateAuthorityOutcomeCallable TagCertificateAuthorityCallable(const TagCertificateAuthorityRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::TagCertificateAuthority, request);
}
/**
* An Async wrapper for TagCertificateAuthority that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void TagCertificateAuthorityAsync(const TagCertificateAuthorityRequestT& request, const TagCertificateAuthorityResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::TagCertificateAuthority, request, handler, context);
}
/**
* Remove one or more tags from your private CA. A tag consists of a key-value
* pair. If you do not specify the value portion of the tag when calling this
* action, the tag will be removed regardless of value. If you specify a value, the
* tag is removed only if it is associated with the specified value. To add tags to
* a private CA, use the TagCertificateAuthority.
* Call the ListTags
* action to see what tags are associated with your CA.
See Also:
* AWS
* API Reference
*/
virtual Model::UntagCertificateAuthorityOutcome UntagCertificateAuthority(const Model::UntagCertificateAuthorityRequest& request) const;
/**
* A Callable wrapper for UntagCertificateAuthority that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::UntagCertificateAuthorityOutcomeCallable UntagCertificateAuthorityCallable(const UntagCertificateAuthorityRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::UntagCertificateAuthority, request);
}
/**
* An Async wrapper for UntagCertificateAuthority that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void UntagCertificateAuthorityAsync(const UntagCertificateAuthorityRequestT& request, const UntagCertificateAuthorityResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::UntagCertificateAuthority, request, handler, context);
}
/**
* Updates the status or configuration of a private certificate authority (CA).
* Your private CA must be in the ACTIVE
or DISABLED
* state before you can update it. You can disable a private CA that is in the
* ACTIVE
state or make a CA that is in the DISABLED
* state active again.
Both Amazon Web Services Private CA and the
* IAM principal must have permission to write to the S3 bucket that you specify.
* If the IAM principal making the call does not have permission to write to the
* bucket, then an exception is thrown. For more information, see Access
* policies for CRLs in Amazon S3.
See Also:
AWS
* API Reference
*/
virtual Model::UpdateCertificateAuthorityOutcome UpdateCertificateAuthority(const Model::UpdateCertificateAuthorityRequest& request) const;
/**
* A Callable wrapper for UpdateCertificateAuthority that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::UpdateCertificateAuthorityOutcomeCallable UpdateCertificateAuthorityCallable(const UpdateCertificateAuthorityRequestT& request) const
{
return SubmitCallable(&ACMPCAClient::UpdateCertificateAuthority, request);
}
/**
* An Async wrapper for UpdateCertificateAuthority that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void UpdateCertificateAuthorityAsync(const UpdateCertificateAuthorityRequestT& request, const UpdateCertificateAuthorityResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ACMPCAClient::UpdateCertificateAuthority, request, handler, context);
}
void OverrideEndpoint(const Aws::String& endpoint);
std::shared_ptr& accessEndpointProvider();
private:
friend class Aws::Client::ClientWithAsyncTemplateMethods;
void init(const ACMPCAClientConfiguration& clientConfiguration);
ACMPCAClientConfiguration m_clientConfiguration;
std::shared_ptr m_executor;
std::shared_ptr m_endpointProvider;
};
} // namespace ACMPCA
} // namespace Aws