Skip to content

Commit 7d4fe8e

Browse files
committed
signer: Remove keyid arg from HSMSigner.import_
Intent is to make GCP and HSM imports as similar as possible.
1 parent 3b66de2 commit 7d4fe8e

File tree

2 files changed

+9
-13
lines changed

2 files changed

+9
-13
lines changed

securesystemslib/signer/_hsm_signer.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
from securesystemslib import KEY_TYPE_ECDSA
1313
from securesystemslib.exceptions import UnsupportedLibraryError
14+
from securesystemslib.keys import _get_keyid
1415
from securesystemslib.signer._key import Key, SSlibKey
1516
from securesystemslib.signer._signature import Signature
1617
from securesystemslib.signer._signer import SecretsHandler, Signer
@@ -191,17 +192,14 @@ def _find_key_values(
191192
return ECDomainParameters.load(bytes(params)), bytes(point)
192193

193194
@classmethod
194-
def import_(
195-
cls, sslib_keyid: str, hsm_keyid: Optional[int] = None
196-
) -> Tuple[str, SSlibKey]:
195+
def import_(cls, hsm_keyid: Optional[int] = None) -> Tuple[str, SSlibKey]:
197196
"""Import public key and signer details from HSM.
198197
199198
Returns a private key URI (for Signer.from_priv_key_uri()) and a public
200199
key. import_() should be called once and the returned URI and public
201200
key should be stored for later use.
202201
203202
Arguments:
204-
sslib_keyid: Key identifier that is unique within the metadata it is used in.
205203
hsm_keyid: Key identifier on the token. Default is 2 (meaning PIV key slot 9c).
206204
207205
Raises:
@@ -244,12 +242,11 @@ def import_(
244242
.decode()
245243
)
246244

247-
key = SSlibKey(
248-
sslib_keyid,
249-
KEY_TYPE_ECDSA,
250-
_SCHEME_FOR_CURVE[curve],
251-
{"public": public_pem},
252-
)
245+
keyval = {"public": public_pem}
246+
scheme = _SCHEME_FOR_CURVE[curve]
247+
keyid = _get_keyid(KEY_TYPE_ECDSA, scheme, keyval)
248+
key = SSlibKey(keyid, KEY_TYPE_ECDSA, scheme, keyval)
249+
253250
return "hsm:", key
254251

255252
@classmethod

tests/test_hsm_signer.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ class TestHSM(unittest.TestCase):
5151
See .github/workflows/hsm.yml for how this can be done on Linux, macOS and Windows.
5252
"""
5353

54-
sslib_keyid = "a" * 64 # Mock SSlibKey conform sha256 hex digest keyid
5554
hsm_keyid = 1
5655
hsm_keyid_default = 2
5756
hsm_user_pin = "123456"
@@ -139,7 +138,7 @@ def test_hsm(self):
139138
"""Test HSM key export and signing."""
140139

141140
for hsm_keyid in [self.hsm_keyid, self.hsm_keyid_default]:
142-
_, key = HSMSigner.import_(self.sslib_keyid, hsm_keyid)
141+
_, key = HSMSigner.import_(hsm_keyid)
143142
signer = HSMSigner(hsm_keyid, key, lambda sec: self.hsm_user_pin)
144143
sig = signer.sign(b"DATA")
145144
key.verify_signature(sig, b"DATA")
@@ -150,7 +149,7 @@ def test_hsm(self):
150149
def test_hsm_uri(self):
151150
"""Test HSM default key export and signing from URI."""
152151

153-
uri, key = HSMSigner.import_(self.sslib_keyid, self.hsm_keyid_default)
152+
uri, key = HSMSigner.import_(self.hsm_keyid_default)
154153
signer = Signer.from_priv_key_uri(
155154
uri, key, lambda sec: self.hsm_user_pin
156155
)

0 commit comments

Comments
 (0)