import { aws_iam as iam, aws_kms as kms, aws_secretsmanager as secretsManager, aws_ssm as ssm } from 'aws-cdk-lib'; import { Construct } from 'constructs'; import { ICredentialPair } from './credential-pair'; /** * The type of the {@link OpenPGPKeyPairProps.removalPolicy} property. */ export declare enum OpenPGPKeyPairRemovalPolicy { /** * Keep the secret when this resource is deleted from the stack. * This is the default setting. */ RETAIN = 0, /** * Remove the secret when this resource is deleted from the stack, * but leave a grace period of a few days that allows you to cancel the deletion from the AWS Console. */ DESTROY_SAFELY = 1, /** * Remove the secret when this resource is deleted from the stack immediately. * Note that if you don't have a backup of this key somewhere, * this means it will be gone forever! */ DESTROY_IMMEDIATELY = 2 } interface OpenPGPKeyPairProps { /** * Identity to put into the key */ identity: string; /** * Email address to attach to the key */ email: string; /** * Key size in bits (1024, 2048, 4096) */ keySizeBits: number; /** * GPG expiry specifier * * Example: '1y' */ expiry: string; /** * Name of secret to create in AWS Secrets Manager */ secretName: string; /** * Name of SSM parameter to store public key */ pubKeyParameterName: string; /** * KMS Key ARN to use to encrypt Secrets Manager Secret */ encryptionKey?: kms.IKey; /** * Version of the key * * Bump this number to regenerate the key */ version: number; /** * A description to attach to the AWS SecretsManager secret. */ description?: string; /** * What happens to the SecretsManager secret when this resource is removed from the stack. * The default is to keep the secret. * * @default OpenPGPKeyPairRemovalPolicy.RETAIN */ removalPolicy?: OpenPGPKeyPairRemovalPolicy; } /** * A PGP key that is stored in Secrets Manager. * The SecretsManager secret is by default retained when the resource is deleted, * you can change that with the `removalPolicy` property. * * The string in secrets manager will be a JSON struct of * * { "PrivateKey": "... ASCII repr of key...", "Passphrase": "passphrase of the key" } */ export declare class OpenPGPKeyPair extends Construct implements ICredentialPair { readonly principal: ssm.IStringParameter; readonly credential: secretsManager.ISecret; constructor(parent: Construct, name: string, props: OpenPGPKeyPairProps); grantRead(grantee: iam.IPrincipal): void; } export {};