[修改] 增加freeRTOS
1. 版本FreeRTOSv202212.01,命名为kernel;
This commit is contained in:
2638
kernel/FreeRTOS-Plus/Source/AWS/sigv4/docs/doxygen/config.doxyfile
Normal file
2638
kernel/FreeRTOS-Plus/Source/AWS/sigv4/docs/doxygen/config.doxyfile
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,25 @@
|
||||
<table>
|
||||
<tr>
|
||||
<td colspan="3"><center><b>Code Size of AWS SigV4 library (example generated with GCC for ARM Cortex-M)</b></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>File</b></td>
|
||||
<td><b><center>With -O1 Optimization</center></b></td>
|
||||
<td><b><center>With -Os Optimization</center></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>sigv4.c</td>
|
||||
<td><center>5.2K</center></td>
|
||||
<td><center>4.4K</center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>sigv4_quicksort.c</td>
|
||||
<td><center>0.4K</center></td>
|
||||
<td><center>0.3K</center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Total estimates</b></td>
|
||||
<td><b><center>5.6K</center></b></td>
|
||||
<td><b><center>4.7K</center></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
233
kernel/FreeRTOS-Plus/Source/AWS/sigv4/docs/doxygen/layout.xml
Normal file
233
kernel/FreeRTOS-Plus/Source/AWS/sigv4/docs/doxygen/layout.xml
Normal file
@ -0,0 +1,233 @@
|
||||
<doxygenlayout version="1.0">
|
||||
<!-- Generated by doxygen 1.8.20 -->
|
||||
<!-- Navigation index tabs for HTML output -->
|
||||
<navindex>
|
||||
<tab type="mainpage" visible="yes" title=""/>
|
||||
<tab type="pages" visible="yes" title="" intro=""/>
|
||||
<!-- Hide the default "Data Structures" tab and use the "Modules" tab for data
|
||||
structures. This allows internal data structures to be hidden. -->
|
||||
<tab type="modules" visible="yes" title="Data types and Constants" intro="This library defines the following data types and constants."/>
|
||||
<tab type="namespaces" visible="yes" title="">
|
||||
<tab type="namespacelist" visible="yes" title="" intro=""/>
|
||||
<tab type="namespacemembers" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="interfaces" visible="no" title="">
|
||||
<tab type="interfacelist" visible="no" title="" intro=""/>
|
||||
<tab type="interfaceindex" visible="no" title=""/>
|
||||
<tab type="interfacehierarchy" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="classes" visible="no" title="">
|
||||
<tab type="classlist" visible="no" title="" intro=""/>
|
||||
<tab type="classindex" visible="no" title=""/>
|
||||
<tab type="hierarchy" visible="no" title="" intro=""/>
|
||||
<tab type="classmembers" visible="no" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="structs" visible="no" title="">
|
||||
<tab type="structlist" visible="no" title="" intro=""/>
|
||||
<tab type="structindex" visible="no" title=""/>
|
||||
</tab>
|
||||
<tab type="exceptions" visible="no" title="">
|
||||
<tab type="exceptionlist" visible="no" title="" intro=""/>
|
||||
<tab type="exceptionindex" visible="no" title=""/>
|
||||
<tab type="exceptionhierarchy" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="files" visible="no" title="">
|
||||
<tab type="filelist" visible="yes" title="Files" intro="The following files are associated with this library."/>
|
||||
<tab type="globals" visible="no" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="examples" visible="yes" title="" intro=""/>
|
||||
</navindex>
|
||||
|
||||
|
||||
<!-- Layout definition for a class page -->
|
||||
<class>
|
||||
<briefdescription visible="yes"/>
|
||||
<includes visible="$SHOW_INCLUDE_FILES"/>
|
||||
<inheritancegraph visible="$CLASS_GRAPH"/>
|
||||
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
|
||||
<memberdecl>
|
||||
<nestedclasses visible="yes" title=""/>
|
||||
<publictypes title=""/>
|
||||
<services title=""/>
|
||||
<interfaces title=""/>
|
||||
<publicslots title=""/>
|
||||
<signals title=""/>
|
||||
<publicmethods title=""/>
|
||||
<publicstaticmethods title=""/>
|
||||
<publicattributes title=""/>
|
||||
<publicstaticattributes title=""/>
|
||||
<protectedtypes title=""/>
|
||||
<protectedslots title=""/>
|
||||
<protectedmethods title=""/>
|
||||
<protectedstaticmethods title=""/>
|
||||
<protectedattributes title=""/>
|
||||
<protectedstaticattributes title=""/>
|
||||
<packagetypes title=""/>
|
||||
<packagemethods title=""/>
|
||||
<packagestaticmethods title=""/>
|
||||
<packageattributes title=""/>
|
||||
<packagestaticattributes title=""/>
|
||||
<properties title=""/>
|
||||
<events title=""/>
|
||||
<privatetypes title=""/>
|
||||
<privateslots title=""/>
|
||||
<privatemethods title=""/>
|
||||
<privatestaticmethods title=""/>
|
||||
<privateattributes title=""/>
|
||||
<privatestaticattributes title=""/>
|
||||
<friends title=""/>
|
||||
<related title="" subtitle=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<inlineclasses title=""/>
|
||||
<typedefs title=""/>
|
||||
<enums title=""/>
|
||||
<services title=""/>
|
||||
<interfaces title=""/>
|
||||
<constructors title=""/>
|
||||
<functions title=""/>
|
||||
<related title=""/>
|
||||
<variables title=""/>
|
||||
<properties title=""/>
|
||||
<events title=""/>
|
||||
</memberdef>
|
||||
<allmemberslink visible="yes"/>
|
||||
<usedfiles visible="$SHOW_USED_FILES"/>
|
||||
<authorsection visible="yes"/>
|
||||
</class>
|
||||
|
||||
|
||||
<!-- Layout definition for a namespace page -->
|
||||
<namespace>
|
||||
<briefdescription visible="yes"/>
|
||||
<memberdecl>
|
||||
<nestednamespaces visible="yes" title=""/>
|
||||
<constantgroups visible="yes" title=""/>
|
||||
<interfaces visible="yes" title=""/>
|
||||
<classes visible="yes" title=""/>
|
||||
<structs visible="yes" title=""/>
|
||||
<exceptions visible="yes" title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<inlineclasses title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
</memberdef>
|
||||
<authorsection visible="yes"/>
|
||||
</namespace>
|
||||
|
||||
|
||||
<!-- Layout definition for a file page -->
|
||||
<file>
|
||||
<briefdescription visible="yes"/>
|
||||
<includes visible="$SHOW_INCLUDE_FILES"/>
|
||||
<includegraph visible="$INCLUDE_GRAPH"/>
|
||||
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
|
||||
<sourcelink visible="yes"/>
|
||||
<memberdecl>
|
||||
<interfaces visible="yes" title=""/>
|
||||
<classes visible="yes" title=""/>
|
||||
<structs visible="yes" title=""/>
|
||||
<exceptions visible="yes" title=""/>
|
||||
<namespaces visible="yes" title=""/>
|
||||
<constantgroups visible="yes" title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<inlineclasses title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
</memberdef>
|
||||
<authorsection/>
|
||||
</file>
|
||||
|
||||
|
||||
<!-- Layout definition for a group page -->
|
||||
<group>
|
||||
<briefdescription visible="yes"/>
|
||||
<groupgraph visible="$GROUP_GRAPHS"/>
|
||||
<memberdecl>
|
||||
<nestedgroups visible="yes" title=""/>
|
||||
<dirs visible="yes" title=""/>
|
||||
<files visible="yes" title=""/>
|
||||
<namespaces visible="yes" title=""/>
|
||||
<classes visible="yes" title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<enumvalues title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<signals title=""/>
|
||||
<publicslots title=""/>
|
||||
<protectedslots title=""/>
|
||||
<privateslots title=""/>
|
||||
<events title=""/>
|
||||
<properties title=""/>
|
||||
<friends title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<pagedocs/>
|
||||
<inlineclasses title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<enumvalues title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<signals title=""/>
|
||||
<publicslots title=""/>
|
||||
<protectedslots title=""/>
|
||||
<privateslots title=""/>
|
||||
<events title=""/>
|
||||
<properties title=""/>
|
||||
<friends title=""/>
|
||||
</memberdef>
|
||||
<authorsection visible="yes"/>
|
||||
</group>
|
||||
|
||||
|
||||
<!-- Layout definition for a directory page -->
|
||||
<directory>
|
||||
<briefdescription visible="yes"/>
|
||||
<directorygraph visible="yes"/>
|
||||
<memberdecl>
|
||||
<dirs visible="yes"/>
|
||||
<files visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
</directory>
|
||||
</doxygenlayout>
|
||||
92
kernel/FreeRTOS-Plus/Source/AWS/sigv4/docs/doxygen/pages.dox
Normal file
92
kernel/FreeRTOS-Plus/Source/AWS/sigv4/docs/doxygen/pages.dox
Normal file
@ -0,0 +1,92 @@
|
||||
/**
|
||||
@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
|
||||
|
||||
<h3>Memory Usage</h3>
|
||||
<p>
|
||||
All functions in the SigV4 library operate only on the buffers provided and use only
|
||||
local variables on the stack.
|
||||
</p>
|
||||
|
||||
<h3>Compliance & Coverage</h3>
|
||||
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
|
||||
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 allows the @section titles to be styled according to
|
||||
style.css -->
|
||||
@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:<br><br>
|
||||
@subpage sigV4_generateHTTPAuthorization_function <br>
|
||||
@subpage sigV4_awsIotDateToIso8601_function <br>
|
||||
|
||||
@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
|
||||
*/
|
||||
|
||||
<!-- We do not use doxygen ALIASes here because there have been issues in the past versions with "^^" newlines within the alias definition. -->
|
||||
/**
|
||||
@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
|
||||
*/
|
||||
@ -0,0 +1,72 @@
|
||||
/**
|
||||
* @page sigv4_porting Porting Guide
|
||||
* @brief Guide for porting the AWS SigV4 Library to a new
|
||||
* platform.
|
||||
*
|
||||
* To use the AWS SigV4 library, a platform must implement the following
|
||||
* components:
|
||||
* 1. [Configuration Macros](@ref sigv4_config_macros)
|
||||
* 2. [Crypto Interface](@ref sigv4_porting_cryptointerface)
|
||||
*
|
||||
* @section sigv4_config_macros Configuration Macros
|
||||
* @brief Configuration macros that can be set in the config header
|
||||
* `sigv4_config.h`, or passed in as compiler options.
|
||||
*
|
||||
* The following optional logging macros are used throughout the library:
|
||||
* - @ref LogError
|
||||
* - @ref LogWarn
|
||||
* - @ref LogInfo
|
||||
* - @ref LogDebug
|
||||
*
|
||||
* @see [Configurations](@ref sigv4_config) for more information.
|
||||
*
|
||||
* @note Regardless of whether the above macros are defined in
|
||||
* `sigv4_config.h` or passed as compiler options, by default the
|
||||
* `sigv4_config.h` file is needed to build the AWS SigV4 Library. To disable this requirement and build the library with
|
||||
* default configuration values, provide
|
||||
* `SIGV4_DO_NOT_USE_CUSTOM_CONFIG` as a compile time preprocessor
|
||||
* macro.
|
||||
*
|
||||
* @section sigv4_porting_cryptointerface Crypto Interface
|
||||
* @brief The AWS SigV4 library relies on the implementation of crypto interface
|
||||
* to provide hash functions used in generating the Authorization header by the library.
|
||||
*
|
||||
* A port must implement functions corresponding to the
|
||||
* following functions pointers:
|
||||
* - [Hash Initialize]: A function to initialize the Hash Context.
|
||||
* @code
|
||||
* int32_t ( * hashInit )( void * pHashContext );
|
||||
* @endcode
|
||||
* - [Hash Update]: A function to update the hash to be calculated with more input data.
|
||||
* @code
|
||||
* int32_t ( * hashUpdate )( void * pHashContext,
|
||||
* const uint8_t * pInput,
|
||||
* size_t inputLen );
|
||||
* @endcode
|
||||
* - [Hash Final]: A function to calculate the final binary digest of the hash from the context.
|
||||
* @code
|
||||
* int32_t ( * hashFinal )( void * pHashContext,
|
||||
* uint8_t * pOutput,
|
||||
* size_t outputLen );
|
||||
* @endcode
|
||||
*
|
||||
* The above three functions take in a pointer to pHashContext which defines the context used
|
||||
* by the above function in calculating the hash. The HashContext must also be
|
||||
* defined by the user's implementation and ought to contain any information
|
||||
* necessary to calculate the hash.
|
||||
* @code
|
||||
* void * pHashContext;
|
||||
* @endcode
|
||||
*
|
||||
* A port must also define the following:
|
||||
* - [Hash Block Length]: The block length of the hash function implemented by the user.
|
||||
* @code
|
||||
* size_t hashBlockLen;
|
||||
* @endcode
|
||||
*
|
||||
* - [Hash Digest Length]: The digest length of the hash function implemented by the user.
|
||||
* @code
|
||||
* size_t hashDigestLen;
|
||||
* @endcode
|
||||
*
|
||||
*/
|
||||
152
kernel/FreeRTOS-Plus/Source/AWS/sigv4/docs/doxygen/style.css
Normal file
152
kernel/FreeRTOS-Plus/Source/AWS/sigv4/docs/doxygen/style.css
Normal file
@ -0,0 +1,152 @@
|
||||
/*
|
||||
* Stylesheet for Doxygen HTML output.
|
||||
*
|
||||
* This file defines styles for custom elements in the header/footer and
|
||||
* overrides some of the default Doxygen styles.
|
||||
*
|
||||
* Styles in this file do not affect the treeview sidebar.
|
||||
*/
|
||||
|
||||
|
||||
/* Set the margins to place a small amount of whitespace on the left and right
|
||||
* side of the page. */
|
||||
div.contents {
|
||||
margin-left:4em;
|
||||
margin-right:4em;
|
||||
}
|
||||
|
||||
|
||||
/* Justify text in paragraphs. */
|
||||
p {
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
|
||||
/* Style of section headings. */
|
||||
h1 {
|
||||
border-bottom: 1px solid #879ECB;
|
||||
color: #354C7B;
|
||||
font-size: 160%;
|
||||
font-weight: normal;
|
||||
padding-bottom: 4px;
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
|
||||
/* Style of subsection headings. */
|
||||
h2:not(.memtitle):not(.groupheader) {
|
||||
font-size: 125%;
|
||||
margin-bottom: 0px;
|
||||
margin-top: 16px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
|
||||
/* Style of paragraphs immediately after subsection headings. */
|
||||
h2 + p {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
|
||||
/* Style of subsection headings. */
|
||||
h3 {
|
||||
font-size: 100%;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 2em;
|
||||
margin-right: 2em;
|
||||
}
|
||||
|
||||
|
||||
/* Style of paragraphs immediately after subsubsection headings. */
|
||||
h3 + p {
|
||||
margin-top: 0px;
|
||||
margin-left: 2em;
|
||||
margin-right: 2em;
|
||||
}
|
||||
|
||||
|
||||
/* Style of the prefix "AWS IoT Device SDK C" that appears in the header. */
|
||||
#csdkprefix {
|
||||
color: #757575;
|
||||
}
|
||||
|
||||
|
||||
/* Style of the "Return to main page" link that appears in the header. */
|
||||
#returntomain {
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
|
||||
/* Style of the dividers on Configuration Settings pages. */
|
||||
div.configpagedivider {
|
||||
margin-left: 0px !important;
|
||||
margin-right: 0px !important;
|
||||
margin-top: 20px !important;
|
||||
}
|
||||
|
||||
|
||||
/* Style of configuration setting names. */
|
||||
dl.section.user ~ h1 {
|
||||
border-bottom: none;
|
||||
color: #000000;
|
||||
font-family: monospace, fixed;
|
||||
font-size: 16px;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 2em;
|
||||
margin-top: 1.5em;
|
||||
}
|
||||
|
||||
|
||||
/* Style of paragraphs on a configuration settings page. */
|
||||
dl.section.user ~ * {
|
||||
margin-bottom: 10px;
|
||||
margin-left: 4em;
|
||||
margin-right: 4em;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
|
||||
/* Hide the configuration setting marker. */
|
||||
dl.section.user {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
/* Overrides for code fragments and lines. */
|
||||
div.fragment {
|
||||
background: #ffffff;
|
||||
border: none;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
|
||||
div.line {
|
||||
color: #3a3a3a;
|
||||
}
|
||||
|
||||
|
||||
/* Overrides for code syntax highlighting colors. */
|
||||
span.comment {
|
||||
color: #008000;
|
||||
}
|
||||
|
||||
|
||||
span.keyword, span.keywordtype, span.keywordflow {
|
||||
color: #0000ff;
|
||||
}
|
||||
|
||||
|
||||
span.preprocessor {
|
||||
color: #50015a;
|
||||
}
|
||||
|
||||
|
||||
span.stringliteral, span.charliteral {
|
||||
color: #800c0c;
|
||||
}
|
||||
|
||||
|
||||
a.code, a.code:visited, a.line, a.line:visited {
|
||||
color: #496194;
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 332 KiB |
@ -0,0 +1,53 @@
|
||||
@startuml
|
||||
skinparam dpi 100
|
||||
skinparam classFontSize 8
|
||||
skinparam classFontName Helvetica
|
||||
autonumber
|
||||
|
||||
box "Application" #LightGreen
|
||||
participant "Application" as application
|
||||
end box
|
||||
|
||||
box "Library" #LightBlue
|
||||
participant "SigV4 Library" as sigv4
|
||||
end box
|
||||
|
||||
box "IoT Server" #Yellow
|
||||
participant "IoT Server" as server
|
||||
end box
|
||||
|
||||
box "AWS Server" #Orange
|
||||
participant "AWS Server" as aws
|
||||
end box
|
||||
activate application
|
||||
|
||||
application -> server : Connect to AWS IOT Credential provider to fetch the temporary credentials
|
||||
server -> application : Connected and retrieved credentials
|
||||
|
||||
application -> application: Parse the temporary credentials
|
||||
|
||||
application -> server : Disconnect from server
|
||||
|
||||
application -> application: Implement crypto interface hash functions.
|
||||
|
||||
application -> sigv4 : Convert the AWS IoT date retrieved from AWS IoT Credential Provider\n to ISO8601 format using (SigV4_AwsIotDateToIso8601) API
|
||||
|
||||
sigv4-> application : Date Converted and written to provided buffer
|
||||
|
||||
application-> aws : Connect to AWS Server for sending the HTTP request
|
||||
|
||||
aws->application : Connected
|
||||
|
||||
application -> sigv4 : Generate Authorization header using (Sigv4_GenerateHTTPAuthorization) API
|
||||
|
||||
|
||||
application->application : Add the Authorization Header to the HTTP request to AWS Server.
|
||||
|
||||
application-> aws : Send the HTTP request to AWS Server to perform the desired action
|
||||
|
||||
aws-> application : Receive HTTP Response from AWS Server
|
||||
application -> aws: Disconnect from AWS server
|
||||
|
||||
deactivate application
|
||||
@enduml
|
||||
|
||||
Reference in New Issue
Block a user