1"""
2The Signer API
3
4This module provides extensible interfaces for public keys and signers:
5Some implementations are provided by default but more can be added by users.
6"""
7
8# ruff: noqa: F401
9from securesystemslib.signer._aws_signer import AWSSigner
10from securesystemslib.signer._azure_signer import AzureSigner
11from securesystemslib.signer._constants import (
12 ECDSA_SHA2_NISTP256,
13 ECDSA_SHA2_NISTP384,
14 ECDSA_SHA2_NISTP521,
15 ED25519,
16 KEY_TYPE_ECDSA,
17 KEY_TYPE_ED25519,
18 KEY_TYPE_MLDSA,
19 KEY_TYPE_RSA,
20 MLDSA_44_1,
21 MLDSA_65_1,
22 MLDSA_87_1,
23 RSA_PKCS1V15_SHA224,
24 RSA_PKCS1V15_SHA256,
25 RSA_PKCS1V15_SHA384,
26 RSA_PKCS1V15_SHA512,
27 RSASSA_PSS_SHA224,
28 RSASSA_PSS_SHA256,
29 RSASSA_PSS_SHA384,
30 RSASSA_PSS_SHA512,
31)
32from securesystemslib.signer._crypto_signer import CryptoSigner
33from securesystemslib.signer._gcp_signer import GCPSigner
34from securesystemslib.signer._gpg_signer import GPGKey, GPGSigner
35from securesystemslib.signer._hsm_signer import HSMSigner
36from securesystemslib.signer._key import KEY_FOR_TYPE_AND_SCHEME, Key, SSlibKey
37from securesystemslib.signer._signature import Signature
38from securesystemslib.signer._signer import (
39 SIGNER_FOR_URI_SCHEME,
40 SecretsHandler,
41 Signer,
42)
43from securesystemslib.signer._sigstore_signer import SigstoreKey, SigstoreSigner
44from securesystemslib.signer._spx_signer import (
45 SpxKey,
46 SpxSigner,
47 generate_spx_key_pair,
48)
49from securesystemslib.signer._tkey_signer import TKeySigner
50from securesystemslib.signer._vault_signer import VaultSigner
51
52# Register supported private key uri schemes and the Signers implementing them
53SIGNER_FOR_URI_SCHEME.update(
54 {
55 CryptoSigner.SCHEME: CryptoSigner,
56 GCPSigner.SCHEME: GCPSigner,
57 HSMSigner.SCHEME: HSMSigner,
58 GPGSigner.SCHEME: GPGSigner,
59 AzureSigner.SCHEME: AzureSigner,
60 AWSSigner.SCHEME: AWSSigner,
61 VaultSigner.SCHEME: VaultSigner,
62 TKeySigner.SCHEME: TKeySigner,
63 }
64)
65
66# Signers with currently unstable metadata formats, not supported by default:
67# SigstoreSigner,
68# SpxSigner (also does not yet support private key uri scheme)
69
70# Register supported key types and schemes, and the Keys implementing them
71KEY_FOR_TYPE_AND_SCHEME.update(
72 {
73 (KEY_TYPE_ECDSA, ECDSA_SHA2_NISTP256): SSlibKey,
74 (KEY_TYPE_ECDSA, ECDSA_SHA2_NISTP384): SSlibKey,
75 (KEY_TYPE_ECDSA, ECDSA_SHA2_NISTP521): SSlibKey,
76 # Deprecated: legacy keytype strings (keytype == scheme), use KEY_TYPE_ECDSA
77 (ECDSA_SHA2_NISTP256, ECDSA_SHA2_NISTP256): SSlibKey,
78 (ECDSA_SHA2_NISTP384, ECDSA_SHA2_NISTP384): SSlibKey,
79 (ECDSA_SHA2_NISTP521, ECDSA_SHA2_NISTP521): SSlibKey,
80 (KEY_TYPE_ED25519, ED25519): SSlibKey,
81 (KEY_TYPE_RSA, RSASSA_PSS_SHA256): SSlibKey,
82 (KEY_TYPE_RSA, RSASSA_PSS_SHA384): SSlibKey,
83 (KEY_TYPE_RSA, RSASSA_PSS_SHA512): SSlibKey,
84 (KEY_TYPE_RSA, RSA_PKCS1V15_SHA256): SSlibKey,
85 (KEY_TYPE_RSA, RSA_PKCS1V15_SHA384): SSlibKey,
86 (KEY_TYPE_RSA, RSA_PKCS1V15_SHA512): SSlibKey,
87 (KEY_TYPE_RSA, "pgp+rsa-pkcsv1.5"): GPGKey,
88 ("dsa", "pgp+dsa-fips-180-2"): GPGKey,
89 ("eddsa", "pgp+eddsa-ed25519"): GPGKey,
90 }
91)
92
93# Keys with currently unstable metadata formats, not supported by default:
94# (KEY_TYPE_MLDSA, MLDSA_44_1): SSlibKey, # ML-DSA keytype defined in https://github.com/theupdateframework/taps/blob/master/tap21.md
95# (KEY_TYPE_MLDSA, MLDSA_65_1): SSlibKey,
96# (KEY_TYPE_MLDSA, MLDSA_87_1): SSlibKey,
97# ("sphincs", "sphincs-shake-128s"): SpxKey,
98# ("sigstore-oidc", "Fulcio"): SigstoreKey,