/** @mainpage Overview @anchor sigv4 @brief AWS SigV4 Library The AWS SigV4 Library is a standalone library for generating signatures and authorization headers according to the specifications of the AWS Signature Version 4 signing process. This library aids applications in sending direct HTTP requests to AWS services requiring SigV4 authentication. The library is written in C and designed to be compliant with ISO C90 and MISRA C and has no dependencies on any additional libraries other than the standard C library. @section sigv4_memory_requirements Memory Requirements @brief Memory requirements of the SigV4 Library. @include{doc} size_table.md @section sigv4_design Design @brief SigV4 Library Design
All functions in the SigV4 library operate only on the buffers provided and use only local variables on the stack.
The SIGV4 library is designed to be compliant with ISO C90 and MISRA C:2012. All functions are written to have low complexity scores. Unit tests and CBMC proofs are written to cover every path of execution and achieve 100% branch coverage.
The diagram below demonstrates the happy path an application can take to use the SigV4 library to interact with AWS Services that support SigV4 authentication via HTTP requests. @image html sigv4_design.png "SigV4 Library Usage diagram" width=90% */ /** @page sigv4_config Configurations @brief Configurations of the AWS SigV4 Library. @par configpagestyle Configuration settings are C pre-processor constants. They can be set with a `\#define` in the config file (`sigv4_config.h`) or by using a compiler option such as -D in gcc. @section SIGV4_DO_NOT_USE_CUSTOM_CONFIG @copydoc SIGV4_DO_NOT_USE_CUSTOM_CONFIG @section sigv4_logerror LogError @copydoc LogError @section sigv4_logwarn LogWarn @copydoc LogWarn @section sigv4_loginfo LogInfo @copydoc LogInfo @section sigv4_logdebug LogDebug @copydoc LogDebug */ /** @page sigv4_functions Functions @brief Primary functions of the AWS SigV4 library: