Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions c2pie/signing.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,22 @@ def _load_certificates_and_key(
return key, certificates


def _generate_hashed_uri_map(
url: str,
hash_value: bytes,
hash_algorithm: str | None = None,
) -> dict[str, str | bytes]:
result: dict[str, str | bytes] = {
"url": url,
"hash": hash_value,
}

if hash_algorithm:
result["alg"] = hash_algorithm

return result


def sign_file(
input_path: Path | str,
output_path: Path | str | None = None,
Expand Down
21 changes: 21 additions & 0 deletions tests/c2pa/signing_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from c2pie.signing import _generate_hashed_uri_map


def test_generate_hashed_uri_map_required_fields():
result = _generate_hashed_uri_map(url="self#jumbf=c2pa.assertions/c2pa.ingredient.v3", hash_value=b"\x01\x02\x03")
assert result["url"] == "self#jumbf=c2pa.assertions/c2pa.ingredient.v3"
assert result["hash"] == b"\x01\x02\x03"


def test_generate_hashed_uri_map_no_alg_by_default():
result = _generate_hashed_uri_map(url="self#jumbf=c2pa.assertions/c2pa.ingredient.v3", hash_value=b"\x01\x02\x03")
assert "alg" not in result


def test_generate_hashed_uri_map_with_alg():
result = _generate_hashed_uri_map(
url="self#jumbf=c2pa.assertions/c2pa.ingredient.v3",
hash_value=b"\x01\x02\x03",
hash_algorithm="sha256",
)
assert result["alg"] == "sha256"
Loading