/** * 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 Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace ACMPCA { namespace Model { /** *

Contains configuration information for your private certificate authority * (CA). This includes information about the class of public key algorithm and the * key pair that your private CA creates when it issues a certificate. It also * includes the signature algorithm that it uses when issuing certificates, and its * X.500 distinguished name. You must specify this information when you call the CreateCertificateAuthority * action.

See Also:

AWS * API Reference

*/ class CertificateAuthorityConfiguration { public: AWS_ACMPCA_API CertificateAuthorityConfiguration(); AWS_ACMPCA_API CertificateAuthorityConfiguration(Aws::Utils::Json::JsonView jsonValue); AWS_ACMPCA_API CertificateAuthorityConfiguration& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_ACMPCA_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

Type of the public key algorithm and size, in bits, of the key pair that your * CA creates when it issues a certificate. When you create a subordinate CA, you * must use a key algorithm supported by the parent CA.

*/ inline const KeyAlgorithm& GetKeyAlgorithm() const{ return m_keyAlgorithm; } /** *

Type of the public key algorithm and size, in bits, of the key pair that your * CA creates when it issues a certificate. When you create a subordinate CA, you * must use a key algorithm supported by the parent CA.

*/ inline bool KeyAlgorithmHasBeenSet() const { return m_keyAlgorithmHasBeenSet; } /** *

Type of the public key algorithm and size, in bits, of the key pair that your * CA creates when it issues a certificate. When you create a subordinate CA, you * must use a key algorithm supported by the parent CA.

*/ inline void SetKeyAlgorithm(const KeyAlgorithm& value) { m_keyAlgorithmHasBeenSet = true; m_keyAlgorithm = value; } /** *

Type of the public key algorithm and size, in bits, of the key pair that your * CA creates when it issues a certificate. When you create a subordinate CA, you * must use a key algorithm supported by the parent CA.

*/ inline void SetKeyAlgorithm(KeyAlgorithm&& value) { m_keyAlgorithmHasBeenSet = true; m_keyAlgorithm = std::move(value); } /** *

Type of the public key algorithm and size, in bits, of the key pair that your * CA creates when it issues a certificate. When you create a subordinate CA, you * must use a key algorithm supported by the parent CA.

*/ inline CertificateAuthorityConfiguration& WithKeyAlgorithm(const KeyAlgorithm& value) { SetKeyAlgorithm(value); return *this;} /** *

Type of the public key algorithm and size, in bits, of the key pair that your * CA creates when it issues a certificate. When you create a subordinate CA, you * must use a key algorithm supported by the parent CA.

*/ inline CertificateAuthorityConfiguration& WithKeyAlgorithm(KeyAlgorithm&& value) { SetKeyAlgorithm(std::move(value)); return *this;} /** *

Name of the algorithm your private CA uses to sign certificate requests.

*

This parameter should not be confused with the SigningAlgorithm * parameter used to sign certificates when they are issued.

*/ inline const SigningAlgorithm& GetSigningAlgorithm() const{ return m_signingAlgorithm; } /** *

Name of the algorithm your private CA uses to sign certificate requests.

*

This parameter should not be confused with the SigningAlgorithm * parameter used to sign certificates when they are issued.

*/ inline bool SigningAlgorithmHasBeenSet() const { return m_signingAlgorithmHasBeenSet; } /** *

Name of the algorithm your private CA uses to sign certificate requests.

*

This parameter should not be confused with the SigningAlgorithm * parameter used to sign certificates when they are issued.

*/ inline void SetSigningAlgorithm(const SigningAlgorithm& value) { m_signingAlgorithmHasBeenSet = true; m_signingAlgorithm = value; } /** *

Name of the algorithm your private CA uses to sign certificate requests.

*

This parameter should not be confused with the SigningAlgorithm * parameter used to sign certificates when they are issued.

*/ inline void SetSigningAlgorithm(SigningAlgorithm&& value) { m_signingAlgorithmHasBeenSet = true; m_signingAlgorithm = std::move(value); } /** *

Name of the algorithm your private CA uses to sign certificate requests.

*

This parameter should not be confused with the SigningAlgorithm * parameter used to sign certificates when they are issued.

*/ inline CertificateAuthorityConfiguration& WithSigningAlgorithm(const SigningAlgorithm& value) { SetSigningAlgorithm(value); return *this;} /** *

Name of the algorithm your private CA uses to sign certificate requests.

*

This parameter should not be confused with the SigningAlgorithm * parameter used to sign certificates when they are issued.

*/ inline CertificateAuthorityConfiguration& WithSigningAlgorithm(SigningAlgorithm&& value) { SetSigningAlgorithm(std::move(value)); return *this;} /** *

Structure that contains X.500 distinguished name information for your private * CA.

*/ inline const ASN1Subject& GetSubject() const{ return m_subject; } /** *

Structure that contains X.500 distinguished name information for your private * CA.

*/ inline bool SubjectHasBeenSet() const { return m_subjectHasBeenSet; } /** *

Structure that contains X.500 distinguished name information for your private * CA.

*/ inline void SetSubject(const ASN1Subject& value) { m_subjectHasBeenSet = true; m_subject = value; } /** *

Structure that contains X.500 distinguished name information for your private * CA.

*/ inline void SetSubject(ASN1Subject&& value) { m_subjectHasBeenSet = true; m_subject = std::move(value); } /** *

Structure that contains X.500 distinguished name information for your private * CA.

*/ inline CertificateAuthorityConfiguration& WithSubject(const ASN1Subject& value) { SetSubject(value); return *this;} /** *

Structure that contains X.500 distinguished name information for your private * CA.

*/ inline CertificateAuthorityConfiguration& WithSubject(ASN1Subject&& value) { SetSubject(std::move(value)); return *this;} /** *

Specifies information to be added to the extension section of the certificate * signing request (CSR).

*/ inline const CsrExtensions& GetCsrExtensions() const{ return m_csrExtensions; } /** *

Specifies information to be added to the extension section of the certificate * signing request (CSR).

*/ inline bool CsrExtensionsHasBeenSet() const { return m_csrExtensionsHasBeenSet; } /** *

Specifies information to be added to the extension section of the certificate * signing request (CSR).

*/ inline void SetCsrExtensions(const CsrExtensions& value) { m_csrExtensionsHasBeenSet = true; m_csrExtensions = value; } /** *

Specifies information to be added to the extension section of the certificate * signing request (CSR).

*/ inline void SetCsrExtensions(CsrExtensions&& value) { m_csrExtensionsHasBeenSet = true; m_csrExtensions = std::move(value); } /** *

Specifies information to be added to the extension section of the certificate * signing request (CSR).

*/ inline CertificateAuthorityConfiguration& WithCsrExtensions(const CsrExtensions& value) { SetCsrExtensions(value); return *this;} /** *

Specifies information to be added to the extension section of the certificate * signing request (CSR).

*/ inline CertificateAuthorityConfiguration& WithCsrExtensions(CsrExtensions&& value) { SetCsrExtensions(std::move(value)); return *this;} private: KeyAlgorithm m_keyAlgorithm; bool m_keyAlgorithmHasBeenSet = false; SigningAlgorithm m_signingAlgorithm; bool m_signingAlgorithmHasBeenSet = false; ASN1Subject m_subject; bool m_subjectHasBeenSet = false; CsrExtensions m_csrExtensions; bool m_csrExtensionsHasBeenSet = false; }; } // namespace Model } // namespace ACMPCA } // namespace Aws