Back to snippets

http_message_signatures_ed25519_sign_and_verify_request.py

python

Signs an HTTP request using the ED25519 algorithm and verifies t

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, algorithms
4
5# Generate a key pair
6private_key = ed25519.Ed25519PrivateKey.generate()
7public_key = private_key.public_key()
8
9# Set up the signer
10signer = HTTPMessageSigner(signature_algorithm=algorithms.ED25519, key_id="my-key-id", private_key=private_key)
11
12# Create a request to sign
13request = requests.Request("POST", "https://example.com/foo", data=b"test", headers={"Content-Type": "application/json"})
14prepared_request = request.prepare()
15
16# Sign the request (this adds the 'Signature' and 'Signature-Input' headers)
17signer.sign(prepared_request, key_id="my-key-id", covered_component_ids=("@method", "@target-uri", "content-type"))
18
19# Set up the verifier
20verifier = HTTPMessageVerifier(signature_algorithm=algorithms.ED25519, public_key=public_key)
21
22# Verify the request
23verifier.verify(prepared_request)
24print("Signature verified successfully!")