Skip to content

Commit 16734bb

Browse files
committed
signer API: Move dispatch table population to init
This does not change API but makes it easier to implement Signers/Keys in multiple files.
1 parent 14ee264 commit 16734bb

File tree

3 files changed

+36
-35
lines changed

3 files changed

+36
-35
lines changed

securesystemslib/signer/__init__.py

+32
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,35 @@
1313
Signer,
1414
SSlibSigner,
1515
)
16+
17+
# Register supported private key uri schemes and the Signers implementing them
18+
SIGNER_FOR_URI_SCHEME.update(
19+
{
20+
SSlibSigner.ENVVAR_URI_SCHEME: SSlibSigner,
21+
SSlibSigner.FILE_URI_SCHEME: SSlibSigner,
22+
}
23+
)
24+
25+
# Register supported key types and schemes, and the Keys implementing them
26+
KEY_FOR_TYPE_AND_SCHEME.update(
27+
{
28+
("ecdsa", "ecdsa-sha2-nistp256"): SSlibKey,
29+
("ecdsa", "ecdsa-sha2-nistp384"): SSlibKey,
30+
("ecdsa-sha2-nistp256", "ecdsa-sha2-nistp256"): SSlibKey,
31+
("ecdsa-sha2-nistp384", "ecdsa-sha2-nistp384"): SSlibKey,
32+
("ed25519", "ed25519"): SSlibKey,
33+
("rsa", "rsassa-pss-md5"): SSlibKey,
34+
("rsa", "rsassa-pss-sha1"): SSlibKey,
35+
("rsa", "rsassa-pss-sha224"): SSlibKey,
36+
("rsa", "rsassa-pss-sha256"): SSlibKey,
37+
("rsa", "rsassa-pss-sha384"): SSlibKey,
38+
("rsa", "rsassa-pss-sha512"): SSlibKey,
39+
("rsa", "rsa-pkcs1v15-md5"): SSlibKey,
40+
("rsa", "rsa-pkcs1v15-sha1"): SSlibKey,
41+
("rsa", "rsa-pkcs1v15-sha224"): SSlibKey,
42+
("rsa", "rsa-pkcs1v15-sha256"): SSlibKey,
43+
("rsa", "rsa-pkcs1v15-sha384"): SSlibKey,
44+
("rsa", "rsa-pkcs1v15-sha512"): SSlibKey,
45+
("sphincs", "sphincs-shake-128s"): SSlibKey,
46+
}
47+
)

securesystemslib/signer/_key.py

+2-26
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@
99

1010
logger = logging.getLogger(__name__)
1111

12-
# NOTE dict for Key dispatch defined here, but filled at end of file when
13-
# subclass definitions are available. Users can add Key implementations.
14-
12+
# NOTE Key dispatch table is defined here so it's usable by Key,
13+
# but is populated in __init__.py (and can be appended by users).
1514
KEY_FOR_TYPE_AND_SCHEME: Dict[Tuple[str, str], Type] = {}
1615

1716

@@ -181,26 +180,3 @@ def verify_signature(self, signature: Signature, data: bytes) -> None:
181180
raise exceptions.VerificationError(
182181
f"Unknown failure to verify signature by {self.keyid}"
183182
) from e
184-
185-
186-
# Supported key types and schemes, and the Keys implementing them
187-
KEY_FOR_TYPE_AND_SCHEME = {
188-
("ecdsa", "ecdsa-sha2-nistp256"): SSlibKey,
189-
("ecdsa", "ecdsa-sha2-nistp384"): SSlibKey,
190-
("ecdsa-sha2-nistp256", "ecdsa-sha2-nistp256"): SSlibKey,
191-
("ecdsa-sha2-nistp384", "ecdsa-sha2-nistp384"): SSlibKey,
192-
("ed25519", "ed25519"): SSlibKey,
193-
("rsa", "rsassa-pss-md5"): SSlibKey,
194-
("rsa", "rsassa-pss-sha1"): SSlibKey,
195-
("rsa", "rsassa-pss-sha224"): SSlibKey,
196-
("rsa", "rsassa-pss-sha256"): SSlibKey,
197-
("rsa", "rsassa-pss-sha384"): SSlibKey,
198-
("rsa", "rsassa-pss-sha512"): SSlibKey,
199-
("rsa", "rsa-pkcs1v15-md5"): SSlibKey,
200-
("rsa", "rsa-pkcs1v15-sha1"): SSlibKey,
201-
("rsa", "rsa-pkcs1v15-sha224"): SSlibKey,
202-
("rsa", "rsa-pkcs1v15-sha256"): SSlibKey,
203-
("rsa", "rsa-pkcs1v15-sha384"): SSlibKey,
204-
("rsa", "rsa-pkcs1v15-sha512"): SSlibKey,
205-
("sphincs", "sphincs-shake-128s"): SSlibKey,
206-
}

securesystemslib/signer/_signer.py

+2-9
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313

1414
logger = logging.getLogger(__name__)
1515

16-
# NOTE dict for Signer dispatch defined here, but filled at end of file when
17-
# subclass definitions are available. Users can add Signer implementations.
16+
# NOTE Signer dispatch table is defined here so it's usable by Signer,
17+
# but is populated in __init__.py (and can be appended by users).
1818
SIGNER_FOR_URI_SCHEME: Dict[str, Type] = {}
1919

2020

@@ -273,10 +273,3 @@ def sign(self, payload: bytes) -> GPGSignature:
273273

274274
sig_dict = gpg.create_signature(payload, self.keyid, self.homedir)
275275
return GPGSignature(**sig_dict)
276-
277-
278-
# Supported private key uri schemes and the Signers implementing them
279-
SIGNER_FOR_URI_SCHEME = {
280-
SSlibSigner.ENVVAR_URI_SCHEME: SSlibSigner,
281-
SSlibSigner.FILE_URI_SCHEME: SSlibSigner,
282-
}

0 commit comments

Comments
 (0)