Update the coreSNTP demo to showcase use of symmetric key algorithm of authentication scheme for securing SNTP communication between client and server.
The demo uses the AES-128-CMAC algorithm for the generating Message Authentication Code for the client on sending the SNTP time request to server as well as validating the server response received by verifying if the payload present authentication code can be generated. Use of an authentication mechanism in SNTP communication protects against server spoofing attacks as well as man-in-the-middle attacks of server response modification.
The demo uses corePKCS11 library for the AES-CMAC operations. Also, the demo adds functionality of generating random number, using corePKCS11, for sending as a parameter to the Sntp_SendTimeRequest API.
Note: For symmetric key based security mechanism to be protective against malicious, it is IMPORTANT to securely pre-share the symmetric key between client and server.
Add the FreeRTOS/coreSNTP library as a submodule (along with manifest.yaml file update) and add a demo project to showcase use of the coreSNTP library for having a SNTP client daemon in the system for periodically synchronizing system time with the internet to maintain Coordinated Univeral Time (UTC) in a device. This demo maintains UTC time of system in RAM, thereby, representing systems without a Real-Time Clock (RTC) module in the device.
Note: This demo shows use of coreSNTP library for SNTP communication with NTP/SNTP time servers in non-authenticated mode (i.e. without any security mechanism payload beyond the standard 48 bytes of NTP packet exchange between client-server).
* Added spell check
* All words
* Add a missing word
* Fix header checks
* Fix header checks v1
* Fix header check v2
* Updated freertos link in header
* Fixed afr link in the header
* Fix last of header checks
* Update the spell check script to check amazon licensed files only
* Fixed paths and added comments
* Try with modified repo
* Add inplace substitute option to sed
* Use official repo as the spell checker source
* Add vendor file to the ignored list
Co-authored-by: root <root@ip-172-31-5-28.us-west-2.compute.internal>
This change adds the OTA demos and required dependencies and helper components .
* Add demos , configs and project files
* Add subscription manager
* Add HTTP utils
* Submodules the OTA LTS 3.0 Library.
* Add OTA pal
It is recommended by the AWS IoT Jobs service to use DescribeJobExecution API for scaling purposes instead of StartNextPendingJobExecution API. Thus, update the Jobs demo to replace the latter API call with the former API call.
* Clean up demo config for wolfSSL mutual auth.
* Add comment about picking the correct ROOT CA.
* uncrustify using_wolfSSL.c and some other code style changes.
* Apply suggestions from code review
Co-authored-by: Archit Aggarwal <architag@amazon.com>
Add URL file links to the MQTT agent documentation page.
Add comment blocks into each demo that also point toward the MQTT agent documentation to ensure users are aware the agent method exists.
* Set mbedtls submodule tag to v2.24.0
* Update projects
Co-authored-by: Oscar Michael Abrina <abrinao@amazon.com>
Co-authored-by: Cobus van Eeden <35851496+cobusve@users.noreply.github.com>
- Adding a comment to the top of S3 download and multi-threaded download demo source code files, to explain how to handle S3 request limits. This is done to prevent users from treating this case as a bug.
- Increasing ipconfigTCP_RX_BUFFER_LENGTH to 5000, as was done recently for other demos.
Small change that simply specifies why the NetworkContext must be defined by each compilation unit along with details on how to include it to your project.
Co-authored-by: Cobus van Eeden <35851496+cobusve@users.noreply.github.com>
The MQTT library has been updated with the MQTT_RECV_POLLING_TIMEOUT_MS and MQTT_SEND_RETRY_TIMEOUT_MS configurations which should be set to zero when using a dummy timer function to avoid possibility of infinite loop when retrying failed transport send/receive calls. As the MQTT Keep Alive demo uses a dummy timer function, this PR updates the demo configuration to set these timeouts to zero.
Adding demo to demonstrate the use of pre-signed URLs to connect and download from a S3 bucket. Sends multiple GET requests synchronously to download a file in chunks using range headers. Uses a request and response task in addition to the main HTTP servicing task.
Switch MQTT helpers to logging error message instead of error code.
Adds time parameter to xProccessLoop so defender demo does not wait extra time.
Fixes some incorrect returns in metrics_collector.c
* Submodule wolfSSL and move wolfSSL and WolfSSL-FIPS-Ready to ThirdParty folder.
* Update VS studio project.
* Update FIPS project settings.
* Update FIPS demo readme.
* Add md to ignored file extensions.
Adding demo to use script-generated pre-signed URLs to establish a TLS connection and upload a small file to an S3 bucket using a single PUT request, and then verify the upload by obtaining the file size from S3 and comparing it to the size of the local file.
Adding demo to use script-generated pre-signed URLs to establish a TLS connection and synchronously download a file from an S3 bucket, with multiple GET requests.
* Add FreeRTOS+TCP UDP only demo.
* Update folder name and remove old one
* Update the network interface to be used.
* Update headers
* Update header
* Header update and folder name correction
* Remove WinPCap folder
By removing the definition of the NetworkContext struct in the header file, we allow the application to define it. This allows an application writer to use multiple transports in the same compilation unit. That way, multiple .c files do not have to be created for each transport.
The API of FreeRTOS/backoffAlgorithm library has changed to remove dependency on random number generator; instead require the caller to generate the random number and pass it to the BackoffAlgorithm_GetNextBackoff API for backoff period calculation. This PR updates the submodule pointer commit, and updates the demos and tests to use the simplied library API
Adds the HTTP plaintext demo from C SDK. No functionality is changed, but naming is updated appropriately. It is using freertos_plus_tcp plaintext transport implementation to send HTTP requests and then logs the response from the server.
Add demo to establish a mutually-authenticated network connection with the server before sending and verifying a simple POST request.
* Add demo files
* Move all "Http_Demo_Helpers" files into Common
* Update project files and add vendor config files
* Update http_demo_utils.c after backoff updates
A new repository, FreeRTOS/backoffAlgorithm, has been created for hosting the library for backoff calculation. This repo replaces the FreeRTOS-Plus/Source/Utilities/exponential_backoff with the submodule to the new repository, and updates all the demos that use retry logic to use the backoffAlgorithm API
Adding common utilities that will be used by 4 coreHTTP demos:
- Adding coreHTTP submodule pointer to FreeRTOS-Plus/Source/Application-Protocols/coreHTTP
- Adding folder FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Http_Demo_Helpers with functions common to demos.
* Add helpful asterisk comments to the shadow demo.
* Update FreeRTOS-Plus/Demo/AWS/Device_Shadow_Windows_Simulator/Device_Shadow_Demo/DemoTasks/ShadowDemoMainExample.c
* Add stuff to the license header for GHA checks.
* Add submodule pointer to the aws/jobs-for-aws-iot-embedded-sdk repository for the Jobs library
* Commonize the MQTT helper functions used by the Device Shadow demo by re-locating them to FreeRTOS-Plus/Demo/AWS/MQTT_Demo_Helpers and updating the Device Shadow demo to use the new files
* URLs have changed on the FreeRTOS.org site - this commit matches the URLs in the code with the new URLs on the website.
* Add link to device shadow directory to the shadow docs.
* Update main.c
* Update main.c
* Update readme.txt
* Update main.c
* Update main.c
* Update readme.txt
Co-authored-by: yngki <47755894+yngki@users.noreply.github.com>
* Fix logging stack to print message in the first SdkLog
* Do not log metadata if on the same line
* Fix wrong var name
* Change task names to DemoTask
* Change for shadow too
* Move declaration to a separate line
Co-authored-by: Gary Wicker <14828980+gkwicker@users.noreply.github.com>
* Update logging_stack.h file to avoid use of __FUNCTION__ macro
* Revert to use __FUNCTION__ instead of __FILE__
* Fix comment about metadata format
* Fix incorrect mapping of SdkLog function
* Fix typo causing LOG_METADATA_ARGS to be undefined
* Fix another bug with SdkLog macro definition
* Fix formatting
* Move mapping of SdkLog to vLoggingPrintf from logging_stack to config files
* Remove dependency of LIBRARY_LOG_NAME on LIBRARY_METADATA_* macros
* Minor improvements
Co-authored-by: Gary Wicker <14828980+gkwicker@users.noreply.github.com>
Co-authored-by: RichardBarry <3073890+RichardBarry@users.noreply.github.com>
Only comments have changed. No code changes.
Co-authored-by: Cobus van Eeden <35851496+cobusve@users.noreply.github.com>
Co-authored-by: Gary Wicker <14828980+gkwicker@users.noreply.github.com>
* Update to the WolfSSL FIPS ready demo: Add a debug break point into the configASSERT() implementation along with a comment telling users how to update the integrity check hash if they hit the breakpoint.
* Updates in the root directory: Remove "New - Stream and Message Buffers.url" as the feature is no longer new, and edit the readme.md file as the repo now contains 'core' libraries in addition to 'FreeRTOS+' libraries.
* FreeRTOS-Plus/Source/Utilities: Add readme files and links to documentation.
* Application-Protocols: Add readme and URL links.
* Remove Index.html from the end of a URL in the readme.txt file.
* Demo-IP-Protocols: Add readme.txt files and code comments saying the protocols are not intended for production use.
* coreMQTT: Remove links to deprecated documentation, add readme and correct links to documentation.
* General: Correct URLs in source files and .url files.
* Update readme.txt
* Fix logging issue caused by using \n as the default newline character
* Update the other demos
* Fix accidentally changed NETWORK_INTERFACE
* Set \r\n as default instead
* Update sources to reflect \r\n change
* Get rid of configLOGGING_NEW_LINE altogether
Co-authored-by: abhidixi11 <44424462+abhidixi11@users.noreply.github.com>
* Fix wrong comments in shadow_demo_helpers.c
* Fix file brief description in shadow_demo_helpers.c
* Revise the comment for democonfigMQTT_BROKER_ENDPOINT
This updates the platform and logging directory and moves it to the following places:
FreeRTOS\FreeRTOS-Plus\Source\Utilities
FreeRTOS\FreeRTOS-Plus\Source\Application-Protocols\network_transport\freertos_plus_tcp
Project files are updated to follow suite. All updated demos are tested to work as expected.
printf-stdarg.c seems have to been moved by mistake when moving logging sources to a common folder.
Also, because logging.c is specific to Windows, it is moved to FreeRTOS-Plus/Demo/Common/Logging/Logging_WinSim.c.
This updates FreeRTOS-Plus/Source/Application-Protocols/platform folder based on feedback to include separate folders for tls and plaintext. In addition, the device-shadow-for-aws-iot-embedded-c submodule is renamed to device-shadow.
Because we would like to show an example of how the coreMQTT library is used without an actual timer query function, the keep-alive demo is updated to used a mocked function that always returns 0. As such, MQTT_ReceiveLoop must be passed a timeout of 0 so that it runs for exactly 1 iteration. Therefore, MQTT_ReceiveLoop is called repeatedly until an acknowledgement packet from the broker is received or the maximum iterations are reached.
* deleted old version wolfSSL before updating
* updated wolfSSL to the latest version(v4.4.0)
* updated wolfSSL to the latest version(v4.4.0)
* added macros for timing resistance
* Add wolfSSL-FIPS-Ready to Demo and Source
* Add wolfSSL-FIPS-Ready to Demo and Source
* Update README_wolfSSL_FIPS_Ready.md
* Remove unused files
* Update to wolfSSL-4.5.0-FIPS-Ready
* Increase FIPS version number for the default
* Update wolfSSL to the latest version(v.4.5.0)
* Fix version number
* Fix comments from github
Co-authored-by: RichardBarry <3073890+RichardBarry@users.noreply.github.com>
Co-authored-by: Ming Yue <mingyue86010@gmail.com>
Co-authored-by: Aniruddha Kanhere <60444055+AniruddhaKanhere@users.noreply.github.com>
Co-authored-by: Cobus van Eeden <35851496+cobusve@users.noreply.github.com>
Co-authored-by: Alfred Gedeon <alfred2g@hotmail.com>
* Add a daemon socket listener so that the process loop will only execute if data is available on the socket.
* Set process loop timeout to 0 so that other commands do not have to wait for a process loop that isn't doing anything.
* Add an additional publisher task to show multiple tasks publishing simultaneously.
* Clarify what is meant by "synchronous" and "asynchronous" publishes.
* Fix possible race condition in task notification waits.
* Move task notification wait loop to its own function.
* The prvMQTTConnect function was doing more than just connecting, so it was split into more functions.
* Minor name changes for clarity.
* Add macros for AWS IoT metrics
This adds instructions for setting up a local Mosquitto broker on Windows for use with the coreMQTT demos. There are different instructions for mutual auth, server auth, and plaintext.
This creates a democonfigDISABLE_SNI option for the demos so that it can easily be toggled by users who are using a local MQTT broker with no hostname. However, it is and should be enabled by default whenever possible.
Fixes build warnings by making the following changes:
- Add header file for snprintf to prevent building warning in Visual Studio.
- Add for compiler warning about unused parameters.
As suggested, because logging_stack.h and logging_levels.h are used not only by demos but also by platform-specific transport code, it would make sense to move FreeRTOS-Plus/Demos/Common/Logging to FreeRTOS-Plus/Source/Logging. The same is done for demo_logging.c and demo_logging.h, which are duplicated by several demos. Win32.vcxproj project files are also updated to follow suite.
The mbedTLS sources used to show up in the root directory of the Visual Studio Project. This change updates WIN32.vcxproj.filters so that it appears under FreeRTOS+\mbedtls\library instead.
* Port shadow demo from product 4
* Fix coding style and formating
* Change assert to configASSERT and fix comments.
* Delete the demo task when it finish
* Relocate the shadow demo code under AWS folder.
* Fix uncrustify.
* Update FreeRTOS-Plus/Demo/AWS/Device_Shadow_Windows_Simulator/Device_Shadow_Demo/DemoTasks/ShadowDemoMainExample.c
Co-authored-by: Oscar Michael Abrina <abrinao@amazon.com>
* Update FreeRTOS-Plus/Demo/AWS/Device_Shadow_Windows_Simulator/Device_Shadow_Demo/DemoTasks/ShadowDemoMainExample.c
Co-authored-by: Oscar Michael Abrina <abrinao@amazon.com>
* Fix comments
* Update from comments.
Co-authored-by: Oscar Michael Abrina <abrinao@amazon.com>
* Break from potentially infinite loops in connection sharing demo
* Use QoS1 subscription for resilience against network disconnect
Co-authored-by: Oscar Michael Abrina <abrinao@amazon.com>
- Porting MQTT basic TLS demo from C-SDK.
- This demo shows the use of the managed MQTT API over a server-authenticated connection.
Co-authored-by: Cobus van Eeden <35851496+cobusve@users.noreply.github.com>
* Some update to the demo comments and other fixes.
- Delete the leading underscore in the milliseconds helper macros.
- Add articles to some comments.
- Add clarify to come comments.
- Delete the extraneous line endings of log statements.
- Delete unused headers in the keep-alive demo.
Co-authored-by: Oscar Michael Abrina <abrinao@amazon.com>
Some demos like MQTT plaintext, serializer, and keep alive do not use @param[in] or @param[out] and instead use @param only. This change makes it so that the style matches among all demos. In addition, because FREERTOS_CONFIG_H has no trailing underscore, CORE_MQTT_CONFIG_H_ is changed to CORE_MQTT_CONFIG_H and same for MBEDTLS_CONFIG_H_.
In addition to fixing MISRA warnings, code is updated to have complexity <= 8. Also, this adds changes from PR #313, which allows the support of simultaneous connections in the mbedTLS transport wrapper.
Co-authored-by: Muneeb Ahmed <54290492+muneebahmed10@users.noreply.github.com>
- Fix the config file header include gaurd
- Fixes comments only in the main prvMQTTDemoTask( void * pvParameters )
- Deletes unused headers.
- Check the return value of MQTT_Disconnect().
Co-authored-by: Oscar Michael Abrina <abrinao@amazon.com>
MQTT allows authentication through a username/password in the CONNECT packet. This PR allows the username/password to be passed that way through a config macro. Metrics are also collected for AWS IoT Core through a set of configurable macros that are hard coded to FreeRTOS #tskKERNEL_VERSION_NUMBER. The appropriate ALPN protocols are passed when using AWS IoT Core for username/password authentication.
This moves the MQTT Multitasking Demo under FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/MQTT_Multitask
The project files such as WIN32.vcxproj and WIN32.vcxproj.filters are updated to point to the sources and includes from the coreMQTT submodule.
No changes are made to the actual code. Only paths are updated.
Co-authored-by: Muneeb Ahmed <54290492+muneebahmed10@users.noreply.github.com>
This moves the MQTT Mutual Auth Demo under FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/MQTT_Mutual_Auth
The project files such as WIN32.vcxproj and WIN32.vcxproj.filters are updated to point to the sources and includes from the coreMQTT submodule.
No changes are made to the actual code. Only paths are updated.
Co-authored-by: Muneeb Ahmed <54290492+muneebahmed10@users.noreply.github.com>
Co-authored-by: SarenaAWS <6563840+sarenameas@users.noreply.github.com>
Co-authored-by: leegeth <51681119+leegeth@users.noreply.github.com>
This moves the MQTT Serializer Demo under FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/MQTT_Serializer.
The project files such as WIN32.vcxproj and WIN32.vcxproj.filters are updated to point to the sources and includes from the coreMQTT submodule.
No changes are made to the actual code. Only names and paths are updated.
Co-authored-by: leegeth <51681119+leegeth@users.noreply.github.com>
Co-authored-by: Muneeb Ahmed <54290492+muneebahmed10@users.noreply.github.com>
This moves the MQTT Keep-Alive Demo under FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/MQTT_Keep_Alive.
The project files such as WIN32.vcxproj and WIN32.vcxproj.filters are updated to point to the sources and includes from the coreMQTT submodule.
No changes are made to the actual code. Only paths are updated.
Co-authored-by: SarenaAWS <6563840+sarenameas@users.noreply.github.com>
This moves the MQTT Plaintext Demo under FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/MQTT_Plain_Text
The project files such as WIN32.vcxproj and WIN32.vcxproj.filters are updated to point to the sources and includes from the coreMQTT submodule.
Co-authored-by: Muneeb Ahmed <54290492+muneebahmed10@users.noreply.github.com>
Co-authored-by: leegeth <51681119+leegeth@users.noreply.github.com>
Co-authored-by: Archit Aggarwal <architag@amazon.com>
* deleted old version wolfSSL before updating
* updated wolfSSL to the latest version(v4.4.0)
* updated wolfSSL to the latest version(v4.4.0)
* added macros for timing resistance
Co-authored-by: RichardBarry <3073890+RichardBarry@users.noreply.github.com>
Co-authored-by: Ming Yue <mingyue86010@gmail.com>
prvTransferConnect() now returns:
- pdTRUE: everything's good. pdTRUE = 1.
- -pdFREERTOS_ERRNO_ENOMEM: FreeRTOS_socket() failed. -pdFREERTOS_ERRNO_ENOMEM = -12.
- -pdFREERTOS_ERRNO_EINVAL || -pdFREERTOS_ERRNO_ECANCELED: FreeRTOS_bind() failed. Negative values.
Thus, at line 569 and line 617, needs to check != pdTRUE instead of == pdFALSE.
This commit is done on behalf of Alfred.
IotTaskPool_GetSystemTaskPool has been removed from the cut down version
of the task pool. define IOT_SYSTEM_TASKPOOL to NULL so that the MQTT library
builds successfully.
Use the new #defines in the iot_config.h.
The DNS cache entry size was not big enough to fit the DNS name and
as a result the DNS reply parsing code returned error. Increased the
size of the entry to ensure that the DNS name can fit in.
The example now creates a recyclable job, schedules it and returns it
back to the task pool when it is done. It then again creates a
recyclable job and ensures that the task pool the same job present
it its cache.