Keys
provide.foundation.crypto.keys
¶
Key generation utilities for Foundation.
Provides functions for generating cryptographic key pairs for various algorithms and use cases, including TLS and digital signatures.
Classes¶
KeyGenerationError
¶
KeyGenerationError(
message: str,
*,
code: str | None = None,
context: dict[str, Any] | None = None,
cause: Exception | None = None,
**extra_context: Any
)
Bases: FoundationError
Raised when key generation fails.
Source code in provide/foundation/errors/base.py
Functions¶
generate_ec_keypair
¶
generate_ec_keypair(
curve_name: str = DEFAULT_ECDSA_CURVE,
) -> tuple[
ec.EllipticCurvePrivateKey, ec.EllipticCurvePublicKey
]
Generate an Elliptic Curve (EC) key pair.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
curve_name
|
str
|
Name of the curve (e.g., 'secp256r1') |
DEFAULT_ECDSA_CURVE
|
Returns:
| Type | Description |
|---|---|
tuple[EllipticCurvePrivateKey, EllipticCurvePublicKey]
|
Tuple of (private_key, public_key) |
Raises:
| Type | Description |
|---|---|
KeyGenerationError
|
If curve is unsupported |
Source code in provide/foundation/crypto/keys.py
generate_ed25519_keypair
¶
Generate an Ed25519 key pair.
This is a wrapper around the modern Ed25519Signer class to provide raw key bytes for compatibility with legacy systems or specific protocols.
Returns:
| Type | Description |
|---|---|
KeypairTuple
|
A tuple containing (private_key_bytes, public_key_bytes). |
Source code in provide/foundation/crypto/keys.py
generate_keypair
¶
generate_keypair(
key_type: KeyType,
key_size: int | None = None,
curve_name: str | None = None,
) -> tuple[bytes, bytes]
Generate a key pair and return serialized keys.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key_type
|
KeyType
|
Type of key ('rsa' or 'ec') |
required |
key_size
|
int | None
|
RSA key size (for 'rsa' type) |
None
|
curve_name
|
str | None
|
EC curve name (for 'ec' type) |
None
|
Returns:
| Type | Description |
|---|---|
tuple[bytes, bytes]
|
Tuple of (private_key_pem, public_key_pem) |
Raises:
| Type | Description |
|---|---|
KeyGenerationError
|
If key type is unsupported |
Source code in provide/foundation/crypto/keys.py
generate_rsa_keypair
¶
generate_rsa_keypair(
key_size: int = DEFAULT_RSA_KEY_SIZE,
) -> tuple[rsa.RSAPrivateKey, rsa.RSAPublicKey]
Generate an RSA key pair.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key_size
|
int
|
Key size in bits (2048, 3072, or 4096) |
DEFAULT_RSA_KEY_SIZE
|
Returns:
| Type | Description |
|---|---|
tuple[RSAPrivateKey, RSAPublicKey]
|
Tuple of (private_key, public_key) |
Raises:
| Type | Description |
|---|---|
KeyGenerationError
|
If key size is unsupported |
Source code in provide/foundation/crypto/keys.py
generate_signing_keypair
¶
Generate a key pair suitable for digital signatures (Ed25519).
This is an alias for generate_ed25519_keypair.
Returns:
| Type | Description |
|---|---|
KeypairTuple
|
A tuple containing (private_key_bytes, public_key_bytes). |