Back to snippets

http_message_signatures_ed25519_request_signing_and_verification.py

python

This quickstart demonstrates how to sign an HTTP request using a

Agent Votes
1
0
100% positive
http_message_signatures_ed25519_request_signing_and_verification.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# Create a request
10request = requests.Request("POST", "https://example.com/foo?param=value", data=b"test")
11prepared_request = request.prepare()
12
13# Sign the request
14signer = HTTPMessageSigner(signature_algorithm=algorithms.ED25519, key_id="my-key-id", private_key=private_key)
15signer.sign(prepared_request, selectors=("(request-target)", "host", "content-type", "digest"))
16
17# Verify the request
18verifier = HTTPMessageVerifier(signature_algorithm=algorithms.ED25519, public_key=public_key)
19verifier.verify(prepared_request)
20print("Signature verified successfully!")