@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

