|
3 | 3 | import os |
4 | 4 | from datetime import datetime, timedelta |
5 | 5 | from typing import Optional, Sequence, Set, Union, cast |
| 6 | +from urllib.parse import urlparse |
6 | 7 |
|
7 | 8 | import http_sfv |
8 | 9 | from cryptography.hazmat.primitives.asymmetric.ed25519 import ( |
@@ -129,7 +130,7 @@ def extract_covered_components(result: VerifyResult) -> Set[str]: |
129 | 130 |
|
130 | 131 | def parse_verification_key( |
131 | 132 | verification_key: Optional[Union[Ed25519PublicKey, str, bytes]], |
132 | | - url_scheme: str | None = None, |
| 133 | + endpoint: Optional[str] = None, |
133 | 134 | ) -> Optional[Ed25519PublicKey]: |
134 | 135 | # This function depends a lot on global context like enviornment variables |
135 | 136 | # and logging configuration. It's not ideal for testing, but it's useful to |
@@ -175,6 +176,14 @@ def parse_verification_key( |
175 | 176 | raise ValueError(f"invalid verification key '{verification_key}'") |
176 | 177 |
|
177 | 178 | # Print diagostic information about the key, this is useful for debugging. |
| 179 | + url_scheme = "" |
| 180 | + if endpoint: |
| 181 | + try: |
| 182 | + parsed_url = urlparse(endpoint) |
| 183 | + url_scheme = parsed_url.scheme |
| 184 | + except: |
| 185 | + pass |
| 186 | + |
178 | 187 | if public_key: |
179 | 188 | base64_key = base64.b64encode(public_key.public_bytes_raw()).decode() |
180 | 189 | logger.info("verifying request signatures using key %s", base64_key) |
|
0 commit comments