This is an automated email from the ASF dual-hosted git repository. xiaoxiang781216 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit cf9c51d14485f462c1a2a091a5989fe4b8e3c3d7 Author: Felipe Moura <[email protected]> AuthorDate: Sun Jun 7 23:23:43 2026 -0300 Documentation/examples/rng90: add RNG90 application documentation Document configuration, usage, Kconfig enable path, and hardware validation for the RNG90 example. Signed-off-by: Felipe Moura <[email protected]> --- .../applications/examples/rng90/index.rst | 118 +++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/Documentation/applications/examples/rng90/index.rst b/Documentation/applications/examples/rng90/index.rst new file mode 100644 index 00000000000..1f91ace7101 --- /dev/null +++ b/Documentation/applications/examples/rng90/index.rst @@ -0,0 +1,118 @@ +============================= +``rng90`` RNG90 TRNG Example +============================= + +The ``rng90`` example is a simple NuttX application that opens an RNG90 device +node, reads random bytes, and prints them in hexadecimal format. + +RNG90 is a dedicated hardware random number generator IC from Microchip. It can +be used as a companion device for microcontrollers that do not provide native +true random number generation (TRNG). + +According to the Microchip RNG90 product page and linked validation artifacts, +the device is presented as a FIPS 140-3 compliant random number generator with +SP 800-90 A/B/C alignment, with references to NIST validation entries such as +entropy certificate E194 and DRBG validation A3013. + +Microchip also positions this device for disposable/ecosystem-control +applications, which makes it a practical choice for cost-sensitive designs. + +Configuration +============= + +Enable this application in ``menuconfig``: + +- ``Application Configuration -> Examples -> Microchip RNG90 TRNG example`` + +Required dependency: + +- Enable the driver in ``menuconfig``: + ``Device Drivers -> Cryptographic Device Drivers -> Enable Microchip RNG90 TRNG`` + (``CONFIG_DEV_RNG90``) + +Application options: + +- ``CONFIG_EXAMPLES_RNG90`` +- ``CONFIG_EXAMPLES_RNG90_PROGNAME`` (default: ``"rng90"``) +- ``CONFIG_EXAMPLES_RNG90_DEVPATH`` (default: ``"/dev/rng0"``) +- ``CONFIG_EXAMPLES_RNG90_PRIORITY`` +- ``CONFIG_EXAMPLES_RNG90_STACKSIZE`` + +Usage +===== + +From NSH:: + + rng90 [<devpath>] [<count>] + +Arguments: + +- ``<devpath>``: RNG90 device path (default from + ``CONFIG_EXAMPLES_RNG90_DEVPATH``) +- ``<count>``: number of random bytes to read (``1..32``, default ``32``) + +Examples:: + + rng90 + rng90 /dev/rng0 16 + +Expected output +=============== + +:: + + RNG90 example: device /dev/rng0 + Read 16 random byte(s): + 3f a1 7c ... + +Notes +===== + +- Opening the device wakes up RNG90. +- Closing the device puts RNG90 back to sleep. +- If ``<count>`` is outside ``1..32``, the app clamps it to ``32``. + +Hardware validation log +======================= + +The following session was executed on real hardware to validate this example. + +Test setup: + +- Host: macOS +- Board: ``esp32c3-devkit`` +- Serial port: ``/dev/cu.wchusbserial140`` +- Serial settings: ``115200 8N1`` + +Console transcript:: + + nsh> uname -a + NuttX 12.6.0-RC1 4130050287-dirty Jun 7 2026 22:11:21 risc-v esp32c3-devkit + nsh> ls /dev/rng0 + /dev/rng0 + nsh> rng90 + RNG90 example: device /dev/rng0 + Read 32 random byte(s): + 0d b2 71 d1 40 1f 3c 50 52 3d c6 2c a9 74 ec 60 + 44 ab 67 bb c4 34 1b ac 48 62 fe b9 fd 95 c9 cb + nsh> rng90 /dev/rng0 16 + RNG90 example: device /dev/rng0 + Read 16 random byte(s): + ef 82 5f b7 41 f1 48 13 5a 41 16 3a 67 1b 90 f2 + nsh> rng90 /dev/rng0 64 + Invalid count 64, clamping to 32 + RNG90 example: device /dev/rng0 + Read 32 random byte(s): + bb be 2f 20 7f c8 33 8d 18 90 c8 fb 94 db bc e6 + 84 41 17 6f 5a be 5a 06 c3 7b f1 30 ac f2 a6 f5 + nsh> + +References +========== + +- Microchip product page: + https://www.microchip.com/en-us/product/RNG90 +- NIST CMVP entropy certificate E194: + https://csrc.nist.gov/projects/cryptographic-module-validation-program/entropy-validations/certificate/194 +- NIST CAVP DRBG validation A3013: + https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program/details?validation=35623
