Metadata-Version: 2.4
Name: rboto-kms
Version: 0.1.0
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Framework :: AsyncIO
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.15
Classifier: Programming Language :: Rust
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Dist: rboto==0.1.0
License-File: LICENSE
Summary: rboto: async-only, typed Python client for AWS KMS, powered by Rust. Alpha preview.
Keywords: rboto,aws,kms,asyncio,typing,rust
Home-Page: https://github.com/ferrumio/rboto
Author-email: Leandro Cavalcante Damascena <leandro.damascena@gmail.com>
License-Expression: Apache-2.0
Requires-Python: >=3.12
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Changelog, https://github.com/ferrumio/rboto/releases
Project-URL: Documentation, https://ferrumio.github.io/rboto/guides/application-services/
Project-URL: Homepage, https://ferrumio.github.io/rboto/
Project-URL: Issues, https://github.com/ferrumio/rboto/issues
Project-URL: Repository, https://github.com/ferrumio/rboto

<!-- Generated by rboto-codegen. Edit the descriptor, template, or example source. -->
# rboto-kms

rboto is an independent project maintained by [Ferrumio](https://github.com/ferrumio).
It is not affiliated with, sponsored by, or endorsed by Amazon Web Services (AWS).

**Preview (Alpha).** rboto is under active development. APIs may change between releases.

rboto provides an **async-only, typed Python client for AWS KMS**,
powered by Rust. This package contains `KMSClient` and
**54 operations**.

## Installation

Requires Python 3.12 or newer and a native wheel for your Python version and platform.

```bash
python -m pip install "rboto[kms]"
```

You can also install `rboto-kms` directly; it installs the matching
`rboto` package. Only the selected service is installed.

These are the package names to use when a release is available on your package index.
If your index has no release yet, follow the
[source installation instructions](https://ferrumio.github.io/rboto/getting-started/).

## Usage

Configure credentials through your environment, shared profile, or workload role.
The example uses `us-east-1`; select a region where your service and resources are available.
Resource names, identifiers, input files, and model IDs in the example are placeholders
to replace with your own.

```python
import asyncio

from rboto import KMSClient


async def main() -> None:
    client = KMSClient(region="us-east-1")
    response = await client.encrypt(key_id="alias/application", plaintext=b"hello")
    print(response.ciphertext_blob)


if __name__ == "__main__":
    asyncio.run(main())
```

In an application with an event loop, call `await main()` instead of `asyncio.run(main())`.
Reuse the client across calls. Constructing a client does not send a request.

## API conventions

- Import the client with `from rboto import KMSClient`.
- Every operation is asynchronous: use `await client.method(...)`.
- Operation arguments are keyword-only and use the Python names listed below.
- Structured inputs use typed dictionaries and tagged unions from `rboto_kms.types`.
- Regular responses expose typed attributes; `response.to_dict()` converts them to a dictionary.
- Event-stream responses may be typed dictionaries containing async iterators. Follow the
  declared return type; consume event streams with `async for`.
- Byte streams are consumed asynchronously. `await stream.read()` buffers the complete body;
  iterate the stream when processing a large response.
- Direct operation calls return one page.
- Use `async for page in client.paginators.method(...)` for supported paginated operations.
  Paginators accept the same typed arguments as the corresponding client method.

- Catch modeled exceptions from `rboto_kms.exceptions`. Their `error_code`,
  `message`, and `operation_name` identify service failures.

Clients also accept `profile`, `endpoint_url`, or shared `Session` settings.
See [configuration](https://ferrumio.github.io/rboto/guides/configuration/),
[errors](https://ferrumio.github.io/rboto/guides/errors/), and
[streaming](https://ferrumio.github.io/rboto/guides/streaming/).

## Operations

This is the complete operation catalog for this generated package. “Required arguments”
lists arguments without defaults in the Python signature. Service-side conditions may
require additional arguments. Each method links to its complete signature, including
optional arguments. Nested input definitions are in `rboto_kms.types`;
native response definitions are in the package's `_native.pyi`.

| Method | Required arguments | Return type |
|---|---|---|
| [`cancel_key_deletion`](#cancel_key_deletion) | <code>key_id: str</code> | <code>CancelKeyDeletionOutput</code> |
| [`connect_custom_key_store`](#connect_custom_key_store) | <code>custom_key_store_id: str</code> | <code>ConnectCustomKeyStoreOutput</code> |
| [`create_alias`](#create_alias) | <code>alias_name: str</code>, <code>target_key_id: str</code> | <code>None</code> |
| [`create_custom_key_store`](#create_custom_key_store) | <code>custom_key_store_name: str</code> | <code>CreateCustomKeyStoreOutput</code> |
| [`create_grant`](#create_grant) | <code>key_id: str</code>, <code>operations: Sequence[GrantOperation]</code> | <code>CreateGrantOutput</code> |
| [`create_key`](#create_key) | None | <code>CreateKeyOutput</code> |
| [`decrypt`](#decrypt) | None | <code>DecryptOutput</code> |
| [`delete_alias`](#delete_alias) | <code>alias_name: str</code> | <code>None</code> |
| [`delete_custom_key_store`](#delete_custom_key_store) | <code>custom_key_store_id: str</code> | <code>DeleteCustomKeyStoreOutput</code> |
| [`delete_imported_key_material`](#delete_imported_key_material) | <code>key_id: str</code> | <code>DeleteImportedKeyMaterialOutput</code> |
| [`derive_shared_secret`](#derive_shared_secret) | <code>key_id: str</code>, <code>key_agreement_algorithm: KeyAgreementAlgorithmSpec</code>, <code>public_key: bytes</code> | <code>DeriveSharedSecretOutput</code> |
| [`describe_custom_key_stores`](#describe_custom_key_stores) | None | <code>DescribeCustomKeyStoresOutput</code> |
| [`describe_key`](#describe_key) | <code>key_id: str</code> | <code>DescribeKeyOutput</code> |
| [`disable_key`](#disable_key) | <code>key_id: str</code> | <code>None</code> |
| [`disable_key_rotation`](#disable_key_rotation) | <code>key_id: str</code> | <code>None</code> |
| [`disconnect_custom_key_store`](#disconnect_custom_key_store) | <code>custom_key_store_id: str</code> | <code>DisconnectCustomKeyStoreOutput</code> |
| [`enable_key`](#enable_key) | <code>key_id: str</code> | <code>None</code> |
| [`enable_key_rotation`](#enable_key_rotation) | <code>key_id: str</code> | <code>None</code> |
| [`encrypt`](#encrypt) | <code>key_id: str</code>, <code>plaintext: bytes</code> | <code>EncryptOutput</code> |
| [`generate_data_key`](#generate_data_key) | <code>key_id: str</code> | <code>GenerateDataKeyOutput</code> |
| [`generate_data_key_pair`](#generate_data_key_pair) | <code>key_id: str</code>, <code>key_pair_spec: DataKeyPairSpec</code> | <code>GenerateDataKeyPairOutput</code> |
| [`generate_data_key_pair_without_plaintext`](#generate_data_key_pair_without_plaintext) | <code>key_id: str</code>, <code>key_pair_spec: DataKeyPairSpec</code> | <code>GenerateDataKeyPairWithoutPlaintextOutput</code> |
| [`generate_data_key_without_plaintext`](#generate_data_key_without_plaintext) | <code>key_id: str</code> | <code>GenerateDataKeyWithoutPlaintextOutput</code> |
| [`generate_mac`](#generate_mac) | <code>message: bytes</code>, <code>key_id: str</code>, <code>mac_algorithm: MacAlgorithmSpec</code> | <code>GenerateMacOutput</code> |
| [`generate_random`](#generate_random) | None | <code>GenerateRandomOutput</code> |
| [`get_key_last_usage`](#get_key_last_usage) | <code>key_id: str</code> | <code>GetKeyLastUsageOutput</code> |
| [`get_key_policy`](#get_key_policy) | <code>key_id: str</code> | <code>GetKeyPolicyOutput</code> |
| [`get_key_rotation_status`](#get_key_rotation_status) | <code>key_id: str</code> | <code>GetKeyRotationStatusOutput</code> |
| [`get_parameters_for_import`](#get_parameters_for_import) | <code>key_id: str</code>, <code>wrapping_algorithm: AlgorithmSpec</code>, <code>wrapping_key_spec: WrappingKeySpec</code> | <code>GetParametersForImportOutput</code> |
| [`get_public_key`](#get_public_key) | <code>key_id: str</code> | <code>GetPublicKeyOutput</code> |
| [`import_key_material`](#import_key_material) | <code>key_id: str</code>, <code>import_token: bytes</code>, <code>encrypted_key_material: bytes</code> | <code>ImportKeyMaterialOutput</code> |
| [`list_aliases`](#list_aliases) | None | <code>ListAliasesOutput</code> |
| [`list_grants`](#list_grants) | <code>key_id: str</code> | <code>ListGrantsOutput</code> |
| [`list_key_policies`](#list_key_policies) | <code>key_id: str</code> | <code>ListKeyPoliciesOutput</code> |
| [`list_key_rotations`](#list_key_rotations) | <code>key_id: str</code> | <code>ListKeyRotationsOutput</code> |
| [`list_keys`](#list_keys) | None | <code>ListKeysOutput</code> |
| [`list_resource_tags`](#list_resource_tags) | <code>key_id: str</code> | <code>ListResourceTagsOutput</code> |
| [`list_retirable_grants`](#list_retirable_grants) | None | <code>ListRetirableGrantsOutput</code> |
| [`put_key_policy`](#put_key_policy) | <code>key_id: str</code>, <code>policy: str</code> | <code>None</code> |
| [`re_encrypt`](#re_encrypt) | <code>destination_key_id: str</code> | <code>ReEncryptOutput</code> |
| [`replicate_key`](#replicate_key) | <code>key_id: str</code>, <code>replica_region: str</code> | <code>ReplicateKeyOutput</code> |
| [`retire_grant`](#retire_grant) | None | <code>None</code> |
| [`revoke_grant`](#revoke_grant) | <code>key_id: str</code>, <code>grant_id: str</code> | <code>None</code> |
| [`rotate_key_on_demand`](#rotate_key_on_demand) | <code>key_id: str</code> | <code>RotateKeyOnDemandOutput</code> |
| [`schedule_key_deletion`](#schedule_key_deletion) | <code>key_id: str</code> | <code>ScheduleKeyDeletionOutput</code> |
| [`sign`](#sign) | <code>key_id: str</code>, <code>message: bytes</code>, <code>signing_algorithm: SigningAlgorithmSpec</code> | <code>SignOutput</code> |
| [`tag_resource`](#tag_resource) | <code>key_id: str</code>, <code>tags: Sequence[Tag]</code> | <code>None</code> |
| [`untag_resource`](#untag_resource) | <code>key_id: str</code>, <code>tag_keys: Sequence[str]</code> | <code>None</code> |
| [`update_alias`](#update_alias) | <code>alias_name: str</code>, <code>target_key_id: str</code> | <code>None</code> |
| [`update_custom_key_store`](#update_custom_key_store) | <code>custom_key_store_id: str</code> | <code>UpdateCustomKeyStoreOutput</code> |
| [`update_key_description`](#update_key_description) | <code>key_id: str</code>, <code>description: str</code> | <code>None</code> |
| [`update_primary_region`](#update_primary_region) | <code>key_id: str</code>, <code>primary_region: str</code> | <code>None</code> |
| [`verify`](#verify) | <code>key_id: str</code>, <code>message: bytes</code>, <code>signature: bytes</code>, <code>signing_algorithm: SigningAlgorithmSpec</code> | <code>VerifyOutput</code> |
| [`verify_mac`](#verify_mac) | <code>message: bytes</code>, <code>key_id: str</code>, <code>mac_algorithm: MacAlgorithmSpec</code>, <code>mac: bytes</code> | <code>VerifyMacOutput</code> |

## Complete signatures

### cancel_key_deletion

```python
async def cancel_key_deletion(
    *,
    key_id: str,
) -> CancelKeyDeletionOutput: ...
```


### connect_custom_key_store

```python
async def connect_custom_key_store(
    *,
    custom_key_store_id: str,
) -> ConnectCustomKeyStoreOutput: ...
```


### create_alias

```python
async def create_alias(
    *,
    alias_name: str,
    target_key_id: str,
) -> None: ...
```


### create_custom_key_store

```python
async def create_custom_key_store(
    *,
    custom_key_store_name: str,
    cloud_hsm_cluster_id: str | None = None,
    trust_anchor_certificate: str | None = None,
    key_store_password: str | None = None,
    custom_key_store_type: CustomKeyStoreType | None = None,
    xks_proxy_uri_endpoint: str | None = None,
    xks_proxy_uri_path: str | None = None,
    xks_proxy_vpc_endpoint_service_name: str | None = None,
    xks_proxy_vpc_endpoint_service_owner: str | None = None,
    xks_proxy_authentication_credential: XksProxyAuthenticationCredentialType | None = None,
    xks_proxy_connectivity: XksProxyConnectivityType | None = None,
) -> CreateCustomKeyStoreOutput: ...
```


### create_grant

```python
async def create_grant(
    *,
    key_id: str,
    operations: Sequence[GrantOperation],
    grantee_principal: str | None = None,
    retiring_principal: str | None = None,
    constraints: GrantConstraints | None = None,
    grant_tokens: Sequence[str] | None = None,
    name: str | None = None,
    dry_run: bool | None = None,
    grantee_service_principal: str | None = None,
    retiring_service_principal: str | None = None,
) -> CreateGrantOutput: ...
```


### create_key

```python
async def create_key(
    *,
    policy: str | None = None,
    description: str | None = None,
    key_usage: KeyUsageType | None = None,
    customer_master_key_spec: CustomerMasterKeySpec | None = None,
    key_spec: KeySpec | None = None,
    origin: OriginType | None = None,
    custom_key_store_id: str | None = None,
    bypass_policy_lockout_safety_check: bool | None = None,
    tags: Sequence[Tag] | None = None,
    multi_region: bool | None = None,
    xks_key_id: str | None = None,
) -> CreateKeyOutput: ...
```


### decrypt

```python
async def decrypt(
    *,
    ciphertext_blob: bytes | None = None,
    encryption_context: dict[str, str] | None = None,
    grant_tokens: Sequence[str] | None = None,
    key_id: str | None = None,
    encryption_algorithm: EncryptionAlgorithmSpec | None = None,
    recipient: RecipientInfo | None = None,
    dry_run: bool | None = None,
    dry_run_modifiers: Sequence[DryRunModifierType] | None = None,
) -> DecryptOutput: ...
```


### delete_alias

```python
async def delete_alias(
    *,
    alias_name: str,
) -> None: ...
```


### delete_custom_key_store

```python
async def delete_custom_key_store(
    *,
    custom_key_store_id: str,
) -> DeleteCustomKeyStoreOutput: ...
```


### delete_imported_key_material

```python
async def delete_imported_key_material(
    *,
    key_id: str,
    key_material_id: str | None = None,
) -> DeleteImportedKeyMaterialOutput: ...
```


### derive_shared_secret

```python
async def derive_shared_secret(
    *,
    key_id: str,
    key_agreement_algorithm: KeyAgreementAlgorithmSpec,
    public_key: bytes,
    grant_tokens: Sequence[str] | None = None,
    dry_run: bool | None = None,
    recipient: RecipientInfo | None = None,
) -> DeriveSharedSecretOutput: ...
```


### describe_custom_key_stores

```python
async def describe_custom_key_stores(
    *,
    custom_key_store_id: str | None = None,
    custom_key_store_name: str | None = None,
    limit: int | None = None,
    marker: str | None = None,
) -> DescribeCustomKeyStoresOutput: ...
```

Also available as `client.paginators.describe_custom_key_stores(...)`, returning an
async iterator of the response type above.


### describe_key

```python
async def describe_key(
    *,
    key_id: str,
    grant_tokens: Sequence[str] | None = None,
) -> DescribeKeyOutput: ...
```


### disable_key

```python
async def disable_key(
    *,
    key_id: str,
) -> None: ...
```


### disable_key_rotation

```python
async def disable_key_rotation(
    *,
    key_id: str,
) -> None: ...
```


### disconnect_custom_key_store

```python
async def disconnect_custom_key_store(
    *,
    custom_key_store_id: str,
) -> DisconnectCustomKeyStoreOutput: ...
```


### enable_key

```python
async def enable_key(
    *,
    key_id: str,
) -> None: ...
```


### enable_key_rotation

```python
async def enable_key_rotation(
    *,
    key_id: str,
    rotation_period_in_days: int | None = None,
) -> None: ...
```


### encrypt

```python
async def encrypt(
    *,
    key_id: str,
    plaintext: bytes,
    encryption_context: dict[str, str] | None = None,
    grant_tokens: Sequence[str] | None = None,
    encryption_algorithm: EncryptionAlgorithmSpec | None = None,
    dry_run: bool | None = None,
) -> EncryptOutput: ...
```


### generate_data_key

```python
async def generate_data_key(
    *,
    key_id: str,
    encryption_context: dict[str, str] | None = None,
    number_of_bytes: int | None = None,
    key_spec: DataKeySpec | None = None,
    grant_tokens: Sequence[str] | None = None,
    recipient: RecipientInfo | None = None,
    dry_run: bool | None = None,
) -> GenerateDataKeyOutput: ...
```


### generate_data_key_pair

```python
async def generate_data_key_pair(
    *,
    key_id: str,
    key_pair_spec: DataKeyPairSpec,
    encryption_context: dict[str, str] | None = None,
    grant_tokens: Sequence[str] | None = None,
    recipient: RecipientInfo | None = None,
    dry_run: bool | None = None,
) -> GenerateDataKeyPairOutput: ...
```


### generate_data_key_pair_without_plaintext

```python
async def generate_data_key_pair_without_plaintext(
    *,
    key_id: str,
    key_pair_spec: DataKeyPairSpec,
    encryption_context: dict[str, str] | None = None,
    grant_tokens: Sequence[str] | None = None,
    dry_run: bool | None = None,
) -> GenerateDataKeyPairWithoutPlaintextOutput: ...
```


### generate_data_key_without_plaintext

```python
async def generate_data_key_without_plaintext(
    *,
    key_id: str,
    encryption_context: dict[str, str] | None = None,
    key_spec: DataKeySpec | None = None,
    number_of_bytes: int | None = None,
    grant_tokens: Sequence[str] | None = None,
    dry_run: bool | None = None,
) -> GenerateDataKeyWithoutPlaintextOutput: ...
```


### generate_mac

```python
async def generate_mac(
    *,
    message: bytes,
    key_id: str,
    mac_algorithm: MacAlgorithmSpec,
    grant_tokens: Sequence[str] | None = None,
    dry_run: bool | None = None,
) -> GenerateMacOutput: ...
```


### generate_random

```python
async def generate_random(
    *,
    number_of_bytes: int | None = None,
    custom_key_store_id: str | None = None,
    recipient: RecipientInfo | None = None,
) -> GenerateRandomOutput: ...
```


### get_key_last_usage

```python
async def get_key_last_usage(
    *,
    key_id: str,
) -> GetKeyLastUsageOutput: ...
```


### get_key_policy

```python
async def get_key_policy(
    *,
    key_id: str,
    policy_name: str | None = None,
) -> GetKeyPolicyOutput: ...
```


### get_key_rotation_status

```python
async def get_key_rotation_status(
    *,
    key_id: str,
) -> GetKeyRotationStatusOutput: ...
```


### get_parameters_for_import

```python
async def get_parameters_for_import(
    *,
    key_id: str,
    wrapping_algorithm: AlgorithmSpec,
    wrapping_key_spec: WrappingKeySpec,
) -> GetParametersForImportOutput: ...
```


### get_public_key

```python
async def get_public_key(
    *,
    key_id: str,
    grant_tokens: Sequence[str] | None = None,
) -> GetPublicKeyOutput: ...
```


### import_key_material

```python
async def import_key_material(
    *,
    key_id: str,
    import_token: bytes,
    encrypted_key_material: bytes,
    valid_to: str | None = None,
    expiration_model: ExpirationModelType | None = None,
    import_type: ImportType | None = None,
    key_material_description: str | None = None,
    key_material_id: str | None = None,
) -> ImportKeyMaterialOutput: ...
```


### list_aliases

```python
async def list_aliases(
    *,
    key_id: str | None = None,
    limit: int | None = None,
    marker: str | None = None,
) -> ListAliasesOutput: ...
```

Also available as `client.paginators.list_aliases(...)`, returning an
async iterator of the response type above.


### list_grants

```python
async def list_grants(
    *,
    key_id: str,
    limit: int | None = None,
    marker: str | None = None,
    grant_id: str | None = None,
    grantee_principal: str | None = None,
    grantee_service_principal: str | None = None,
) -> ListGrantsOutput: ...
```

Also available as `client.paginators.list_grants(...)`, returning an
async iterator of the response type above.


### list_key_policies

```python
async def list_key_policies(
    *,
    key_id: str,
    limit: int | None = None,
    marker: str | None = None,
) -> ListKeyPoliciesOutput: ...
```

Also available as `client.paginators.list_key_policies(...)`, returning an
async iterator of the response type above.


### list_key_rotations

```python
async def list_key_rotations(
    *,
    key_id: str,
    include_key_material: IncludeKeyMaterial | None = None,
    limit: int | None = None,
    marker: str | None = None,
) -> ListKeyRotationsOutput: ...
```

Also available as `client.paginators.list_key_rotations(...)`, returning an
async iterator of the response type above.


### list_keys

```python
async def list_keys(
    *,
    limit: int | None = None,
    marker: str | None = None,
) -> ListKeysOutput: ...
```

Also available as `client.paginators.list_keys(...)`, returning an
async iterator of the response type above.


### list_resource_tags

```python
async def list_resource_tags(
    *,
    key_id: str,
    limit: int | None = None,
    marker: str | None = None,
) -> ListResourceTagsOutput: ...
```

Also available as `client.paginators.list_resource_tags(...)`, returning an
async iterator of the response type above.


### list_retirable_grants

```python
async def list_retirable_grants(
    *,
    limit: int | None = None,
    marker: str | None = None,
    retiring_principal: str | None = None,
    retiring_service_principal: str | None = None,
) -> ListRetirableGrantsOutput: ...
```

Also available as `client.paginators.list_retirable_grants(...)`, returning an
async iterator of the response type above.


### put_key_policy

```python
async def put_key_policy(
    *,
    key_id: str,
    policy: str,
    policy_name: str | None = None,
    bypass_policy_lockout_safety_check: bool | None = None,
) -> None: ...
```


### re_encrypt

```python
async def re_encrypt(
    *,
    destination_key_id: str,
    ciphertext_blob: bytes | None = None,
    source_encryption_context: dict[str, str] | None = None,
    source_key_id: str | None = None,
    destination_encryption_context: dict[str, str] | None = None,
    source_encryption_algorithm: EncryptionAlgorithmSpec | None = None,
    destination_encryption_algorithm: EncryptionAlgorithmSpec | None = None,
    grant_tokens: Sequence[str] | None = None,
    dry_run: bool | None = None,
    dry_run_modifiers: Sequence[DryRunModifierType] | None = None,
) -> ReEncryptOutput: ...
```


### replicate_key

```python
async def replicate_key(
    *,
    key_id: str,
    replica_region: str,
    policy: str | None = None,
    bypass_policy_lockout_safety_check: bool | None = None,
    description: str | None = None,
    tags: Sequence[Tag] | None = None,
) -> ReplicateKeyOutput: ...
```


### retire_grant

```python
async def retire_grant(
    *,
    grant_token: str | None = None,
    key_id: str | None = None,
    grant_id: str | None = None,
    dry_run: bool | None = None,
) -> None: ...
```


### revoke_grant

```python
async def revoke_grant(
    *,
    key_id: str,
    grant_id: str,
    dry_run: bool | None = None,
) -> None: ...
```


### rotate_key_on_demand

```python
async def rotate_key_on_demand(
    *,
    key_id: str,
) -> RotateKeyOnDemandOutput: ...
```


### schedule_key_deletion

```python
async def schedule_key_deletion(
    *,
    key_id: str,
    pending_window_in_days: int | None = None,
) -> ScheduleKeyDeletionOutput: ...
```


### sign

```python
async def sign(
    *,
    key_id: str,
    message: bytes,
    signing_algorithm: SigningAlgorithmSpec,
    message_type: MessageType | None = None,
    grant_tokens: Sequence[str] | None = None,
    dry_run: bool | None = None,
) -> SignOutput: ...
```


### tag_resource

```python
async def tag_resource(
    *,
    key_id: str,
    tags: Sequence[Tag],
) -> None: ...
```


### untag_resource

```python
async def untag_resource(
    *,
    key_id: str,
    tag_keys: Sequence[str],
) -> None: ...
```


### update_alias

```python
async def update_alias(
    *,
    alias_name: str,
    target_key_id: str,
) -> None: ...
```


### update_custom_key_store

```python
async def update_custom_key_store(
    *,
    custom_key_store_id: str,
    new_custom_key_store_name: str | None = None,
    key_store_password: str | None = None,
    cloud_hsm_cluster_id: str | None = None,
    xks_proxy_uri_endpoint: str | None = None,
    xks_proxy_uri_path: str | None = None,
    xks_proxy_vpc_endpoint_service_name: str | None = None,
    xks_proxy_vpc_endpoint_service_owner: str | None = None,
    xks_proxy_authentication_credential: XksProxyAuthenticationCredentialType | None = None,
    xks_proxy_connectivity: XksProxyConnectivityType | None = None,
) -> UpdateCustomKeyStoreOutput: ...
```


### update_key_description

```python
async def update_key_description(
    *,
    key_id: str,
    description: str,
) -> None: ...
```


### update_primary_region

```python
async def update_primary_region(
    *,
    key_id: str,
    primary_region: str,
) -> None: ...
```


### verify

```python
async def verify(
    *,
    key_id: str,
    message: bytes,
    signature: bytes,
    signing_algorithm: SigningAlgorithmSpec,
    message_type: MessageType | None = None,
    grant_tokens: Sequence[str] | None = None,
    dry_run: bool | None = None,
) -> VerifyOutput: ...
```


### verify_mac

```python
async def verify_mac(
    *,
    message: bytes,
    key_id: str,
    mac_algorithm: MacAlgorithmSpec,
    mac: bytes,
    grant_tokens: Sequence[str] | None = None,
    dry_run: bool | None = None,
) -> VerifyMacOutput: ...
```


## Links

- [Service guide](https://ferrumio.github.io/rboto/guides/application-services/)
- [Repository](https://github.com/ferrumio/rboto)
- [Issues](https://github.com/ferrumio/rboto/issues)
- [Releases](https://github.com/ferrumio/rboto/releases)

Licensed under Apache-2.0.

