1616import hashlib
1717import logging
1818import os
19- from typing import Any , Dict
19+ from typing import Any , Dict , Iterator , List , Optional
2020
2121import attr
2222import jsonschema
2323from signedjson .key import (
2424 NACL_ED25519 ,
25+ SigningKey ,
26+ VerifyKey ,
2527 decode_signing_key_base64 ,
2628 decode_verify_key_bytes ,
2729 generate_signing_key ,
3133)
3234from unpaddedbase64 import decode_base64
3335
36+ from synapse .types import JsonDict
3437from synapse .util .stringutils import random_string , random_string_with_symbols
3538
3639from ._base import Config , ConfigError
8184logger = logging .getLogger (__name__ )
8285
8386
84- @attr .s
87+ @attr .s ( slots = True , auto_attribs = True )
8588class TrustedKeyServer :
86- # string: name of the server.
87- server_name = attr . ib ()
89+ # name of the server.
90+ server_name : str
8891
89- # dict[str,VerifyKey]|None: map from key id to key object, or None to disable
90- # signature verification.
91- verify_keys = attr .ib (default = None )
92+ # map from key id to key object, or None to disable signature verification.
93+ verify_keys : Optional [Dict [str , VerifyKey ]] = None
9294
9395
9496class KeyConfig (Config ):
@@ -279,15 +281,15 @@ def generate_config_section(
279281 % locals ()
280282 )
281283
282- def read_signing_keys (self , signing_key_path , name ) :
284+ def read_signing_keys (self , signing_key_path : str , name : str ) -> List [ SigningKey ] :
283285 """Read the signing keys in the given path.
284286
285287 Args:
286- signing_key_path (str)
287- name (str) : Associated config key name
288+ signing_key_path
289+ name: Associated config key name
288290
289291 Returns:
290- list[SigningKey]
292+ The signing keys read from the given path.
291293 """
292294
293295 signing_keys = self .read_file (signing_key_path , name )
@@ -296,7 +298,9 @@ def read_signing_keys(self, signing_key_path, name):
296298 except Exception as e :
297299 raise ConfigError ("Error reading %s: %s" % (name , str (e )))
298300
299- def read_old_signing_keys (self , old_signing_keys ):
301+ def read_old_signing_keys (
302+ self , old_signing_keys : Optional [JsonDict ]
303+ ) -> Dict [str , VerifyKey ]:
300304 if old_signing_keys is None :
301305 return {}
302306 keys = {}
@@ -340,7 +344,7 @@ def generate_files(self, config: Dict[str, Any], config_dir_path: str) -> None:
340344 write_signing_keys (signing_key_file , (key ,))
341345
342346
343- def _perspectives_to_key_servers (config ) :
347+ def _perspectives_to_key_servers (config : JsonDict ) -> Iterator [ JsonDict ] :
344348 """Convert old-style 'perspectives' configs into new-style 'trusted_key_servers'
345349
346350 Returns an iterable of entries to add to trusted_key_servers.
@@ -402,7 +406,9 @@ def _perspectives_to_key_servers(config):
402406}
403407
404408
405- def _parse_key_servers (key_servers , federation_verify_certificates ):
409+ def _parse_key_servers (
410+ key_servers : List [Any ], federation_verify_certificates : bool
411+ ) -> Iterator [TrustedKeyServer ]:
406412 try :
407413 jsonschema .validate (key_servers , TRUSTED_KEY_SERVERS_SCHEMA )
408414 except jsonschema .ValidationError as e :
@@ -444,7 +450,7 @@ def _parse_key_servers(key_servers, federation_verify_certificates):
444450 yield result
445451
446452
447- def _assert_keyserver_has_verify_keys (trusted_key_server ) :
453+ def _assert_keyserver_has_verify_keys (trusted_key_server : TrustedKeyServer ) -> None :
448454 if not trusted_key_server .verify_keys :
449455 raise ConfigError (INSECURE_NOTARY_ERROR )
450456
0 commit comments