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._tkey_signer import TKeySigner
45from securesystemslib.signer._vault_signer import VaultSigner
46
47# Register supported private key uri schemes and the Signers implementing them
48SIGNER_FOR_URI_SCHEME.update(
49 {
50 CryptoSigner.SCHEME: CryptoSigner,
51 GCPSigner.SCHEME: GCPSigner,
52 HSMSigner.SCHEME: HSMSigner,
53 GPGSigner.SCHEME: GPGSigner,
54 AzureSigner.SCHEME: AzureSigner,
55 AWSSigner.SCHEME: AWSSigner,
56 VaultSigner.SCHEME: VaultSigner,
57 TKeySigner.SCHEME: TKeySigner,
58 }
59)
60
61# Signers with currently unstable metadata formats, not supported by default:
62# SigstoreSigner
63
64# Register supported key types and schemes, and the Keys implementing them
65KEY_FOR_TYPE_AND_SCHEME.update(
66 {
67 (KEY_TYPE_ECDSA, ECDSA_SHA2_NISTP256): SSlibKey,
68 (KEY_TYPE_ECDSA, ECDSA_SHA2_NISTP384): SSlibKey,
69 (KEY_TYPE_ECDSA, ECDSA_SHA2_NISTP521): SSlibKey,
70 # Deprecated: legacy keytype strings (keytype == scheme), use KEY_TYPE_ECDSA
71 (ECDSA_SHA2_NISTP256, ECDSA_SHA2_NISTP256): SSlibKey,
72 (ECDSA_SHA2_NISTP384, ECDSA_SHA2_NISTP384): SSlibKey,
73 (ECDSA_SHA2_NISTP521, ECDSA_SHA2_NISTP521): SSlibKey,
74 (KEY_TYPE_ED25519, ED25519): SSlibKey,
75 # ML-DSA keytype defined in https://github.com/theupdateframework/taps/blob/master/tap21.md
76 (KEY_TYPE_MLDSA, MLDSA_44_1): SSlibKey,
77 (KEY_TYPE_MLDSA, MLDSA_65_1): SSlibKey,
78 (KEY_TYPE_MLDSA, MLDSA_87_1): SSlibKey,
79 (KEY_TYPE_RSA, RSASSA_PSS_SHA256): SSlibKey,
80 (KEY_TYPE_RSA, RSASSA_PSS_SHA384): SSlibKey,
81 (KEY_TYPE_RSA, RSASSA_PSS_SHA512): SSlibKey,
82 (KEY_TYPE_RSA, RSA_PKCS1V15_SHA256): SSlibKey,
83 (KEY_TYPE_RSA, RSA_PKCS1V15_SHA384): SSlibKey,
84 (KEY_TYPE_RSA, RSA_PKCS1V15_SHA512): SSlibKey,
85 (KEY_TYPE_RSA, "pgp+rsa-pkcsv1.5"): GPGKey,
86 ("dsa", "pgp+dsa-fips-180-2"): GPGKey,
87 ("eddsa", "pgp+eddsa-ed25519"): GPGKey,
88 }
89)
90
91# Keys with currently unstable metadata formats, not supported by default:
92# ("sigstore-oidc", "Fulcio"): SigstoreKey,