mirror of
https://github.com/moparisthebest/curl
synced 2024-11-04 16:45:06 -05:00
08e8455ddd
It is a security process for HTTP. It doesn't seems to be standard, but it is used by some cloud providers. Aws: https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html Outscale: https://wiki.outscale.net/display/EN/Creating+a+Canonical+Request GCP (I didn't test that this code work with GCP though): https://cloud.google.com/storage/docs/access-control/signing-urls-manually most of the code is in lib/http_v4_signature.c Information require by the algorithm: - The URL - Current time - some prefix that are append to some of the signature parameters. The data extracted from the URL are: the URI, the region, the host and the API type example: https://api.eu-west-2.outscale.com/api/latest/ReadNets ~~~ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ ^ ^ ^ / \ URI API type region Small description of the algorithm: - make canonical header using content type, the host, and the date - hash the post data - make canonical_request using custom request, the URI, the get data, the canonical header, the signed header and post data hash - hash canonical_request - make str_to_sign using one of the prefix pass in parameter, the date, the credential scope and the canonical_request hash - compute hmac from date, using secret key as key. - compute hmac from region, using above hmac as key - compute hmac from api_type, using above hmac as key - compute hmac from request_type, using above hmac as key - compute hmac from str_to_sign using above hmac as key - create Authorization header using above hmac, prefix pass in parameter, the date, and above hash Signed-off-by: Matthias Gatto <matthias.gatto@outscale.com> Closes #5703 |
||
---|---|---|
.. | ||
cmdline-opts | ||
examples | ||
libcurl | ||
.gitignore | ||
ALTSVC.md | ||
BINDINGS.md | ||
BUG-BOUNTY.md | ||
BUGS.md | ||
CHECKSRC.md | ||
CIPHERS.md | ||
CMakeLists.txt | ||
CODE_OF_CONDUCT.md | ||
CODE_REVIEW.md | ||
CODE_STYLE.md | ||
CONTRIBUTE.md | ||
curl-config.1 | ||
CURL-DISABLE.md | ||
DEPRECATE.md | ||
DYNBUF.md | ||
ECH.md | ||
EXPERIMENTAL.md | ||
FAQ | ||
FEATURES.md | ||
GOVERNANCE.md | ||
HELP-US.md | ||
HISTORY.md | ||
HSTS.md | ||
HTTP2.md | ||
HTTP3.md | ||
HTTP-COOKIES.md | ||
HYPER.md | ||
INSTALL | ||
INSTALL.cmake | ||
INSTALL.md | ||
INTERNALS.md | ||
KNOWN_BUGS | ||
MAIL-ETIQUETTE | ||
Makefile.am | ||
MANUAL.md | ||
mk-ca-bundle.1 | ||
MQTT.md | ||
NEW-PROTOCOL.md | ||
options-in-versions | ||
PARALLEL-TRANSFERS.md | ||
README.md | ||
RELEASE-PROCEDURE.md | ||
ROADMAP.md | ||
SECURITY-PROCESS.md | ||
SSL-PROBLEMS.md | ||
SSLCERTS.md | ||
THANKS | ||
THANKS-filter | ||
TheArtOfHttpScripting.md | ||
TODO | ||
URL-SYNTAX.md | ||
VERSIONS.md |
Documentation
You'll find a mix of various documentation in this directory and subdirectories, using several different formats. Some of them are not ideal for reading directly in your browser.
If you'd rather see the rendered version of the documentation, check out the curl website's documentation section for general curl stuff or the libcurl section for libcurl related documentation.