commit 326179e0017f68e6a7c3acbc96d230d07f0c7ac0 Author: Quentin Dufour Date: Tue Mar 21 17:18:06 2023 +0100 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..99d7a65 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +homeserver.signing_key +.venv diff --git a/main.py b/main.py new file mode 100644 index 0000000..dd2f341 --- /dev/null +++ b/main.py @@ -0,0 +1,46 @@ +import json +import requests + +from signedjson.key import generate_signing_key, get_verify_key, read_signing_keys +from signedjson.sign import ( + sign_json, verify_signed_json, SignatureVerifyException +) + + +# curl https://libera.chat/.well-known/matrix/server +# curl 'https://libera.ems.host/_matrix/key/v2/server' + +def authorization_headers(origin_name, origin_signing_key, + destination_name, request_method, request_target, + content=None): + request_json = { + "method": request_method, + "uri": request_target, + "origin": origin_name, + "destination": destination_name, + } + + if content is not None: + # Assuming content is already parsed as JSON + request_json["content"] = content + + signed_json = sign_json(request_json, origin_name, origin_signing_key) + + authorization_headers = [] + + for key, sig in signed_json["signatures"][origin_name].items(): + authorization_headers.append(bytes( + "X-Matrix origin=\"%s\",destination=\"%s\",key=\"%s\",sig=\"%s\"" % ( + origin_name, destination_name, key, sig), + encoding="utf-8")) + + return ("Authorization", authorization_headers[0]) + +sk = None +with open('homeserver.signing_key', 'r') as k: + sk = read_signing_keys(k)[0] + +head_key, head_val = authorization_headers("deuxfleurs.fr", sk, "libera.chat", "GET", "/_matrix/federation/unstable/rooms/!FmBSWmHvlUJtFiEjrH:libera.chat/complexity") +r = requests.get('https://libera.ems.host:443/_matrix/federation/unstable/rooms/!FmBSWmHvlUJtFiEjrH:libera.chat/complexity', headers = { head_key: head_val }) +print(r.json()) + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..45d764f --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +signedjson==1.1.4 +requests==2.28.2