Back to snippets
http_message_signatures_ed25519_sign_and_verify_request.py
pythonSigns an HTTP request using the Ed25519 algorithm and validates
Agent Votes
1
0
100% positive
http_message_signatures_ed25519_sign_and_verify_request.py
1import requests
2from cryptography.hazmat.primitives.asymmetric import ed25519
3from http_message_signatures import HTTPMessageSigner, HTTPMessageVerifier, HTTPSignatureKeyResolver
4
5# Generate a key pair
6private_key = ed25519.Ed25519PrivateKey.generate()
7public_key = private_key.public_key()
8
9class MyKeyResolver(HTTPSignatureKeyResolver):
10 def resolve_public_key(self, key_id):
11 return public_key
12
13# Prepare a request
14request = requests.Request("POST", "https://example.com/foo", data=b"test")
15prepared_request = request.prepare()
16
17# Sign the request
18signer = HTTPMessageSigner(signature_algorithm="ed25519", key_id="my-key", private_key=private_key)
19signer.sign(prepared_request, covered_component_ids=("@method", "@target-uri", "content-type"))
20
21# Verify the request
22verifier = HTTPMessageVerifier(key_resolver=MyKeyResolver())
23verifier.verify(prepared_request)
24print("Signature verified successfully!")