import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This data source provides the list of Keys in Oracle Cloud Infrastructure Kms service.
 *
 * Lists the master encryption keys in the specified vault and compartment.
 *
 * As a management operation, this call is subject to a Key Management limit that applies to the total number
 * of requests across all management read operations. Key Management might throttle this call to reject an
 * otherwise valid request when the total rate of management read operations exceeds 10 requests per second
 * for a given tenancy.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testKeys = oci.kms.getKeys({
 *     compartmentId: compartmentId,
 *     managementEndpoint: keyManagementEndpoint,
 *     algorithm: keyAlgorithm,
 *     length: Number(keyLength),
 *     curveId: testCurve.id,
 *     protectionMode: keyProtectionMode,
 * });
 * ```
 */
export declare function getKeys(args: GetKeysArgs, opts?: pulumi.InvokeOptions): Promise<GetKeysResult>;
/**
 * A collection of arguments for invoking getKeys.
 */
export interface GetKeysArgs {
    /**
     * The algorithm used by a key's key versions to encrypt or decrypt data. Currently, support includes AES, RSA, and ECDSA algorithms.
     */
    algorithm?: string;
    /**
     * The OCID of the compartment.
     */
    compartmentId: string;
    /**
     * The curve ID of the keys. (This pertains only to ECDSA keys.)
     */
    curveId?: string;
    filters?: inputs.Kms.GetKeysFilter[];
    /**
     * The length of the key in bytes, expressed as an integer. Supported values include 16, 24, or 32.
     */
    length?: number;
    /**
     * The service endpoint to perform management operations against. Management operations include 'Create,' 'Update,' 'List,' 'Get,' and 'Delete' operations. See Vault Management endpoint.
     */
    managementEndpoint: string;
    /**
     * A key's protection mode indicates how the key persists and where cryptographic operations that use the key are performed. A protection mode of `HSM` means that the key persists on a hardware security module (HSM) and all cryptographic operations are performed inside the HSM. A protection mode of `SOFTWARE` means that the key persists on the server, protected by the vault's RSA wrapping key which persists on the HSM. All cryptographic operations that use a key with a protection mode of `SOFTWARE` are performed on the server. A protection mode of `EXTERNAL` mean that the key persists on the customer's external key manager which is hosted externally outside of oracle. Oracle only hold a reference to that key. All cryptographic operations that use a key with a protection mode of `EXTERNAL` are performed by external key manager.
     */
    protectionMode?: string;
}
/**
 * A collection of values returned by getKeys.
 */
export interface GetKeysResult {
    /**
     * The algorithm used by a key's key versions to encrypt or decrypt. Only AES algorithm is supported for `External` keys.
     */
    readonly algorithm?: string;
    /**
     * The OCID of the compartment that contains this master encryption key.
     */
    readonly compartmentId: string;
    /**
     * Supported curve IDs for ECDSA keys.
     */
    readonly curveId?: string;
    readonly filters?: outputs.Kms.GetKeysFilter[];
    /**
     * The provider-assigned unique ID for this managed resource.
     */
    readonly id: string;
    /**
     * The list of keys.
     */
    readonly keys: outputs.Kms.GetKeysKey[];
    /**
     * The length of the key in bytes, expressed as an integer. Supported values include the following:
     * * AES: 16, 24, or 32
     * * RSA: 256, 384, or 512
     * * ECDSA: 32, 48, or 66
     */
    readonly length?: number;
    readonly managementEndpoint: string;
    /**
     * The key's protection mode indicates how the key persists and where cryptographic operations that use the key are performed. A protection mode of `HSM` means that the key persists on a hardware security module (HSM) and all cryptographic operations are performed inside the HSM. A protection mode of `SOFTWARE` means that the key persists on the server, protected by the vault's RSA wrapping key which persists on the HSM. All cryptographic operations that use a key with a protection mode of `SOFTWARE` are performed on the server. By default, a key's protection mode is set to `HSM`. You can't change a key's protection mode after the key is created or imported. A protection mode of `EXTERNAL` mean that the key persists on the customer's external key manager which is hosted externally outside of oracle. Oracle only hold a reference to that key. All cryptographic operations that use a key with a protection mode of `EXTERNAL` are performed by external key manager.
     */
    readonly protectionMode?: string;
}
/**
 * This data source provides the list of Keys in Oracle Cloud Infrastructure Kms service.
 *
 * Lists the master encryption keys in the specified vault and compartment.
 *
 * As a management operation, this call is subject to a Key Management limit that applies to the total number
 * of requests across all management read operations. Key Management might throttle this call to reject an
 * otherwise valid request when the total rate of management read operations exceeds 10 requests per second
 * for a given tenancy.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testKeys = oci.kms.getKeys({
 *     compartmentId: compartmentId,
 *     managementEndpoint: keyManagementEndpoint,
 *     algorithm: keyAlgorithm,
 *     length: Number(keyLength),
 *     curveId: testCurve.id,
 *     protectionMode: keyProtectionMode,
 * });
 * ```
 */
export declare function getKeysOutput(args: GetKeysOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetKeysResult>;
/**
 * A collection of arguments for invoking getKeys.
 */
export interface GetKeysOutputArgs {
    /**
     * The algorithm used by a key's key versions to encrypt or decrypt data. Currently, support includes AES, RSA, and ECDSA algorithms.
     */
    algorithm?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the compartment.
     */
    compartmentId: pulumi.Input<string>;
    /**
     * The curve ID of the keys. (This pertains only to ECDSA keys.)
     */
    curveId?: pulumi.Input<string | undefined>;
    filters?: pulumi.Input<pulumi.Input<inputs.Kms.GetKeysFilterArgs>[] | undefined>;
    /**
     * The length of the key in bytes, expressed as an integer. Supported values include 16, 24, or 32.
     */
    length?: pulumi.Input<number | undefined>;
    /**
     * The service endpoint to perform management operations against. Management operations include 'Create,' 'Update,' 'List,' 'Get,' and 'Delete' operations. See Vault Management endpoint.
     */
    managementEndpoint: pulumi.Input<string>;
    /**
     * A key's protection mode indicates how the key persists and where cryptographic operations that use the key are performed. A protection mode of `HSM` means that the key persists on a hardware security module (HSM) and all cryptographic operations are performed inside the HSM. A protection mode of `SOFTWARE` means that the key persists on the server, protected by the vault's RSA wrapping key which persists on the HSM. All cryptographic operations that use a key with a protection mode of `SOFTWARE` are performed on the server. A protection mode of `EXTERNAL` mean that the key persists on the customer's external key manager which is hosted externally outside of oracle. Oracle only hold a reference to that key. All cryptographic operations that use a key with a protection mode of `EXTERNAL` are performed by external key manager.
     */
    protectionMode?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=getKeys.d.ts.map