53 Commits

Author SHA1 Message Date
b1b3a0a3e9 Add variable PKCS11 label support to using_mbedtls_pkcs11 (#723)
The previous "using_mbedtls_pkcs11.c" implementation requires using the device key and device certificate stored under the labels "pkcs11configLABEL_DEVICE_PRIVATE_KEY_FOR_TLS" and "pkcs11configLABEL_DEVICE_CERTIFICATE_FOR_TLS".

This commit updates the NetworkCredentials to include fields for pClientCertLabel and pPrivateKeyLabel, so other labels can be used with PKCS11. This matches the behavior seen in the CSDK.

This commit also updates the "pkcs11_mqtt_mutual_auth_demo" to set the newly-added NetworkCredentials fields.
2021-11-26 10:49:59 -08:00
426ad44c05 Remove using_mbedtls folder and move its content to the parent folder (#717)
Move the contents of FreeRTOS/FreeRTOS-Plus/Source/Application-Protocols/network_transport/using_mbedtls/
to its parent folder i.e. FreeRTOS/FreeRTOS-Plus/Source/Application-Protocols/network_transport/.
This removes one unnecessary folder in the hierarchy.
2021-11-18 13:23:41 -08:00
ecd1a8f9f1 [AUTO][RELEASE]: Bump file header version to "202111.00" 2021-11-13 02:37:14 +00:00
7f268e655a [P3 Release] Update submodule Pointers of the spoke repos in P3 (#707)
* Updating submodule except OTA

* Update Manifest file

* Update Manifest file

* Updating Ota pointer

* Manifest Update
2021-11-11 19:40:09 -08:00
a6dfca9829 Update file header and cellular lib commit (#704) 2021-11-11 09:41:49 +08:00
957fb26dbe Add cellular library submodule path and demo (#695)
* [Cellular] Add cellulr lib submodule and demo app

* [Cellular] Fix memory violation in transport layer and add using LoggingPrintf

* Update FreeRTOS Cellular Interface

* Change the mbedtls usage in FreeRTOS-Plus

* [Cellular] Fix missing spell

* [Cellular] Add manifest.yml

* Fix missing spell

* Update manifest.yml

* [Cellular] Add integration test

* Modify the demo log level to LOG_INFO

* Update cellular interface

* The modification of the folder structure for cellular library

* Rename the naming of demo

* Adjust the location of using_mbedtls and socket_wrapper

* Adjust project setting for relocating using_mbedtls and socket_wrapper

* Turn off PSM mode

* Add start marker for CI validation.

* The modification for mbedtls platform send/recv function for cellular

* Change the project file due to the changes of mbedtls platform send/recv function for cellular

* Fix missing newline and remove unused file

* Add missing configuration.

* Make cellular and freertos tcp plus use the same transport implementation

* Add comment for the macro MBEDTLS_SSL_SEND and MBEDTLS_SSL_RECV

* Make changes from the github comment.
2021-11-10 11:38:44 +08:00
226c987b1a Remove non-ASCII characters (#701)
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
2021-11-08 15:17:52 -08:00
a40172758a Update submodule pointers (#680)
* Update submodule pointers

This is needed to address doxygen failures (Which are already fixed in
the submoduled repos).

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
2021-09-02 12:40:52 -07:00
176f1cae02 [AUTO][RELEASE]: Bump file header version to "202107.00" 2021-07-24 00:32:35 +00:00
40c9e37d10 Updated submodule libraries to latest release (#667)
* Updated submodule libraries to latest release

* Updated pointer for FreeRTOS-Plus-TCP

* Updated README about SNTP

* Updated link for coreSNTP on freertos.org

* Updated corePKCS11 to 'update-pkcs11submodule' branch for testing

* Update corePKCS11 version in manifest.yml

* Updated corePKCS11 pointer to v3.1.0

Co-authored-by: Oscar Michael Abrina <abrinao@amazon.com>
Co-authored-by: Archit Aggarwal <architag@amazon.com>
2021-07-23 17:14:40 -07:00
01614ca997 Replace library links with the application-protocols one (#665)
* Replace library links with the application-protocols one

The ReadMe.txt refers to library link on FreeRTOS.org which will not be available until after the library is released in github. Instead, use top level page https://www.freertos.org/application-protocols.html which lists all the libraries in this directory which is also easy for user to navigate and could avoid this issue when releasing new library.

* Update FreeRTOS-Plus/Source/Application-Protocols/readme.txt

Co-authored-by: Archit Aggarwal <architag@amazon.com>

* Update FreeRTOS-Plus/Source/Application-Protocols/readme.txt

Co-authored-by: Paul Bartell <pbartell@amazon.com>

Co-authored-by: Archit Aggarwal <architag@amazon.com>
Co-authored-by: Paul Bartell <pbartell@amazon.com>
2021-07-23 12:48:59 -07:00
63d38b846e Remove redundant mbedtls error sources (#654)
Since `mbedtls_error.c` is already part of the mbedTLS submodule, the duplicate files are removed from this repository.

Co-authored-by: Cobus van Eeden <35851496+cobusve@users.noreply.github.com>
2021-07-19 16:17:18 -07:00
3fd635b39e [P3] Submodule pointer update to LTS Libraries (#640)
* moved submodule to backoff v1.0.1

* move corehttp module to latest commit

* move coremqtt module to latest commit

* move coremqtt Agent module to latest commit

* move coreSNTP Agent module to latest commit

* move coreJSON Agent module to latest commit

* move corePKCS11 Agent module to latest commit

* Reverting coreHttp to previous commit

* Updating coreHttp pointer after fix
2021-07-14 12:10:35 -07:00
ac5bf3b934 Update coreSNTP submodule and coreSNTP demo (#631)
Update the coreSNTP submodule to the latest commit. Also, make updates to the coreSNTP demo for the new changes in the SNTP library which include the following:

1. Update to the type for packet size from size_t to uint16_t for parameters in the transport and authentication interfaces.
2. Change in the call to Sntp_SendTimeRequest API to pass the new blockTimeMs parameter added to the API.
3. Update to the clock-offfset type from int32_t to int64_t for representing information in milliseconds. To accommodate this update in the SntpSetTime_t interface, the mathematical model for representing system clock has been updated to store slew rate as milliseconds/second (instead of second/second). This change improves the accuracy of the WinSim demo time correction (because the milliseconds of time difference between server and client time is corrected over the entire polling interval which makes a significant difference!).

This PR also adds demo config macros for setting the block time values passed to the Sntp_SendTimeRequest and Sntp_ReceiveTimeResponse APIs.
2021-06-25 12:19:00 -07:00
f771faef4a Add unauthenticated mode demo for coreSNTP library for time synchronization (#621)
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).
2021-06-10 13:42:42 -07:00
971a6e1d22 Merge FreeRTOS 202104.00 to main (#585) 2021-04-29 14:53:40 -07:00
43bd42db27 Rename MQTT Agent structs and files (#576) 2021-04-26 11:29:50 -07:00
fd9c1eb7a5 Automate doxygen ZIP creation with GitHub Action (#568)
Automate creation of doxygen ZIP output by using the custom doxygen GitHub Action, that has been updated to generate ZIP artifact in PR
2021-04-21 13:52:01 -07:00
1e2f99a11b Add feature to set credentials using buffer in MQTT_Mutual_Auth_wolfSSL demo (#522)
* Add feature to set credentials using buffer
* Change instructions for giving credential data via buffer
2021-04-21 11:09:43 -07:00
ef6194a7ce Replace multithreading demo with MQTT Agent (#563)
* Update MQTT agent submodule

* Copy MQTT agent demo files

* Remove other demos from connection manager

* Update demo config and uncrustify

* Update readme files

* Fix headers
2021-04-20 17:27:10 -07:00
1f47a22b23 Add MQTT Agent submodule (#551)
* Add MQTT Agent submodule

* Add MQTT agent platform files

Co-authored-by: abhidixi11 <44424462+abhidixi11@users.noreply.github.com>
Co-authored-by: Joseph Julicher <jjulicher@mac.com>
2021-04-09 11:17:06 -07:00
a78cb45d12 Minor changes to wolfSSL MQTT demo files (#493)
* 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>
2021-02-04 16:17:34 -08:00
dfdf2ddf1f Add MQTT_Mutual_Auth_wolfSSL demo (#464)
Add a demo that shows MQTT over TLS mutual authentication connection and communication with a broken when using wolfSSL as the TLS library.
2021-02-02 17:28:43 -08:00
52c9756f21 Call taskYIELD after calling FreeRTOS_send in Plaintext_FreeRTOS_send (#491)
FreeRTOS_send adds the packet to be sent to the IP task's queue for
later processing. The packet is sent later by the IP task. When
FreeRTOS is used in collaborative mode (i.e. configUSE_PREEMPTION is 0),
the Plaintext_FreeRTOS_send function returns without actually sending
the packet as the IP task never gets a chance to run.

The fact that Plaintext_FreeRTOS_send returns without actually sending
the packet causes an issue in the MQTT_Connect which expects the CONNECT
packet to be actually sent and waits for CONNACK.

This commit adds a taskYIELD call after calling FreeRTOS_send to ensure
that the IP task gets a chance to run and send the packet before the
Plaintext_FreeRTOS_send function returns.
2021-01-25 14:30:42 -08:00
da9b9a800d [AUTO][RELEASE]: Bump file header version to "202012.00" 2020-12-15 11:50:37 -07:00
45ba920ad0 [AUTO][RELEASE]: Bump submodules per manifest.yml for V202012.00 2020-12-15 10:22:10 -07:00
6155c025a2 Update submodules of CSDK libraries (#473) 2020-12-13 17:31:14 -08:00
a503a3a7a0 Add links to the MQTT agent in the non-agent mqtt demos (#470)
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.
2020-12-11 21:12:44 -08:00
f23752164b Map errors from FreeRTOS+TCP to mbedTLS and make read non-blocking when requesting start of frame (#452)
From the FreeRTOS documentation, pdFREERTOS_ERRNO_ENOSPC means that timeout occurred before any data could be sent or received.
- In the plaintext transport-interface implementation, we would directly return `-pdFREERTOS_ERRNO_ENOSPC`. However, an error like this can occur when the TCP buffer is full, so this ought to be retriable. Libraries that consume the transport interface interpret a return value of 0 to mean that send/recv can be invoked again to get the data. As such, we should appropriately set the return value as 0 when the status is `-pdFREERTOS_ERRNO_ENOSPC`.
- In the mbedTLS port, we would directly return whatever `FreeRTOS_send` or `FreeRTOS_recv` returns. However, sometimes, the return value can be an error. In such cases, we ought to map an error from FreeRTOS+TCP to an equivalent error in mbedTLS. In the case of `-pdFREERTOS_ERRNO_ENOSPC`, we map that to `MBEDTLS_ERR_SSL_TIMEOUT`. When the mbedTLS transport-interface send/recv wrapper sees that value, it appropriately returns 0, so that the library can retry the send/recv. I've verified that when the mbedTLS port returns an error, that same error is returned by `mbedtls_ssl_write` & `mbedtls_ssl_read`.
- The TCP socket may have a receive block time.  If bytesToRecv is greater than 1 then a frame is likely already part way through reception and blocking to wait for the desired number of bytes to be available is the
most efficient thing to do.  If bytesToRecv is 1 then this may be a speculative call to read to find the start of a new frame, in which case blocking is not desirable as it could block an entire protocol agent task for the duration of the read block time and therefore negatively impact performance.  So if bytesToRecv is 1 then don't call recv unless it is known that bytes are already available.

Co-authored-by: abhidixi11 <44424462+abhidixi11@users.noreply.github.com>
Co-authored-by: RichardBarry <3073890+RichardBarry@users.noreply.github.com>
2020-12-11 12:51:45 -08:00
1c2c671e7a Update comments about NetworkContext definition (#461)
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>
2020-12-11 11:09:03 -08:00
d93a3d63a0 Update demos to use version macro from coreMQTT (#460)
Update demos to use the MQTT_LIBRARY_VERSION macro for the coreMQTT version they report in their metrics
2020-12-10 12:05:02 -08:00
c0d4c7c67c Update MQTT config for Keep Alive demo that uses dummy timer (#457)
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.
2020-12-09 19:02:51 -08:00
492ac6edb2 Move corePKCS11 forward and update to latest core_pkcs11.h (#441)
* Move corePKCS11 forward.
* Update licenses.
* strip NULL terminator.
* Add threading_alt.h
* Use github link.

Co-authored-by: Cobus van Eeden <35851496+cobusve@users.noreply.github.com>
2020-12-07 17:30:20 -08:00
46acf2863a Update readme.txt (#446)
* Update readme.txt

* Update readme.txt

* Update readme.txt

* Update check-header.py

Co-authored-by: Joseph Julicher <jjulicher@mac.com>
2020-12-04 14:16:57 -08:00
73b0d1b259 Support multiple transports in the same compilation unit (#434)
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.
2020-12-01 17:24:18 -08:00
56a86428fe Preparation for coreHTTP demos (#413)
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.
2020-11-19 20:03:59 -05:00
6debf6a2c0 Add #ifndef guards for SdkLog definition to fix conflicting definitions (#403) 2020-11-12 11:10:12 -08:00
21878bd619 Allow overriding default definitions of logging macros (#384)
* 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>
2020-11-09 15:07:19 -08:00
5d3b3cb1c7 Multiple tidy up and corrections preparing for release (#390)
* 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
2020-11-09 14:50:33 -08:00
01e59a036c Restructure platform directory (#382)
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.
2020-11-05 16:47:43 -08:00
25cd833fd6 Rename platform files and submodules (#374)
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.
2020-11-03 11:51:02 -08:00
4124ac0c57 Update path to transport_interface.h from the coreMQTT submodule (#368)
Use transport_interface.h from the source/interface folder of coreMQTT submodule in the MQTT demos as this path was changed recently.
2020-10-29 10:22:15 -07:00
559772a4db Update unused headers and NULL checks for platform wrappers (#367)
- Remove unused headers in the plaintext FreeRTOS sockets wrapper
- Update MFLN even though the preceding optional configuration returned an mbedTLS error
- Remove an unused `NULL` check in a private method that is already checked by the public connect method
- Add a `NULL` check to the public disconnect method

Co-authored-by: Joseph Julicher <jjulicher@mac.com>
2020-10-28 11:11:55 -07:00
f960c4465f Update coreMQTT submodule pointer and sync transport interface (#358)
Because the const qualifier was removed in PR #356, coreMQTT also needs to be updated to remove it.
2020-10-21 12:11:41 -07:00
398abbaa61 Update transport interface to remove const qualifier from NetworkContext_t * in send/recv (#356)
This removes a warning involving const qualifiers. The NetworkContext_t * cannot be declared as const in TransportRecv and TransportSend because mbedtls_ssl_write and mbedtls_ssl_read require non-const pointers. Therefore, the const qualifier is removed from transport_interface.h.
2020-10-21 09:39:20 -07:00
2eed409577 Configure maximum fragment length extension. (#350) 2020-10-18 16:57:47 -07:00
15a7337ee0 Rename PKCS files to core. (#344)
* Rename PKCS files to core.
* Pin latest corePKCS11 release.
2020-10-16 13:38:25 -07:00
e3b7a56dc8 Update coreMQTT, coreJSON, and AWS Device Shadow submodules to latest commits (#346)
This updates submodules for coreMQTT, coreJSON, and AWS Device Shadow. Some of which contain library fixes.

* Update coreMQTT to latest commit

* Update submodules for coreJSON and AWS Device Shadow to latest commit
2020-10-14 10:48:33 -07:00
5f0bf944cb Fix MISRA warnings for platform code used by MQTT demos (#337)
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>
2020-10-13 12:55:26 -07:00
748222bc07 Small MQTT Plaintext hygiene updates (#324)
- 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>
2020-10-12 18:36:31 -07:00