aiohttp-signer¶
See bovine-actor for further usage examples.
Sample usage¶
import aiohttp
import pytest
from . import Rfc9421Signer
from .rfc9421.test_rfc9421 import ed25519_signer, key_id
from .test_server import * # noqa
@pytest.mark.timeout(5)
async def test_signature(post_url, headers_future):
async with aiohttp.ClientSession() as session:
await session.post(
post_url,
json={"cows": "good"},
headers={
"content-type": "application/json",
"content-length": "18",
"host": "example.com",
"date": "Tue, 20 Apr 2021 02:07:55 GMT",
},
middlewares=[
Rfc9421Signer(
key_id=key_id,
signer=ed25519_signer,
params=[
"date",
"@method",
"@path",
"@authority",
"content-type",
"content-length",
],
name="sig-b26",
created_maker=lambda: 1618884473,
),
],
)
result = await headers_future
assert (
result.get("Signature-Input")
== 'sig-b26=("date" "@method" "@path" "@authority" "content-type" "content-length");created=1618884473;keyid="test-key-ed25519"'
)
assert (
result.get("Signature")
== "sig-b26=:wqcAqbmYJ2ji2glfAMaRy4gruYYnx2nEFN2HN6jrnDnQCK1u02Gb04v9EDgwUPiu4A0w6vuQv5lIp5WPpBKRCw==:"
)