fuwuqi/client.py

28 lines
994 B
Python
Raw Normal View History

2023-01-18 05:01:59 +00:00
from cryptography.hazmat.primitives import hashes, serialization
from cryptography.hazmat.primitives.asymmetric import padding
from base64 import b64encode
from email.utils import formatdate
from requests import post
2023-01-18 06:23:36 +00:00
from sys import argv
2023-01-18 05:01:59 +00:00
2023-01-18 06:23:36 +00:00
with open(argv[1], 'rb') as f:
2023-01-18 05:01:59 +00:00
activity = f.read()
2023-01-18 18:55:53 +00:00
date = formatdate(usegmt=True)
2023-01-18 05:01:59 +00:00
digester = hashes.Hash(hashes.SHA256())
digester.update(activity)
digest = b64encode(digester.finalize()).decode()
2023-01-18 20:07:12 +00:00
message = f'date: {date}\ndigest: SHA-256={digest}'.encode('utf8')
2023-01-18 05:01:59 +00:00
with open('private.pem', 'rb') as f:
privkey = serialization.load_pem_private_key(f.read(), None)
2023-01-18 20:07:12 +00:00
signature = b64encode(privkey.sign(message, padding.PKCS1v15(), hashes.SHA256())).decode()
2023-01-18 06:23:36 +00:00
header = f'keyId="https://0.exozy.me/users/test.jsonld#main-key",headers="date digest",signature="{signature}"'
2023-01-18 05:01:59 +00:00
2023-01-18 06:23:36 +00:00
resp = post('https://0.exozy.me/users/test.outbox', headers={
2023-01-19 19:33:20 +00:00
'Date': date, 'Digest': f'SHA-256={digest}', 'Signature': header
2023-01-18 05:01:59 +00:00
}, data=activity)
print(resp)
print(resp.text)