Enum class EncryptionScheme

Package: keychain.constants

Description

Public-key encryption algorithm.

This enum defines specific encryption schemes with concrete parameters for each algorithm class. Each scheme specifies the exact curve, key size, or other parameters needed for implementation.

Since: v2.0

Enum Class Summary

Enum Constant Value Description

ECIES_ECP_SECP160R1

1

ECIES over 160-bit prime-field Weierstrass curve secp160r1

ECIES_ECP_SECP192K1

2

ECIES over 192-bit prime-field Weierstrass curve secp192k1

ECIES_ECP_SECP224R1

3

ECIES over randomly generated, 224-bit prime-field Weierstrass curve secp224r1

ECIES_ECP_SECP256R1

4

ECIES over randomly generated, 256-bit prime-field Weierstrass curve secp256r1

ECIES_ECP_SECP384R1

5

ECIES over 384-bit prime-field Weierstrass curve secp384r1

ECIES_ECP_SECP521R1

6

ECIES over 521-bit prime-field Weierstrass curve secp512r1

RSA_OAEP_SHA_1024

7

RSA with OAEP, SHA-256, and 1024-bit key

RSA_OAEP_SHA_2048

8

RSA with OAEP, SHA-256, and 2048-bit key

RSA_OAEP_SHA_3072

9

RSA with OAEP, SHA-256, and 3072-bit key

RSA_OAEP_SHA_4096

10

RSA with OAEP, SHA-256, and 4096-bit key

DLIES_1024

11

DLIES with SHA-256 and 1024-bit key

DLIES_2048

12

DLIES with SHA-256 and 2048-bit key

DLIES_3072

13

DLIES with SHA-256 and 3072-bit key

DLIES_4096

14

DLIES with SHA-256 and 4096-bit key

ELGAMAL_1024

15

ElGamal with 1024-bit key

ELGAMAL_2048

16

ElGamal with 2048-bit key

ELGAMAL_3072

17

ElGamal with 3072-bit key

ELGAMAL_4096

18

ElGamal with 4096-bit key

Enum Class Detail

ECIES Schemes

ECIES_ECP_SECP160R1

Value: 1

Elliptic Curve Integrated Encryption Scheme over 160-bit prime-field Weierstrass curve secp160r1.

ECIES_ECP_SECP192K1

Value: 2

Elliptic Curve Integrated Encryption Scheme over 192-bit prime-field Weierstrass curve secp192k1.

ECIES_ECP_SECP224R1

Value: 3

Elliptic Curve Integrated Encryption Scheme over a randomly generated, 224-bit prime-field Weierstrass curve secp224r1.

ECIES_ECP_SECP256R1

Value: 4

Elliptic Curve Integrated Encryption Scheme over a randomly generated, 256-bit prime-field Weierstrass curve secp256r1.

ECIES_ECP_SECP384R1

Value: 5

Elliptic Curve Integrated Encryption Scheme over 384-bit prime-field Weierstrass curve secp384r1.

ECIES_ECP_SECP521R1

Value: 6

Elliptic Curve Integrated Encryption Scheme over 521-bit prime-field Weierstrass curve secp512r1.

RSA Schemes

RSA_OAEP_SHA_1024

Value: 7

RSA Encryption Scheme with Optimal Asymmetric Encryption Padding, SHA-256, and 1024-bit key.

RSA_OAEP_SHA_2048

Value: 8

RSA Encryption Scheme with Optimal Asymmetric Encryption Padding, SHA-256, and 2048-bit key.

RSA_OAEP_SHA_3072

Value: 9

RSA Encryption Scheme with Optimal Asymmetric Encryption Padding, SHA-256, and 3072-bit key.

RSA_OAEP_SHA_4096

Value: 10

RSA Encryption Scheme with Optimal Asymmetric Encryption Padding, SHA-256, and 4096-bit key.

DLIES Schemes

DLIES_1024

Value: 11

Discrete Logarithm Integrated Encryption Scheme with SHA-256 and 1024-bit key.

DLIES_2048

Value: 12

Discrete Logarithm Integrated Encryption Scheme with SHA-256 and 2048-bit key.

DLIES_3072

Value: 13

Discrete Logarithm Integrated Encryption Scheme with SHA-256 and 3072-bit key.

DLIES_4096

Value: 14

Discrete Logarithm Integrated Encryption Scheme with SHA-256 and 4096-bit key.

ElGamal Schemes

ELGAMAL_1024

Value: 15

ElGamal Integrated Encryption Scheme with 1024-bit key.

ELGAMAL_2048

Value: 16

ElGamal Integrated Encryption Scheme with 2048-bit key.

ELGAMAL_3072

Value: 17

ElGamal Integrated Encryption Scheme with 3072-bit key.

ELGAMAL_4096

Value: 18

ElGamal Integrated Encryption Scheme with 4096-bit key.

Usage Example

from keychain.constants import EncryptionScheme, EncryptionAlgorithmClass

# Select a specific encryption scheme
scheme = EncryptionScheme.ECIES_ECP_SECP256R1
print(f"Selected scheme: {scheme}")  # Outputs: 4

# Choose scheme based on security requirements
def select_encryption_scheme(security_level="medium"):
    if security_level == "low":
        return EncryptionScheme.RSA_OAEP_SHA_2048
    elif security_level == "medium":
        return EncryptionScheme.ECIES_ECP_SECP256R1
    elif security_level == "high":
        return EncryptionScheme.RSA_OAEP_SHA_4096
    else:
        return EncryptionScheme.ECIES_ECP_SECP384R1

recommended_scheme = select_encryption_scheme("high")
print(f"Recommended scheme: {recommended_scheme}")

# Get algorithm class from scheme
def get_algorithm_class(scheme):
    if "ECIES" in scheme.name:
        return EncryptionAlgorithmClass.ECIES
    elif "RSA" in scheme.name:
        return EncryptionAlgorithmClass.RSA
    elif "DLIES" in scheme.name:
        return EncryptionAlgorithmClass.DLIES
    elif "ELGAMAL" in scheme.name:
        return EncryptionAlgorithmClass.ELGAMAL
    return None

alg_class = get_algorithm_class(scheme)
print(f"Algorithm class: {alg_class}")