/** @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

Memory Usage

All functions in the SigV4 library operate only on the buffers provided and use only local variables on the stack.

Compliance & Coverage

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:

@subpage sigV4_generateHTTPAuthorization_function
@subpage sigV4_awsIotDateToIso8601_function
@page sigV4_generateHTTPAuthorization_function SigV4_GenerateHTTPAuthorization @snippet sigv4.h declare_sigV4_generateHTTPAuthorization_function @copydoc SigV4_GenerateHTTPAuthorization @page sigV4_awsIotDateToIso8601_function SigV4_AwsIotDateToIso8601 @snippet sigv4.h declare_sigV4_awsIotDateToIso8601_function @copydoc SigV4_AwsIotDateToIso8601 */ /** @defgroup sigv4_enum_types Enumerated Types @brief Enumerated types of the SigV4 library @defgroup sigv4_struct_types Struct Types @brief Struct types of the SigV4 library */