mirror of
https://git.anonymousland.org/anonymousland/synapse-product.git
synced 2025-08-03 16:04:12 -04:00
Back out ill-advised notary server hackery (#6657)
This was ill-advised. We can't modify verify_keys here, because the response object has already been signed by the requested key. Furthermore, it's somewhat unnecessary because existing versions of Synapse (which get upset that the notary key isn't present in verify_keys) will fall back to a direct fetch via `/key/v2/server`. Also: more tests for fetching keys via perspectives: it would be nice if we actually tested when our fetcher can't talk to our notary impl.
This commit is contained in:
parent
235d977e1f
commit
573fee759c
5 changed files with 140 additions and 26 deletions
|
@ -15,7 +15,6 @@
|
|||
import logging
|
||||
|
||||
from canonicaljson import encode_canonical_json, json
|
||||
from signedjson.key import encode_verify_key_base64
|
||||
from signedjson.sign import sign_json
|
||||
|
||||
from twisted.internet import defer
|
||||
|
@ -217,28 +216,15 @@ class RemoteKey(DirectServeResource):
|
|||
if cache_misses and query_remote_on_cache_miss:
|
||||
yield self.fetcher.get_keys(cache_misses)
|
||||
yield self.query_keys(request, query, query_remote_on_cache_miss=False)
|
||||
return
|
||||
|
||||
signed_keys = []
|
||||
for key_json in json_results:
|
||||
key_json = json.loads(key_json)
|
||||
|
||||
# backwards-compatibility hack for #6596: if the requested key belongs
|
||||
# to us, make sure that all of the signing keys appear in the
|
||||
# "verify_keys" section.
|
||||
if key_json["server_name"] == self.config.server_name:
|
||||
verify_keys = key_json["verify_keys"]
|
||||
else:
|
||||
signed_keys = []
|
||||
for key_json in json_results:
|
||||
key_json = json.loads(key_json)
|
||||
for signing_key in self.config.key_server_signing_keys:
|
||||
key_id = "%s:%s" % (signing_key.alg, signing_key.version)
|
||||
verify_keys[key_id] = {
|
||||
"key": encode_verify_key_base64(signing_key.verify_key)
|
||||
}
|
||||
key_json = sign_json(key_json, self.config.server_name, signing_key)
|
||||
|
||||
for signing_key in self.config.key_server_signing_keys:
|
||||
key_json = sign_json(key_json, self.config.server_name, signing_key)
|
||||
signed_keys.append(key_json)
|
||||
|
||||
signed_keys.append(key_json)
|
||||
results = {"server_keys": signed_keys}
|
||||
|
||||
results = {"server_keys": signed_keys}
|
||||
|
||||
respond_with_json_bytes(request, 200, encode_canonical_json(results))
|
||||
respond_with_json_bytes(request, 200, encode_canonical_json(results))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue