ThreadX docsThreadX docs
ThreadX
ThreadX Modules
NetX Duo
FileX
GUIX
USBX
TraceX
LevelX
ThreadX
ThreadX Modules
NetX Duo
FileX
GUIX
USBX
TraceX
LevelX
  • NetX Duo Documentation

    • Understand NetX Duo
    • NetX Duo documentation
    • Chapter 1 - Introduction to NetX Duo
    • Chapter 2 - Installation and Use of NetX Duo
    • Chapter 3 - Functional Components of NetX Duo
    • Chapter 4 - Description of NetX Duo Services
    • Chapter 5 - NetX Duo Network Drivers
    • Appendix A - NetX Duo Services
    • Appendix B - NetX Duo Constants
    • Appendix C - NetX Duo Data Types
    • Appendix D - NetX Duo BSD-Compatible Socket API
    • Appendix E - NetX Duo ASCII Character Codes
    • Auto-IP

      • Chapter 1 - Introduction to NetX Duo AutoIP
      • Chapter 2 - Installation and use of NetX Duo AutoIP
      • Chapter 3 - Description of NetX Duo AutoIP services
    • BSD

      • Chapter 1 - Introduction to NetX Duo BSD
      • Chapter 2 - Installation and use of NetX Duo BSD
      • Chapter 3 - NetX Duo BSD Services
    • Crypto

      • Chapter 1 - Introduction to NetX Duo Crypto
      • Chapter 2 - Installation and use of NetX Duo Crypto
      • Chapter 3 - Functional description of NetX Duo Crypto
      • Chapter 4 - NetX Duo Crypto API description
      • Appendix - NetX Duo Crypto CAVS test
    • DHCP Client

      • Chapter 1 - Introduction to the NetX Duo DHCP Client
      • Chapter 2 - Installation and use of NetX Duo DHCP Client
      • Chapter 3 - Description of NetX Duo DHCP Client services
      • Appendix A - Description of the Restore state feature for NetX Duo DHCP Client services
    • DHCP Server

      • Chapter 1 - Introduction to NetX Duo DHCP Server
      • Chapter 2 - Installation and Use of the NetX Duo DHCP Server
      • Chapter 3 - Description of NetX Duo DHCP server services
    • DHCPv6 Client

      • Chapter 1 - Introduction to NetX Duo DHCPv6 Client
      • Chapter 2 - Installation and use of NetX Duo DHCPv6 Client
      • Chapter 3 - NetX Duo DHCPv6 configuration options
      • Chapter 4 - NetX Duo DHCPv6 Client services
      • Appendix A - Description of the Restore State Feature for NetX Duo DHCPv6 Client
    • DHCPv6 Server

      • Chapter 1 - Introduction to NetX Duo DHCPv6 server
      • Chapter 2 - Installation and use of NetX Duo DHCPv6 server
      • Chapter 3 - NetX Duo DHCPv6 server configuration options
      • Chapter 4 - NetX Duo DHCPv6 server services
      • Appendix A – NetX Duo DHCPv6 option codes
      • Appendix B - NetX Duo DHCPv6 server status codes
      • Appendix C - NetX Duo DHCPv6 unique identifiers (DUIDs)
      • Appendix D - NetX Duo Advanced DHCPv6 server example
    • DNS

      • Chapter 1 - Introduction to the NetX Duo DNS Client
      • Chapter 2 - Installation and Use of NetX Duo DNS Client
      • Chapter 3 - Description of NetX Duo DNS Client Services
    • FTP

      • Chapter 1 - Introduction to NetX Duo FTP
      • Chapter 2 - Installation and use of FTP
      • Chapter 3 - Description of FTP services
    • HTTP

      • Chapter 1 - Introduction to NetX Duo HTTP
      • Chapter 2 - Installation and Use of NetX Duo HTTP
      • Chapter 3 - Description of NetX Duo HTTP Services
    • iperf

      • Chapter 1 - Introduction to NetX Duo Iperf
      • Chapter 2 - Installing and using NetX Duo Iperf
      • Chapter 3 - Running the UDP Transmit Test
    • mDNS

      • Chapter 1 - Introduction to NetX Duo mDNS/DNS-SD
      • Chapter 2 - Installation and use of mDNS
      • Chapter 3 - Description of internal service cache
      • Chapter 4 - Description of mDNS services
    • mqtt

      • Chapter 1 - Introduction to NetX Duo MQTT
      • Chapter 2 - Installation and use of NetX Duo MQTT client
      • Chapter 3 - Description of NetX Duo MQTT Client Services
    • NAT

      • Chapter 1 - An introduction to Network Address Translation
      • Chapter 2 - Installation and use of NAT
      • Chapter 3 - NAT configuration options
      • Chapter 4 - Description of NAT services
    • POP3 Client

      • Chapter 1 - Introduction to NetX Duo POP3
      • Chapter 2 - Installation and use of NetX Duo POP3 Client
      • Chapter 3 - Description of POP3 Client services
    • PPP

      • Chapter 1 - Introduction to the NetX Duo Point-to-Point Protocol (PPP)
      • Chapter 2 - Installation and use of NetX Duo Point-to-Point Protocol (PPP)
      • Chapter 3 - Description of NetX Duo Point-to-Point Protocol (PPP) services
    • PTP Client

      • Chapter 1 - Introduction to NetX Duo PTP Client
      • Chapter 2 - Installation and Use of NetX Duo PTP Client
      • Chapter 3 - Description of NetX Duo PTP Client Services
    • rtp

      • Chapter 1 - Introduction to the NetX Duo RTP Sender
      • Chapter 2 - Installation and use of NetX Duo RTP Sender
      • Chapter 3 - Description of NetX Duo RTP Sender Services
    • rtsp

      • Chapter 1 - Introduction to the NetX Duo RTSP Server
      • Chapter 2 - Installation and use of NetX Duo RTSP Server
      • Chapter 3 - Description of NetX Duo RTSP Server Services
    • Secure DTLS

      • Chapter 1 - Introduction to NetX Duo Secure DTLS
      • Chapter 2 - Installation and use of NetX Duo Secure DTLS
      • Chapter 3 - Functional description of NetX Duo Secure DTLS
      • Chapter 4 - Description of NetX Duo Secure DTLS services
      • Appendix A - NetX Duo Secure DTLS return/error codes
    • Secure TLS

      • Chapter 1 - Introduction to NetX Duo Secure
      • Chapter 2 - Installation and use of NetX Duo Secure
      • Chapter 3 - Functional description of NetX Duo Secure
      • Chapter 4 - Description of NetX Duo Secure services
      • Appendix A - NetX Duo Secure return/error codes
    • SMTP Client

      • Chapter 1 - Introduction to NetX Duo SMTP client
      • Chapter 2 - Installation and use of NetX Duo SMTP client
      • Chapter 3 - Client description of SMTP Client services
    • snmp

      • Chapter 1 - Introduction to NetX Duo SNMP
      • Chapter 2 - Installation and use of the NetX Duo SNMP agent
      • Chapter 3 - Description of NetX Duo SNMP agent services
    • sntp client

      • Chapter 1 - Introduction to NetX Duo SNTP
      • Chapter 2 - Installation and Use of NetX Duo SNTP Client
      • Chapter 3 - Description of NetX Duo SNTP Client Services
      • Appendix A - NetX Duo SNTP Fatal Error Codes
    • telnet

      • Chapter 1 - Introduction to NetX Duo Telnet
      • Chapter 2 - Installation and use of NetX Duo Telnet
      • Chapter 3 - Description of NetX Duo Telnet services
    • TFTP

      • Chapter 1 - Introduction to NetX Duo TFTP
      • Chapter 2 - Installation and use of NetX Duo TFTP
      • Chapter 3 - Description of NetX Duo TFTP services
    • Web HTTP

      • Chapter 1 - Introduction to HTTP and HTTPS
      • Chapter 2 - Installation and use of HTTP and HTTPS
      • Chapter 3 - Description of HTTP services
    • About the NetX Duo User Guide

Chapter 3 - Functional description of NetX Duo Crypto

Execution Overview

This chapter contains a functional description of NetX Duo Crypto. There are two primary types of program execution in a NetX Duo Crypto application: initialization and application interface calls.

NetX Duo Crypto can be used as a standalone cryptographic library, or can be used with ThreadX, NetX, and/or NetX Secure.

AES

  • Algorithm Standard:: NetX Duo Crypto implements AES according to NIST FIPS 197, which can be found at: http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197.pdf
  • Key Lengths Supported: 128, 192, 256
  • Modes Supported:
    • CBC, CTR, (Key length 128-, 192-, 256-bit)
    • XCBC (key length 128-bit only),
    • CCM8 (key length 128-bit only)
  • Memory Requirements: Application specifies input buffer and output buffer and an AES control structure. The AES control structure maintains AES algorithm state between calls to the API. The input buffer contains data to be encrypted or decrypted, and can be arbitrary size. The output buffer is used by AES to store data being processed by AES. The output buffer size must be no smaller than the input buffer size, and must be a multiple of 16 bytes, the AES block size. The input and output buffers must be contiguous memory and may not overlap, except in the special case of encrypting in-place (using the same memory for input and output). When encrypting in-place, the output buffer starts at exactly the same location as the input buffer, and must be no smaller than the input buffer. When AES encryption operates in-place no extra scratch memory is required.

3DES

  • Algorithm Standard: NetX Duo Crypto implements Tripple DES(TDES, also known as 3DES) according to NIST Special Publication 800-67 rev 2: "Recommendataion for the Triple Data Encryption Algorithm (TDES) Block Cipher", which can be found at: https://csrc.nist.gov/publications/detail/sp/800-67/rev-2/final
  • Key Length Supported: 64 * 3 = 192
  • Memory Requreiment:: None

In NetX Duo Crypto, the term "3DES" is used interchangeably with "TDES".

MD5

  • Algorithm Standard: NetX Duo Crypto implements MD5 according to RFC 1321: "The MD5 Message-Digest Algorithm"
  • Memory Requirement: The application must supply an MD5 control block structure, used to maintain state between MD5 operations.

SHA1, SHA256/512

  • Algorithm Standard: NetX Duo Crypto implements SHA1/256/512 according to NIST FIPS publication 180-4: "Secure Hash Standard", which can be found at: http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf

  • Hash block size::

    • SHA1: 160 bits hash value
    • SHA 224: 224 bits hash value
    • SHA 256: 256 bits hash value
    • SHA 384: 384 bits hash value
    • SHA 512: 512 bits hash value
    • SHA 512/224: 224 bits hash value
    • SHA 512/256: 256 bits hash value

    In NetX Duo Crypto, SHA256 routines are used to hadn SHA256 and SHA224. SHA512 routines are used to hand SHA512, SHA384, SHA512/224 and SHA512/256.

  • Memory Requirement: The application must provide a SHA control block structure for maintaining state between operations.

RSA

  • Standard: NetX Duo Crypto implements RSA according to the standard "PKCS #1 v2.2: RSA Cryptography Standard", which is published as RFC 8017 and can also be found at: https://www.emc.com/collateral/white-papers/h11300-pkcs-1v2-2-rsa-cryptography-standard-wp.pdf
  • Memory Requirement: The application must provide an RSA control block structure for maintaining state between operations and to provide necessary "scratch" buffer space for intermediate calculations.

HMAC

  • Standard: NetX Duo Crypto implements HMAC according to FIPS PUB 198-1: "The Keyed-Hash Message Authentication Code (HMAC)", which can be found at: https://csrc.nist.gov/csrc/media/publications/fips/198/1/final/documents/fips-198-1_final.pdf
  • Memory Requirement: The application must provide an HMAC control block structure for maintaining state between operations. The actual control block supplied depends on the desired underlying hash operation (e.g. SHA1, MD5).

Elliptic Curve

  • Standard: NetX Duo Crypto implements Elliptic Curve. The supported named curves are (prime field only):

    • P-192
    • P-224
    • P-256
    • P-384
    • P-521

    [!TIP] Uncompressed format is supported. See section 2.3.3 and 2.3.4 of SEC1-v1: http://www.secg.org/sec1-v2.pdf

  • Memory Requirement: None

ECDSA

  • Standard: NetX Duo Crypto implements ECDSA according to FIPS PUB 186-4: "Digital Signature Standard (DSS)", which can be found at: https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.186-4.pdf
  • Memory Requirement: The application must provide an ECDSA control block structure for maintaining state between operations.

ECDH

[!IMPORTANT] In Eclipse ThreadX, ECDH routines should only be used for ECDHE cryptography as ECDH with a static private key requires input point validation to be secure.

  • Standard: NetX Duo Crypto implements ECDH according to FIPS PUB 800-56Ar2: "Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography", which can be found at: https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-56ar2.pdf
  • Memory Requirement: The application must provide an ECDH control block structure for maintaining state between operations.

DRBG

  • Standard: NetX Duo Crypto implements DRBG according to FIPS PUB 800-90Ar1: "Recommendation for Random Number Generation Using Deterministic Random Bit Generators", which can be found at: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-90Ar1.pdf
  • Memory Requirement: The application must provide an DRBG control block structure for maintaining state between operations.

FIPS-Compliant

NetX Duo Crypto FIPS 140-2

Prev
Chapter 2 - Installation and use of NetX Duo Crypto
Next
Chapter 4 - NetX Duo Crypto API description