Skip to content

Commit caed127

Browse files
committed
Refactor manifest extraction to use verification path
Replace Manifest.from_signature() with signing.manifest_from_signature() that verifies signatures before extracting manifests. This addresses reviewer feedback to reuse existing verification logic and adds security to incremental signing by ensuring old signatures are verified before their hashes are reused. Changes: - Add manifest_from_signature() to signing.py that calls Verifier.verify() - Update sign_incremental() to require identity/oidc_issuer parameters for verification of old signatures - Remove Manifest.from_signature() from manifest.py (eliminated code duplication) - Update documentation examples in hashing.py - Remove redundant tests (DSSE parsing already tested in signing_test.py) This is a breaking change for incremental signing API, but improves security by preventing tampering of old signatures. Signed-off-by: Emrick Donadei <[email protected]>
1 parent 1ec5791 commit caed127

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/model_signing/signing.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
from typing import Optional
4949

5050
from model_signing import hashing
51-
from model_signing import manifest
5251
from model_signing._signing import sign_certificate as certificate
5352
from model_signing._signing import sign_ec_key as ec_key
5453
from model_signing._signing import sign_sigstore as sigstore
@@ -216,7 +215,7 @@ def sign_incremental(
216215
fails.
217216
"""
218217
# Extract and verify manifest from old signature
219-
old_manifest = manifest_from_signature(
218+
old_manifest = signing.manifest_from_signature(
220219
pathlib.Path(old_signature_path),
221220
identity=identity,
222221
oidc_issuer=oidc_issuer,
@@ -383,7 +382,9 @@ def use_pkcs11_signer(
383382
The new signing configuration.
384383
"""
385384
try:
386-
from model_signing._signing import sign_pkcs11 as pkcs11
385+
from model_signing._signing import ( # noqa: PLC0415
386+
sign_pkcs11 as pkcs11,
387+
)
387388
except ImportError as e:
388389
raise RuntimeError(
389390
"PKCS #11 functionality requires the 'pkcs11' extra. "
@@ -416,7 +417,9 @@ def use_pkcs11_certificate_signer(
416417
The new signing configuration.
417418
"""
418419
try:
419-
from model_signing._signing import sign_pkcs11 as pkcs11
420+
from model_signing._signing import ( # noqa: PLC0415
421+
sign_pkcs11 as pkcs11,
422+
)
420423
except ImportError as e:
421424
raise RuntimeError(
422425
"PKCS #11 functionality requires the 'pkcs11' extra. "

0 commit comments

Comments
 (0)