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 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.
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}")