Skip to content

Commit 85ed9ad

Browse files
Move signature base64 encoding to Envelope
Moves signature base64 encoding from helper functions to Envelope, as it will make the API smaller and base64 encoded signature aren't rqeuired anywhere else. Now, DSSE Envelope create base64 encoded signature on dict conversion. Signed-off-by: Pradyumna Krishna <[email protected]>
1 parent 801addd commit 85ed9ad

File tree

3 files changed

+11
-53
lines changed

3 files changed

+11
-53
lines changed

securesystemslib/dsse.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,22 +58,26 @@ def from_dict(cls, data: dict) -> "Envelope":
5858
payload = b64dec(data["payload"])
5959
payload_type = data["payloadType"]
6060

61-
signatures = [
62-
Signature.from_base64_dict(signature)
63-
for signature in data["signatures"]
64-
]
61+
signatures = []
62+
for signature in data["signatures"]:
63+
signature["sig"] = b64dec(signature["sig"]).decode("utf-8")
64+
signatures.append(Signature.from_dict(signature))
6565

6666
return cls(payload, payload_type, signatures)
6767

6868
def to_dict(self) -> dict:
6969
"""Returns the JSON-serializable dictionary representation of self."""
7070

71+
signatures = []
72+
for signature in self.signatures:
73+
sig_dict = signature.to_dict()
74+
sig_dict["sig"] = b64enc(sig_dict["sig"].encode("utf-8"))
75+
signatures.append(sig_dict)
76+
7177
return {
7278
"payload": b64enc(self.payload),
7379
"payloadType": self.payload_type,
74-
"signatures": [
75-
signature.to_base64_dict() for signature in self.signatures
76-
],
80+
"signatures": signatures,
7781
}
7882

7983
def pae(self) -> bytes:

securesystemslib/signer/_signature.py

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import logging
44
from typing import Any, Dict, Optional
55

6-
from securesystemslib._internal.utils import b64dec, b64enc
7-
86
logger = logging.getLogger(__name__)
97

108

@@ -49,31 +47,6 @@ def __eq__(self, other: Any) -> bool:
4947
and self.unrecognized_fields == other.unrecognized_fields
5048
)
5149

52-
@classmethod
53-
def from_base64_dict(cls, signature_dict: Dict) -> "Signature":
54-
"""Creates a Signature object from its JSON/dict representation
55-
containing base64 encoded signature.
56-
57-
Arguments:
58-
signature_dict:
59-
A dict containing a valid keyid and a signature.
60-
Note that the fields in it should be named "keyid" and "sig"
61-
respectively.
62-
63-
Raises:
64-
KeyError: If any of the "keyid" and "sig" fields are missing from
65-
the signature_dict.
66-
67-
Side Effect:
68-
Destroys the metadata dict passed by reference.
69-
70-
Returns:
71-
A "Signature" instance.
72-
"""
73-
74-
signature_dict["sig"] = b64dec(signature_dict["sig"]).decode("utf-8")
75-
return cls.from_dict(signature_dict)
76-
7750
@classmethod
7851
def from_dict(cls, signature_dict: Dict) -> "Signature":
7952
"""Creates a Signature object from its JSON/dict representation.
@@ -108,13 +81,3 @@ def to_dict(self) -> Dict:
10881
"sig": self.signature,
10982
**self.unrecognized_fields,
11083
}
111-
112-
def to_base64_dict(self) -> Dict:
113-
"""Returns the JSON-serializable dictionary representation of self
114-
containing base64 encoded signature."""
115-
116-
return {
117-
"keyid": self.keyid,
118-
"sig": b64enc(self.signature.encode("utf-8")),
119-
**self.unrecognized_fields,
120-
}

tests/test_signer.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -453,15 +453,6 @@ def test_signature_from_to_dict(self):
453453

454454
self.assertDictEqual(signature_dict, sig_obj.to_dict())
455455

456-
def test_signature_from_to_base64_dict(self):
457-
signature_dict = {
458-
"sig": "MzA0NjAyMjEwMDkzNDJlNDU2NjUyOGZjZWNmNmE3YTVkNTNlYmFjZGIxZGYxNTFlMjQyZjU1Zjg3NzU4ODM0NjljYjAxZGJjNjYwMjIxMDA4NmI0MjZjYzgyNjcwOWFjZmEyYzNmOTIxNDYxMGNiMGE4MzJkYjk0YmJkMjY2ZmQ3YzU5MzlhNDgwNjRhODUx",
459-
"keyid": "11fa391a0ed7a447cbfeb4b2667e286fc248f64d5e6d0eeed2e5e23f97f9f714",
460-
}
461-
sig_obj = Signature.from_base64_dict(copy.copy(signature_dict))
462-
463-
self.assertDictEqual(signature_dict, sig_obj.to_base64_dict())
464-
465456
def test_signature_eq_(self):
466457
signature_dict = {
467458
"sig": "30460221009342e4566528fcecf6a7a5d53ebacdb1df151e242f55f8775883469cb01dbc6602210086b426cc826709acfa2c3f9214610cb0a832db94bbd266fd7c5939a48064a851",

0 commit comments

Comments
 (0)