Enum class SignatureAlgorithmClass

Package: keychain.constants

Description

Public-key signing algorithm class.

This enum defines the high-level classes of digital signature algorithms supported by the keychain library. Each class represents a family of related signature schemes with different underlying mathematical foundations for creating and verifying digital signatures.

Since: v2.0

Enum Class Summary

Enum Constant Value Description

ECDSA

1

Elliptic Curve Digital Signature Algorithm

ECGDSA

2

German Elliptic Curve Digital Signature Algorithm

RSASS

3

RSA Probabilistic Signature Scheme

DSA

4

Digital Signature Algorithm

Enum Class Detail

ECDSA

Value: 1

Elliptic Curve Digital Signature Algorithm. This class uses elliptic curve cryptography for digital signatures, providing strong security with relatively small signature sizes and keys. ECDSA is widely adopted and standardized in many cryptographic protocols.

ECGDSA

Value: 2

German Elliptic Curve Digital Signature Algorithm. This class provides an alternative elliptic curve signature scheme developed in Germany, offering different security properties and implementation characteristics compared to standard ECDSA.

RSASS

Value: 3

RSA Probabilistic Signature Scheme. This class uses RSA with probabilistic signature scheme (PSS) padding, providing provable security properties. RSASS-PSS is considered more secure than traditional RSA signatures with deterministic padding.

DSA

Value: 4

Digital Signature Algorithm. This class uses the DSA algorithm standardized by NIST, which is based on discrete logarithms in finite fields. DSA was one of the first widely standardized digital signature algorithms.

Usage Example

from keychain.constants import SignatureAlgorithmClass

# Select a signature algorithm class
algorithm_class = SignatureAlgorithmClass.ECDSA
print(f"Selected algorithm class: {algorithm_class}")  # Outputs: 1

# Algorithm class selection based on requirements
def select_signature_class(performance_priority=False, compliance_required=False):
    if compliance_required:
        # DSA is FIPS compliant
        return SignatureAlgorithmClass.DSA
    elif performance_priority:
        # ECDSA typically offers better performance with smaller signatures
        return SignatureAlgorithmClass.ECDSA
    else:
        # RSASS provides good security guarantees
        return SignatureAlgorithmClass.RSASS

selected_class = select_signature_class(performance_priority=True)
print(f"Recommended class: {selected_class}")

# Check algorithm characteristics
def get_algorithm_characteristics(alg_class):
    characteristics = {
        SignatureAlgorithmClass.ECDSA: "Fast, small signatures, elliptic curve based",
        SignatureAlgorithmClass.ECGDSA: "Alternative elliptic curve scheme, German standard",
        SignatureAlgorithmClass.RSASS: "Probabilistic, provable security, RSA based",
        SignatureAlgorithmClass.DSA: "NIST standard, discrete logarithm based"
    }
    return characteristics.get(alg_class, "Unknown")

characteristics = get_algorithm_characteristics(algorithm_class)
print(f"Algorithm characteristics: {characteristics}")