Skip to main content

An implementation of the IETF HTTP Message Signatures draft standard

Project description

http-message-signatures is an implementation of the IETF HTTP Message Signatures draft standard in Python.

Installation

pip3 install http-message-signatures

Synopsis

from http_message_signatures import HTTPMessageSigner, HTTPMessageVerifier, HTTPSignatureKeyResolver, algorithms
import requests, base64, hashlib, http_sfv

class MyHTTPSignatureKeyResolver(HTTPSignatureKeyResolver):
    keys = {"my-key": b"top-secret-key"}

    def resolve_public_key(self, key_id: str):
        return self.keys[key_id]

    def resolve_private_key(self, key_id: str):
        return self.keys[key_id]

request = requests.Request('POST', 'https://example.com/foo?param=Value&Pet=dog', json={"hello": "world"})
request = request.prepare()
request.headers["Content-Digest"] = str(http_sfv.Dictionary({"sha-256": hashlib.sha256(request.body).digest()}))

signer = HTTPMessageSigner(signature_algorithm=algorithms.HMAC_SHA256, key_resolver=MyHTTPSignatureKeyResolver())
signer.sign(request, key_id="my-key", covered_component_ids=("@method", "@authority", "@target-uri", "content-digest"))

verifier = HTTPMessageVerifier(signature_algorithm=algorithms.HMAC_SHA256, key_resolver=MyHTTPSignatureKeyResolver())
verifier.verify(request)

Note that verifying the body content-digest is outside the scope of this package’s functionality, so it remains the caller’s responsibility. The requests-http-signature library builds upon this package to provide integrated signing and validation of the request body.

Authors

  • Andrey Kislyuk

License

Licensed under the terms of the Apache License, Version 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

http-message-signatures-0.4.3.tar.gz (23.8 kB view details)

Uploaded Source

Built Distribution

http_message_signatures-0.4.3-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file http-message-signatures-0.4.3.tar.gz.

File metadata

  • Download URL: http-message-signatures-0.4.3.tar.gz
  • Upload date:
  • Size: 23.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.10

File hashes

Hashes for http-message-signatures-0.4.3.tar.gz
Algorithm Hash digest
SHA256 2db271cd26e1465e2a32c575102974954c2ca46d2ef52ab6af3bbc28c9a6a06e
MD5 644b8fa64d7ed82686a91314b42ac730
BLAKE2b-256 fd8d796e3ff740031d89d2d7eaa365eb79b52a615b56bc1245e51fdaab7ca77f

See more details on using hashes here.

File details

Details for the file http_message_signatures-0.4.3-py3-none-any.whl.

File metadata

  • Download URL: http_message_signatures-0.4.3-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.10

File hashes

Hashes for http_message_signatures-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ace294e7c7c6a805c3d1a824987e38d6961ec44318407e317cb57c70e66ece83
MD5 10f4401c9bd6d2b5958cc7fc081f39a2
BLAKE2b-256 54da78bd4bd62a67185d7fcb1782697a4d166f0995317007801a8e227f9bac68

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page