aws_sdk_acm/operation/request_certificate/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::request_certificate::_request_certificate_output::RequestCertificateOutputBuilder;
3
4pub use crate::operation::request_certificate::_request_certificate_input::RequestCertificateInputBuilder;
5
6impl crate::operation::request_certificate::builders::RequestCertificateInputBuilder {
7    /// Sends a request with this input using the given client.
8    pub async fn send_with(
9        self,
10        client: &crate::Client,
11    ) -> ::std::result::Result<
12        crate::operation::request_certificate::RequestCertificateOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::request_certificate::RequestCertificateError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.request_certificate();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `RequestCertificate`.
24///
25/// <p>Requests an ACM certificate for use with other Amazon Web Services services. To request an ACM certificate, you must specify a fully qualified domain name (FQDN) in the <code>DomainName</code> parameter. You can also specify additional FQDNs in the <code>SubjectAlternativeNames</code> parameter.</p>
26/// <p>If you are requesting a private certificate, domain validation is not required. If you are requesting a public certificate, each domain name that you specify must be validated to verify that you own or control the domain. You can use <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-dns.html">DNS validation</a> or <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-email.html">email validation</a>. We recommend that you use DNS validation.</p><note>
27/// <p>ACM behavior differs from the <a href="https://datatracker.ietf.org/doc/html/rfc6125#appendix-B.2">RFC 6125</a> specification of the certificate validation process. ACM first checks for a Subject Alternative Name, and, if it finds one, ignores the common name (CN).</p>
28/// </note>
29/// <p>After successful completion of the <code>RequestCertificate</code> action, there is a delay of several seconds before you can retrieve information about the new certificate.</p>
30#[derive(::std::clone::Clone, ::std::fmt::Debug)]
31pub struct RequestCertificateFluentBuilder {
32    handle: ::std::sync::Arc<crate::client::Handle>,
33    inner: crate::operation::request_certificate::builders::RequestCertificateInputBuilder,
34    config_override: ::std::option::Option<crate::config::Builder>,
35}
36impl
37    crate::client::customize::internal::CustomizableSend<
38        crate::operation::request_certificate::RequestCertificateOutput,
39        crate::operation::request_certificate::RequestCertificateError,
40    > for RequestCertificateFluentBuilder
41{
42    fn send(
43        self,
44        config_override: crate::config::Builder,
45    ) -> crate::client::customize::internal::BoxFuture<
46        crate::client::customize::internal::SendResult<
47            crate::operation::request_certificate::RequestCertificateOutput,
48            crate::operation::request_certificate::RequestCertificateError,
49        >,
50    > {
51        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
52    }
53}
54impl RequestCertificateFluentBuilder {
55    /// Creates a new `RequestCertificateFluentBuilder`.
56    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
57        Self {
58            handle,
59            inner: ::std::default::Default::default(),
60            config_override: ::std::option::Option::None,
61        }
62    }
63    /// Access the RequestCertificate as a reference.
64    pub fn as_input(&self) -> &crate::operation::request_certificate::builders::RequestCertificateInputBuilder {
65        &self.inner
66    }
67    /// Sends the request and returns the response.
68    ///
69    /// If an error occurs, an `SdkError` will be returned with additional details that
70    /// can be matched against.
71    ///
72    /// By default, any retryable failures will be retried twice. Retry behavior
73    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
74    /// set when configuring the client.
75    pub async fn send(
76        self,
77    ) -> ::std::result::Result<
78        crate::operation::request_certificate::RequestCertificateOutput,
79        ::aws_smithy_runtime_api::client::result::SdkError<
80            crate::operation::request_certificate::RequestCertificateError,
81            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
82        >,
83    > {
84        let input = self
85            .inner
86            .build()
87            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
88        let runtime_plugins = crate::operation::request_certificate::RequestCertificate::operation_runtime_plugins(
89            self.handle.runtime_plugins.clone(),
90            &self.handle.conf,
91            self.config_override,
92        );
93        crate::operation::request_certificate::RequestCertificate::orchestrate(&runtime_plugins, input).await
94    }
95
96    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
97    pub fn customize(
98        self,
99    ) -> crate::client::customize::CustomizableOperation<
100        crate::operation::request_certificate::RequestCertificateOutput,
101        crate::operation::request_certificate::RequestCertificateError,
102        Self,
103    > {
104        crate::client::customize::CustomizableOperation::new(self)
105    }
106    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
107        self.set_config_override(::std::option::Option::Some(config_override.into()));
108        self
109    }
110
111    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
112        self.config_override = config_override;
113        self
114    }
115    /// <p>Fully qualified domain name (FQDN), such as www.example.com, that you want to secure with an ACM certificate. Use an asterisk (*) to create a wildcard certificate that protects several sites in the same domain. For example, *.example.com protects www.example.com, site.example.com, and images.example.com.</p>
116    /// <p>In compliance with <a href="https://datatracker.ietf.org/doc/html/rfc5280">RFC 5280</a>, the length of the domain name (technically, the Common Name) that you provide cannot exceed 64 octets (characters), including periods. To add a longer domain name, specify it in the Subject Alternative Name field, which supports names up to 253 octets in length.</p>
117    pub fn domain_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
118        self.inner = self.inner.domain_name(input.into());
119        self
120    }
121    /// <p>Fully qualified domain name (FQDN), such as www.example.com, that you want to secure with an ACM certificate. Use an asterisk (*) to create a wildcard certificate that protects several sites in the same domain. For example, *.example.com protects www.example.com, site.example.com, and images.example.com.</p>
122    /// <p>In compliance with <a href="https://datatracker.ietf.org/doc/html/rfc5280">RFC 5280</a>, the length of the domain name (technically, the Common Name) that you provide cannot exceed 64 octets (characters), including periods. To add a longer domain name, specify it in the Subject Alternative Name field, which supports names up to 253 octets in length.</p>
123    pub fn set_domain_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
124        self.inner = self.inner.set_domain_name(input);
125        self
126    }
127    /// <p>Fully qualified domain name (FQDN), such as www.example.com, that you want to secure with an ACM certificate. Use an asterisk (*) to create a wildcard certificate that protects several sites in the same domain. For example, *.example.com protects www.example.com, site.example.com, and images.example.com.</p>
128    /// <p>In compliance with <a href="https://datatracker.ietf.org/doc/html/rfc5280">RFC 5280</a>, the length of the domain name (technically, the Common Name) that you provide cannot exceed 64 octets (characters), including periods. To add a longer domain name, specify it in the Subject Alternative Name field, which supports names up to 253 octets in length.</p>
129    pub fn get_domain_name(&self) -> &::std::option::Option<::std::string::String> {
130        self.inner.get_domain_name()
131    }
132    /// <p>The method you want to use if you are requesting a public certificate to validate that you own or control domain. You can <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-dns.html">validate with DNS</a> or <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-email.html">validate with email</a>. We recommend that you use DNS validation.</p>
133    pub fn validation_method(mut self, input: crate::types::ValidationMethod) -> Self {
134        self.inner = self.inner.validation_method(input);
135        self
136    }
137    /// <p>The method you want to use if you are requesting a public certificate to validate that you own or control domain. You can <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-dns.html">validate with DNS</a> or <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-email.html">validate with email</a>. We recommend that you use DNS validation.</p>
138    pub fn set_validation_method(mut self, input: ::std::option::Option<crate::types::ValidationMethod>) -> Self {
139        self.inner = self.inner.set_validation_method(input);
140        self
141    }
142    /// <p>The method you want to use if you are requesting a public certificate to validate that you own or control domain. You can <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-dns.html">validate with DNS</a> or <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-email.html">validate with email</a>. We recommend that you use DNS validation.</p>
143    pub fn get_validation_method(&self) -> &::std::option::Option<crate::types::ValidationMethod> {
144        self.inner.get_validation_method()
145    }
146    ///
147    /// Appends an item to `SubjectAlternativeNames`.
148    ///
149    /// To override the contents of this collection use [`set_subject_alternative_names`](Self::set_subject_alternative_names).
150    ///
151    /// <p>Additional FQDNs to be included in the Subject Alternative Name extension of the ACM certificate. For example, add the name www.example.net to a certificate for which the <code>DomainName</code> field is www.example.com if users can reach your site by using either name. The maximum number of domain names that you can add to an ACM certificate is 100. However, the initial quota is 10 domain names. If you need more than 10 names, you must request a quota increase. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html">Quotas</a>.</p>
152    /// <p>The maximum length of a SAN DNS name is 253 octets. The name is made up of multiple labels separated by periods. No label can be longer than 63 octets. Consider the following examples:</p>
153    /// <ul>
154    /// <li>
155    /// <p><code>(63 octets).(63 octets).(63 octets).(61 octets)</code> is legal because the total length is 253 octets (63+1+63+1+63+1+61) and no label exceeds 63 octets.</p></li>
156    /// <li>
157    /// <p><code>(64 octets).(63 octets).(63 octets).(61 octets)</code> is not legal because the total length exceeds 253 octets (64+1+63+1+63+1+61) and the first label exceeds 63 octets.</p></li>
158    /// <li>
159    /// <p><code>(63 octets).(63 octets).(63 octets).(62 octets)</code> is not legal because the total length of the DNS name (63+1+63+1+63+1+62) exceeds 253 octets.</p></li>
160    /// </ul>
161    pub fn subject_alternative_names(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
162        self.inner = self.inner.subject_alternative_names(input.into());
163        self
164    }
165    /// <p>Additional FQDNs to be included in the Subject Alternative Name extension of the ACM certificate. For example, add the name www.example.net to a certificate for which the <code>DomainName</code> field is www.example.com if users can reach your site by using either name. The maximum number of domain names that you can add to an ACM certificate is 100. However, the initial quota is 10 domain names. If you need more than 10 names, you must request a quota increase. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html">Quotas</a>.</p>
166    /// <p>The maximum length of a SAN DNS name is 253 octets. The name is made up of multiple labels separated by periods. No label can be longer than 63 octets. Consider the following examples:</p>
167    /// <ul>
168    /// <li>
169    /// <p><code>(63 octets).(63 octets).(63 octets).(61 octets)</code> is legal because the total length is 253 octets (63+1+63+1+63+1+61) and no label exceeds 63 octets.</p></li>
170    /// <li>
171    /// <p><code>(64 octets).(63 octets).(63 octets).(61 octets)</code> is not legal because the total length exceeds 253 octets (64+1+63+1+63+1+61) and the first label exceeds 63 octets.</p></li>
172    /// <li>
173    /// <p><code>(63 octets).(63 octets).(63 octets).(62 octets)</code> is not legal because the total length of the DNS name (63+1+63+1+63+1+62) exceeds 253 octets.</p></li>
174    /// </ul>
175    pub fn set_subject_alternative_names(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
176        self.inner = self.inner.set_subject_alternative_names(input);
177        self
178    }
179    /// <p>Additional FQDNs to be included in the Subject Alternative Name extension of the ACM certificate. For example, add the name www.example.net to a certificate for which the <code>DomainName</code> field is www.example.com if users can reach your site by using either name. The maximum number of domain names that you can add to an ACM certificate is 100. However, the initial quota is 10 domain names. If you need more than 10 names, you must request a quota increase. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html">Quotas</a>.</p>
180    /// <p>The maximum length of a SAN DNS name is 253 octets. The name is made up of multiple labels separated by periods. No label can be longer than 63 octets. Consider the following examples:</p>
181    /// <ul>
182    /// <li>
183    /// <p><code>(63 octets).(63 octets).(63 octets).(61 octets)</code> is legal because the total length is 253 octets (63+1+63+1+63+1+61) and no label exceeds 63 octets.</p></li>
184    /// <li>
185    /// <p><code>(64 octets).(63 octets).(63 octets).(61 octets)</code> is not legal because the total length exceeds 253 octets (64+1+63+1+63+1+61) and the first label exceeds 63 octets.</p></li>
186    /// <li>
187    /// <p><code>(63 octets).(63 octets).(63 octets).(62 octets)</code> is not legal because the total length of the DNS name (63+1+63+1+63+1+62) exceeds 253 octets.</p></li>
188    /// </ul>
189    pub fn get_subject_alternative_names(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
190        self.inner.get_subject_alternative_names()
191    }
192    /// <p>Customer chosen string that can be used to distinguish between calls to <code>RequestCertificate</code>. Idempotency tokens time out after one hour. Therefore, if you call <code>RequestCertificate</code> multiple times with the same idempotency token within one hour, ACM recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, ACM recognizes that you are requesting multiple certificates.</p>
193    pub fn idempotency_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
194        self.inner = self.inner.idempotency_token(input.into());
195        self
196    }
197    /// <p>Customer chosen string that can be used to distinguish between calls to <code>RequestCertificate</code>. Idempotency tokens time out after one hour. Therefore, if you call <code>RequestCertificate</code> multiple times with the same idempotency token within one hour, ACM recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, ACM recognizes that you are requesting multiple certificates.</p>
198    pub fn set_idempotency_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
199        self.inner = self.inner.set_idempotency_token(input);
200        self
201    }
202    /// <p>Customer chosen string that can be used to distinguish between calls to <code>RequestCertificate</code>. Idempotency tokens time out after one hour. Therefore, if you call <code>RequestCertificate</code> multiple times with the same idempotency token within one hour, ACM recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, ACM recognizes that you are requesting multiple certificates.</p>
203    pub fn get_idempotency_token(&self) -> &::std::option::Option<::std::string::String> {
204        self.inner.get_idempotency_token()
205    }
206    ///
207    /// Appends an item to `DomainValidationOptions`.
208    ///
209    /// To override the contents of this collection use [`set_domain_validation_options`](Self::set_domain_validation_options).
210    ///
211    /// <p>The domain name that you want ACM to use to send you emails so that you can validate domain ownership.</p>
212    pub fn domain_validation_options(mut self, input: crate::types::DomainValidationOption) -> Self {
213        self.inner = self.inner.domain_validation_options(input);
214        self
215    }
216    /// <p>The domain name that you want ACM to use to send you emails so that you can validate domain ownership.</p>
217    pub fn set_domain_validation_options(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::DomainValidationOption>>) -> Self {
218        self.inner = self.inner.set_domain_validation_options(input);
219        self
220    }
221    /// <p>The domain name that you want ACM to use to send you emails so that you can validate domain ownership.</p>
222    pub fn get_domain_validation_options(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::DomainValidationOption>> {
223        self.inner.get_domain_validation_options()
224    }
225    /// <p>You can use this parameter to specify whether to add the certificate to a certificate transparency log and export your certificate.</p>
226    /// <p>Certificate transparency makes it possible to detect SSL/TLS certificates that have been mistakenly or maliciously issued. Certificates that have not been logged typically produce an error message in a browser. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-bestpractices.html#best-practices-transparency">Opting Out of Certificate Transparency Logging</a>.</p>
227    /// <p>You can export public ACM certificates to use with Amazon Web Services services as well as outside the Amazon Web Services Cloud. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-exportable-certificates.html">Certificate Manager exportable public certificate</a>.</p>
228    pub fn options(mut self, input: crate::types::CertificateOptions) -> Self {
229        self.inner = self.inner.options(input);
230        self
231    }
232    /// <p>You can use this parameter to specify whether to add the certificate to a certificate transparency log and export your certificate.</p>
233    /// <p>Certificate transparency makes it possible to detect SSL/TLS certificates that have been mistakenly or maliciously issued. Certificates that have not been logged typically produce an error message in a browser. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-bestpractices.html#best-practices-transparency">Opting Out of Certificate Transparency Logging</a>.</p>
234    /// <p>You can export public ACM certificates to use with Amazon Web Services services as well as outside the Amazon Web Services Cloud. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-exportable-certificates.html">Certificate Manager exportable public certificate</a>.</p>
235    pub fn set_options(mut self, input: ::std::option::Option<crate::types::CertificateOptions>) -> Self {
236        self.inner = self.inner.set_options(input);
237        self
238    }
239    /// <p>You can use this parameter to specify whether to add the certificate to a certificate transparency log and export your certificate.</p>
240    /// <p>Certificate transparency makes it possible to detect SSL/TLS certificates that have been mistakenly or maliciously issued. Certificates that have not been logged typically produce an error message in a browser. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-bestpractices.html#best-practices-transparency">Opting Out of Certificate Transparency Logging</a>.</p>
241    /// <p>You can export public ACM certificates to use with Amazon Web Services services as well as outside the Amazon Web Services Cloud. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-exportable-certificates.html">Certificate Manager exportable public certificate</a>.</p>
242    pub fn get_options(&self) -> &::std::option::Option<crate::types::CertificateOptions> {
243        self.inner.get_options()
244    }
245    /// <p>The Amazon Resource Name (ARN) of the private certificate authority (CA) that will be used to issue the certificate. If you do not provide an ARN and you are trying to request a private certificate, ACM will attempt to issue a public certificate. For more information about private CAs, see the <a href="https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html">Amazon Web Services Private Certificate Authority</a> user guide. The ARN must have the following form:</p>
246    /// <p><code>arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012</code></p>
247    pub fn certificate_authority_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
248        self.inner = self.inner.certificate_authority_arn(input.into());
249        self
250    }
251    /// <p>The Amazon Resource Name (ARN) of the private certificate authority (CA) that will be used to issue the certificate. If you do not provide an ARN and you are trying to request a private certificate, ACM will attempt to issue a public certificate. For more information about private CAs, see the <a href="https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html">Amazon Web Services Private Certificate Authority</a> user guide. The ARN must have the following form:</p>
252    /// <p><code>arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012</code></p>
253    pub fn set_certificate_authority_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
254        self.inner = self.inner.set_certificate_authority_arn(input);
255        self
256    }
257    /// <p>The Amazon Resource Name (ARN) of the private certificate authority (CA) that will be used to issue the certificate. If you do not provide an ARN and you are trying to request a private certificate, ACM will attempt to issue a public certificate. For more information about private CAs, see the <a href="https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html">Amazon Web Services Private Certificate Authority</a> user guide. The ARN must have the following form:</p>
258    /// <p><code>arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012</code></p>
259    pub fn get_certificate_authority_arn(&self) -> &::std::option::Option<::std::string::String> {
260        self.inner.get_certificate_authority_arn()
261    }
262    ///
263    /// Appends an item to `Tags`.
264    ///
265    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
266    ///
267    /// <p>One or more resource tags to associate with the certificate.</p>
268    pub fn tags(mut self, input: crate::types::Tag) -> Self {
269        self.inner = self.inner.tags(input);
270        self
271    }
272    /// <p>One or more resource tags to associate with the certificate.</p>
273    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
274        self.inner = self.inner.set_tags(input);
275        self
276    }
277    /// <p>One or more resource tags to associate with the certificate.</p>
278    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
279        self.inner.get_tags()
280    }
281    /// <p>Specifies the algorithm of the public and private key pair that your certificate uses to encrypt data. RSA is the default key algorithm for ACM certificates. Elliptic Curve Digital Signature Algorithm (ECDSA) keys are smaller, offering security comparable to RSA keys but with greater computing efficiency. However, ECDSA is not supported by all network clients. Some Amazon Web Services services may require RSA keys, or only support ECDSA keys of a particular size, while others allow the use of either RSA and ECDSA keys to ensure that compatibility is not broken. Check the requirements for the Amazon Web Services service where you plan to deploy your certificate. For more information about selecting an algorithm, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms">Key algorithms</a>.</p><note>
282    /// <p>Algorithms supported for an ACM certificate request include:</p>
283    /// <ul>
284    /// <li>
285    /// <p><code>RSA_2048</code></p></li>
286    /// <li>
287    /// <p><code>EC_prime256v1</code></p></li>
288    /// <li>
289    /// <p><code>EC_secp384r1</code></p></li>
290    /// </ul>
291    /// <p>Other listed algorithms are for imported certificates only.</p>
292    /// </note> <note>
293    /// <p>When you request a private PKI certificate signed by a CA from Amazon Web Services Private CA, the specified signing algorithm family (RSA or ECDSA) must match the algorithm family of the CA's secret key.</p>
294    /// </note>
295    /// <p>Default: RSA_2048</p>
296    pub fn key_algorithm(mut self, input: crate::types::KeyAlgorithm) -> Self {
297        self.inner = self.inner.key_algorithm(input);
298        self
299    }
300    /// <p>Specifies the algorithm of the public and private key pair that your certificate uses to encrypt data. RSA is the default key algorithm for ACM certificates. Elliptic Curve Digital Signature Algorithm (ECDSA) keys are smaller, offering security comparable to RSA keys but with greater computing efficiency. However, ECDSA is not supported by all network clients. Some Amazon Web Services services may require RSA keys, or only support ECDSA keys of a particular size, while others allow the use of either RSA and ECDSA keys to ensure that compatibility is not broken. Check the requirements for the Amazon Web Services service where you plan to deploy your certificate. For more information about selecting an algorithm, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms">Key algorithms</a>.</p><note>
301    /// <p>Algorithms supported for an ACM certificate request include:</p>
302    /// <ul>
303    /// <li>
304    /// <p><code>RSA_2048</code></p></li>
305    /// <li>
306    /// <p><code>EC_prime256v1</code></p></li>
307    /// <li>
308    /// <p><code>EC_secp384r1</code></p></li>
309    /// </ul>
310    /// <p>Other listed algorithms are for imported certificates only.</p>
311    /// </note> <note>
312    /// <p>When you request a private PKI certificate signed by a CA from Amazon Web Services Private CA, the specified signing algorithm family (RSA or ECDSA) must match the algorithm family of the CA's secret key.</p>
313    /// </note>
314    /// <p>Default: RSA_2048</p>
315    pub fn set_key_algorithm(mut self, input: ::std::option::Option<crate::types::KeyAlgorithm>) -> Self {
316        self.inner = self.inner.set_key_algorithm(input);
317        self
318    }
319    /// <p>Specifies the algorithm of the public and private key pair that your certificate uses to encrypt data. RSA is the default key algorithm for ACM certificates. Elliptic Curve Digital Signature Algorithm (ECDSA) keys are smaller, offering security comparable to RSA keys but with greater computing efficiency. However, ECDSA is not supported by all network clients. Some Amazon Web Services services may require RSA keys, or only support ECDSA keys of a particular size, while others allow the use of either RSA and ECDSA keys to ensure that compatibility is not broken. Check the requirements for the Amazon Web Services service where you plan to deploy your certificate. For more information about selecting an algorithm, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms">Key algorithms</a>.</p><note>
320    /// <p>Algorithms supported for an ACM certificate request include:</p>
321    /// <ul>
322    /// <li>
323    /// <p><code>RSA_2048</code></p></li>
324    /// <li>
325    /// <p><code>EC_prime256v1</code></p></li>
326    /// <li>
327    /// <p><code>EC_secp384r1</code></p></li>
328    /// </ul>
329    /// <p>Other listed algorithms are for imported certificates only.</p>
330    /// </note> <note>
331    /// <p>When you request a private PKI certificate signed by a CA from Amazon Web Services Private CA, the specified signing algorithm family (RSA or ECDSA) must match the algorithm family of the CA's secret key.</p>
332    /// </note>
333    /// <p>Default: RSA_2048</p>
334    pub fn get_key_algorithm(&self) -> &::std::option::Option<crate::types::KeyAlgorithm> {
335        self.inner.get_key_algorithm()
336    }
337    /// <p>Identifies the Amazon Web Services service that manages the certificate issued by ACM.</p>
338    pub fn managed_by(mut self, input: crate::types::CertificateManagedBy) -> Self {
339        self.inner = self.inner.managed_by(input);
340        self
341    }
342    /// <p>Identifies the Amazon Web Services service that manages the certificate issued by ACM.</p>
343    pub fn set_managed_by(mut self, input: ::std::option::Option<crate::types::CertificateManagedBy>) -> Self {
344        self.inner = self.inner.set_managed_by(input);
345        self
346    }
347    /// <p>Identifies the Amazon Web Services service that manages the certificate issued by ACM.</p>
348    pub fn get_managed_by(&self) -> &::std::option::Option<crate::types::CertificateManagedBy> {
349        self.inner.get_managed_by()
350    }
351}