Skip to content

Commit 918b2dc

Browse files
authored
Merge pull request #977 from lukpueh/rm-hash
Remove internal use of securesystemslib.hash
2 parents 409079e + 3574b50 commit 918b2dc

File tree

4 files changed

+15
-11
lines changed

4 files changed

+15
-11
lines changed

securesystemslib/signer/_azure_signer.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
from __future__ import annotations
44

5+
import hashlib
56
import logging
67
from urllib import parse
78

8-
import securesystemslib.hash as sslib_hash
99
from securesystemslib.exceptions import UnsupportedLibraryError
1010
from securesystemslib.signer._key import Key, SSlibKey
1111
from securesystemslib.signer._signer import SecretsHandler, Signature, Signer
@@ -245,7 +245,7 @@ def sign(self, payload: bytes) -> Signature:
245245
Signature.
246246
"""
247247

248-
hasher = sslib_hash.digest(self.hash_algorithm)
248+
hasher = hashlib.new(self.hash_algorithm)
249249
hasher.update(payload)
250250
digest = hasher.digest()
251251
response = self.crypto_client.sign(self.signature_algorithm, digest)

securesystemslib/signer/_gcp_signer.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
from __future__ import annotations
44

5+
import hashlib
56
import logging
67
from urllib import parse
78

8-
import securesystemslib.hash as sslib_hash
99
from securesystemslib import exceptions
1010
from securesystemslib.signer._key import Key, SSlibKey
1111
from securesystemslib.signer._signer import SecretsHandler, Signature, Signer
@@ -180,7 +180,12 @@ def _get_hash_algorithm(public_key: Key) -> str:
180180
)
181181

182182
# trigger UnsupportedAlgorithm if appropriate
183-
_ = sslib_hash.digest(algo)
183+
# TODO: deduplicate scheme parsing and improve validation (#594, #766)
184+
try:
185+
_ = hashlib.new(algo)
186+
except (ValueError, TypeError) as e:
187+
raise exceptions.UnsupportedAlgorithmError(algo) from e
188+
184189
return algo
185190

186191
def sign(self, payload: bytes) -> Signature:
@@ -198,7 +203,7 @@ def sign(self, payload: bytes) -> Signature:
198203
# NOTE: request and response can contain CRC32C of the digest/sig:
199204
# Verifying could be useful but would require another dependency...
200205

201-
hasher = sslib_hash.digest(self.hash_algorithm)
206+
hasher = hashlib.new(self.hash_algorithm)
202207
hasher.update(payload)
203208
digest = {self.hash_algorithm: hasher.digest()}
204209
request = {"name": self.gcp_keyid, "digest": digest}

securesystemslib/signer/_hsm_signer.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
from __future__ import annotations
99

1010
import binascii
11+
import hashlib
1112
from collections.abc import Iterator
1213
from contextlib import contextmanager
1314
from urllib import parse
1415

1516
from securesystemslib.exceptions import UnsupportedLibraryError
16-
from securesystemslib.hash import digest
1717
from securesystemslib.signer._key import Key, SSlibKey
1818
from securesystemslib.signer._signature import Signature
1919
from securesystemslib.signer._signer import SecretsHandler, Signer
@@ -370,7 +370,7 @@ def sign(self, payload: bytes) -> Signature:
370370
Signature.
371371
"""
372372

373-
hasher = digest(algorithm=f"sha{self.public_key.scheme[-3:]}")
373+
hasher = hashlib.new(name=f"sha{self.public_key.scheme[-3:]}")
374374
hasher.update(payload)
375375

376376
pin = self.pin_handler(self.SECRETS_HANDLER_MSG)

securesystemslib/signer/_utils.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
from __future__ import annotations
44

5+
import hashlib
56
from typing import Any
67

78
from securesystemslib.exceptions import FormatError
89
from securesystemslib.formats import encode_canonical
9-
from securesystemslib.hash import digest
1010

1111

1212
def compute_default_keyid(keytype: str, scheme, keyval: dict[str, Any]) -> str:
@@ -22,6 +22,5 @@ def compute_default_keyid(keytype: str, scheme, keyval: dict[str, Any]) -> str:
2222
byte_data: bytes = data.encode("utf-8")
2323
else:
2424
raise FormatError("Failed to encode data into canonical json")
25-
hasher = digest("sha256")
26-
hasher.update(byte_data)
27-
return hasher.hexdigest()
25+
26+
return hashlib.sha256(byte_data).hexdigest()

0 commit comments

Comments
 (0)