All modules
CMVP Validated Module · FIPS 140-3 Security Policy

wolfCrypt

Certificate#5041StandardFIPS 140-3Level1TypeSoftwareEmbodimentMulti-Chip Stand AloneStatusActiveVendorwolfSSL Inc.
Medium review priority  ·  no TCB surface named  ·  wolfSSL upstream has published 79 CVEs since this module's initial validation  ·  last validated 12 months ago. How this is derived →

Certificate

StandardFIPS 140-3
Overall level1
Module typeSoftware
EmbodimentMulti-Chip Stand Alone
StatusActive
Sunset date7/17/2030
CaveatWhen operated in approved mode. No assurance of the minimum strength of generated SSPs (e.g. keys).
VendorwolfSSL Inc.

Approved Algorithms (42)

AlgorithmACVP Cert
AES-CBCA2461
AES-CCMA2461
AES-CMACA2461
AES-CTRA2461
AES-ECBA2461
AES-GCMA2461
AES-GMACA2461
AES-OFBA2461
DSA KeyGen (FIPS186-4)A2461
ECDSA KeyGen (FIPS186-4)A2461
ECDSA KeyVer (FIPS186-4)A2461
ECDSA SigGen (FIPS186-4)A2461
ECDSA SigVer (FIPS186-4)A2461
Hash DRBGA2461
HMAC-SHA-1A2461
HMAC-SHA2-224A2461
HMAC-SHA2-256A2461
HMAC-SHA2-384A2461
HMAC-SHA2-512A2461
HMAC-SHA3-224A2461
HMAC-SHA3-256A2461
HMAC-SHA3-384A2461
HMAC-SHA3-512A2461
KAS-ECC-SSC Sp800-56Ar3A2461
KAS-FFC-SSC Sp800-56Ar3A2461
KDF SSHA2461
KDF TLSA2461
RSA Decryption PrimitiveA2461
RSA KeyGen (FIPS186-4)A2461
RSA SigGen (FIPS186-4)A2461
RSA SigVer (FIPS186-4)A2461
SHA-1A2461
SHA2-224A2461
SHA2-256A2461
SHA2-384A2461
SHA2-512A2461
SHA3-224A2461
SHA3-256A2461
SHA3-384A2461
SHA3-512A2461
TLS v1.2 KDF RFC7627A2461
TLS v1.3 KDFA2461

Derived Review-Risk Graph (review prompts, not findings)

flowchart LR
  %% Deterministic review-risk graph for wolfCrypt
  %% Review prompts and evidence gaps, NOT vulnerability findings.
  subgraph CMVP["CMVP-disclosed clues"]
    C2["[low] Firmware update / recovery<br/>/ rollback (referenced in<br/>text)<br/><i>update</i>"]
    C3["[low] Self-test / status surface<br/>(referenced in text)<br/><i>Show Status<br/>Self-test</i>"]
    C5["[low] Protocol / secure-channel<br/>references (may be KDF<br/>names, not a live channel)<br/><i>TLS<br/>SSH<br/>DTLS</i>"]
    C6["[low] Operating system / runtime<br/>referenced (boundary<br/>membership not asserted)<br/><i>operating system<br/>linux<br/>application</i>"]
  end
  subgraph Inference["Derived inference"]
    I2["Possible only, trusted<br/>code is reachable through<br/>update and recovery paths."]
    I3["Possible only, some<br/>services may process input<br/>before, or without,<br/>operator authentication."]
    I5["Possible only, a protocol<br/>is referenced, but whether<br/>it is a live channel or<br/>only a KDF/algorithm name<br/>is unconfirmed."]
    I6["Possible only, a<br/>runtime/OS is referenced,<br/>but its membership in the<br/>cryptographic boundary is<br/>not established."]
  end
  subgraph Risk["Reviewer question"]
    R2["Are update images<br/>authenticated before<br/>parsing, and are<br/>downgrade/rollback paths<br/>constrained?"]
    R3["Can unauthenticated<br/>services leak state,<br/>consume resources, or<br/>transition security state?"]
    R5["If a live TLS/SSH/IKE<br/>channel exists, could<br/>library CVEs apply, or is<br/>this only a<br/>KDF/documentation name?"]
    R6["If the OS/runtime is<br/>in-boundary, could its<br/>CVEs be hidden by<br/>firmware-only versioning?"]
  end
  subgraph Evidence["Evidence needed to close"]
    E2["confirm the disclosure<br/>itself (keyword hit,<br/>context unverified) ·<br/>update image format ·<br/>signature-before-parse<br/>proof · anti-rollback /<br/>downgrade policy"]
    E3["confirm the disclosure<br/>itself (keyword hit,<br/>context unverified) ·<br/>pre-auth reachability<br/>matrix · rate limits and<br/>output redaction ·<br/>abuse-case tests"]
    E5["confirm the disclosure<br/>itself (keyword hit,<br/>context unverified) ·<br/>library identity and<br/>version ·<br/>certificate-validation<br/>behaviour · protocol-CVE<br/>disposition"]
    E6["confirm the disclosure<br/>itself (keyword hit,<br/>context unverified) ·<br/>runtime identity and<br/>config · kernel/runtime<br/>hardening profile ·<br/>patch/backport manifest"]
  end
  C2 --> I2 --> R2 --> E2
  C3 --> I3 --> R3 --> E3
  C5 --> I5 --> R5 --> E5
  C6 --> I6 --> R6 --> E6
  classDef clue fill:#eef3f9,stroke:#6f7f91,color:#1f3a5f;
  classDef infer fill:#fff7e6,stroke:#b98500,color:#6b4e00;
  classDef risk fill:#fbe9e9,stroke:#b02a2a,color:#7a1f1f;
  classDef evidence fill:#e6f4ea,stroke:#1e7d34,color:#14532d;
  class C2,C3,C5,C6 clue;
  class I2,I3,I5,I6 infer;
  class R2,R3,R5,R6 risk;
  class E2,E3,E5,E6 evidence;
Underlying clues
flowchart LR
  %% Deterministic clue tier for wolfCrypt
  %% confidence: high = structured record field; medium = structured but soft; low (dashed) = bare keyword hit, context unverified
  subgraph CMVP["CMVP-disclosed clues (deterministic)"]
    C2["[low] Firmware update / recovery / rollback (referenced in text)<br/><i>update</i><br/>src: text:keyword"]
    C3["[low] Self-test / status surface (referenced in text)<br/><i>Show Status<br/>Self-test</i><br/>src: text:keyword"]
    C5["[low] Protocol / secure-channel references (may be KDF names, not a live channel)<br/><i>TLS<br/>SSH<br/>DTLS</i><br/>src: text:keyword"]
    C6["[low] Operating system / runtime referenced (boundary membership not asserted)<br/><i>operating system<br/>linux<br/>application</i><br/>src: text:keyword"]
  end
  classDef clueHigh fill:#eef3f9,stroke:#2f6fb0,stroke-width:2px,color:#1f3a5f;
  classDef clueMedium fill:#eef3f9,stroke:#6f7f91,color:#1f3a5f;
  classDef clueLow fill:#f7f7f7,stroke:#999,stroke-dasharray:4 4,color:#444;
  class C2,C3,C5,C6 clueLow;

Security Policy, page by page

Page 1

wolfCrypt Document Version 1.0 July 9, 2025 wolfSSL Inc.

10016 Edmonds Way

Suite C-300 Edmonds, WA 98020 wolfssl.com +1 425-245-8247 wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.

Page 2

FIPS 140-3 Security Policy wolfCrypt Table of Contents wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.

Page 3

FIPS 140-3 Security Policy wolfCrypt List of Tables List of Figures wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.

Page 4
ISO/IEC 24759 Section 6. [Number Below]FIPS 140-3 Section TitleSecurity Level
1General1
2Cryptographic Module Specification1
3Cryptographic Module Interfaces1
4Roles, Services, and Authentication1
5Software/Firmware Security1
6Operational Environment1
7Physical SecurityN/A
8Non-Invasive SecurityN/A
9Sensitive Security Parameter Management1
10Self-Tests1
11Life-Cycle Assurance1
12Mitigation of Other AttacksN/A

This document defines the Security Policy for the wolfCrypt cryptographic module by wolfSSL Inc., hereafter denoted the Module. The Module meets FIPS 140-3 overall Level 1 requirements, with security levels as described below.

1.1 Cryptographic Boundary

The Module is a cryptography software library, defined as a software module per AS02.03 with a multi-chip standalone embodiment. The Module is intended for use by U.S. and Canadian Federal agencies in addition to other markets that require FIPS 140-3 validated cryptographic functionality. The Module version under validation is Software Version v5.2.0.1. The package/file name is wolfssl-5.7.2-commercial-fips-linuxv5.2.0.1.7z. Table 1

Page 5

FIPS 140-3 Security Policy wolfCrypt

2.1 Cryptographic Boundary

Figure 1 depicts the Module operational environment with the cryptographic boundary highlighted in red inclusive of all Module entry points (API calls). The physical perimeter of the module is the general purpose computer on which the software module resides. No components are excluded from [FIPS140-3] requirements. The pre-operational approved integrity test is performed over all components of the cryptographic boundary. Figure 1

Page 6
Table, extracted as text (did not parse into structured rows)
FIPS 140-3 Security Policy                                                                                wolfCrypt •   rsa.c: RSA algorithm •   sha.c: SHA algorithm •   sha256.c: SHA2-256 algorithm •   sha256_asm.s: SHA2-256 assembler optimizations (Linux) •   sha512_asm.s: SHA2-512 assembler optimizations (Linux) •   sha512.c: SHA2-512 algorithm •   sha3.c: SHA-3 algorithm •   wolfcrypt_first.c: First function marking start of cryptographic boundary •   wolfcrypt_last.c: Last function marking end of cryptographic boundary
2.2 Modes of Operation, Security Rules, and Guidance

The Module supports an Approved mode of operation and a non-Approved mode of operation. Approved algorithms are listed in Table

  1. Non-Approved algorithms are listed in Table
  2. The Module is a cryptographic library providing primitives used by a calling application. The conditions for using the Module in the Approved mode of operation are:
  3. The Module is a cryptographic library, and it is intended to be used with a calling application. The calling application is responsible for the usage of the primitives in the correct sequence.
  4. The keys used by the Module for cryptographic purposes are determined by the calling application. The calling application is required to provide keys in accordance with [SP800-140Dr2], and to destroy the key structures via the corresponding Free calls after use.
  5. With the Module installed and configured in accordance with [UG] instructions and Section 11 of this document, only the algorithms listed in Table 3 (Approved algorithms) and Table 4 (non-Approved algorithms) are available. The Approved mode of operation is invoked by calling the services listed in Table 7 below. The module operates in the non-Approved mode when the service in Table 8 is invoked. The Module is in the Approved mode if the following conditions for algorithm use are met: a. Adherence to [FIPS140-3_IG] §C.H Key/IV Pair Uniqueness Requirements from SP 800-38D. The Module supports both internal IV generation (for use with the [SP800-56Ar3] compliant KAS API entry points) and external IV generation (for TLS KAS usage). For internal IV generation, the Module complies with C.H scenario 2: users MUST specify an IV length of GCM_NONCE_MID_SZ or greater for internal IV generation (specifying any length less than 96 bits means the Module is no longer in an approved mode of operation). For internal IV generation, C.H requires the calling application to use the Module’s internal approved DRBG to generate the random IV. For external IV generation, the Module complies with C.H scenario 1(a), tested per option (ii) under C.H TLS/DTLS 1.2 protocol IV generation. The Module performs a check for nonce_explicit rollover, returning an error if that condition is encountered. The module is compatible with TLS/DTLS 1.2 protocol and provides the primitives to support the AES-GCM ciphersuites from [SP800-52r2] Section 3.3.1. If the module’s power is lost and then restored, the key used for the AES GCM encryption/decryption shall be re-distributed. This condition is not enforced by the module but is met implicitly. The module does not retain any state across reset or power-cycles: AES-GCM key/IVs are not stored in non-volatile persistent memory (i.e., disk), hence no reconnection can occur without a fresh key establishment operation and the associated SSPs. b. ECDSA and RSA signature generation must be used with a SHA-2 or SHA-3 hash function. c. RSA signature generation and encryption primitives must use RSA keys with k = 2048, 3072 or

4096 bits or greater. If RSA uses keys with k < 2048, the module enters the non-Approved mode.

d. The calling process shall adhere to all current [SP800-131Ar2] algorithm usage restrictions. 4. Manual key entry is not supported. wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.

Page 7
#Operating SystemHardware PlatformProcessorPAA/ Acceleration
1Linux 4.4 (Ubuntu 16.04 LTS)Intel Ultrabook 2 in 1Intel® Core™ i5-5300U CPU @2.30GHz x 4PAA
2Linux 4.4 (Ubuntu 16.04 LTS)Intel Ultrabook 2 in 1Intel® Core™ i5-5300U CPU @2.30GHz x 4None
3Windows 10Intel Ultrabook 2 in 1Intel® Core™ i5-5300U CPU @2.30GHz x 4PAA
4Windows 10Intel Ultrabook 2 in 1Intel® Core™ i5-5300U CPU @2.30GHz x 4None

FIPS 140-3 Security Policy wolfCrypt

  1. The module does not support a non-compliant state. Once the module is compiled per the build instructions defined in the wolfCrypt FIPS 140-3 User Guide, it is not possible for the module to be in a non-compliant state.
  2. Data output and control output are inhibited during self-tests, zeroisation, and error states. The Module obtains the [FIPS140-3_IG] §D.F required key agreement assurances in accordance with [SP80056Ar3] Section 5.6.2. The module complies to [FIPS140-3_IG] §D.F Scenario 2, path 1.
2.3 Degraded Mode Operation

The Module implements a degraded mode of operation: when a CAST fails, the Module enters an error state. The algorithm CAST status is set to FIPS_CAST_STATE_FAILED and the Module runs all CASTs prior to the first operational use of any algorithm, regardless of the CAST having passed previously. Before exiting the error state, the Module status (reported in the Show Status service) is set to FIPS_MODE_DEGRADED. Upon exiting the error state, the Module enters the degraded mode of operation. The sequence of events is in accordance with AS02.26. The algorithm that failed its CAST, initially triggering the error state, will no longer be available for use in the degraded mode of operation and any algorithms that depend on that algorithm will also be unavailable for use. To recover from the degraded mode operation, the CO shall power cycle or reload the Module (equivalent to a power cycle).

2.4 Operational Environment

The TOEPP is the General Purpose Computer on which the module is running on. Operational testing was performed for the following modifiable Operational Environments (with no restrictions on operational environments configuration): Table 2

Page 8
CAVP CertAlgorithm and StandardMode/MethodDescription/Key Size(s)/ Key Strength(s)Use/Function
A2461AES [FIPS197], [SP800-38A]AES-CBC, AES-CTR, AES-ECB, AES-OFBAES-128 (s = 128), AES-192 (s = 192), AES-256 (s = 256)Encryption, decryption
A2461AES [SP800-38C], [SP800-38D]AES-CCM, AES-GCMAES-128 (s = 128), AES-192 (s = 192), AES-256 (s = 256)Authenticated encryption, authenticated decryption, message authentication
A2461AES [SP800-38B]AES-CMACAES-128 (s = 128), AES-192 (s = 192), AES-256 (s = 256)Message authentication generation, verification
A2461AES [SP800-38D]AES-GMACAES-192 (s = 192), AES-256 (s = 256)Message authentication generation, verification
Vendor AffirmedCKG [SP800-133r2]§4: Using the Output of a Random Bit Generator §5: Generation of Key Pairs for Asymmetric-Key Algorithms §6.2: Derivation of Symmetric KeysN/ACryptographic key generation
A2461DSA KeyGen [FIPS186-4]FFC key generationL = 2048, N = 256 (s = 112) See Note 4 and Note 7FFC key generation
A2461ECDSA KeyGen [FIPS186-4]Secret generation mode: Extra BitsP-224 (s ~= 112), P-256 (s ~= 128), P-384 (s ~= 192), P-521 (s ~= 256) See Note 2ECC key generation
A2461ECDSA KeyVer [FIPS186-4]Public Key ValidityP-192 (s < 112), P-224 (s ~= 112), P-256 (s ~= 128), P-384 (s ~= 192), P-521 (s ~= 256) See Note 2ECC public key validation (curve P-192 is for legacy use only)
A2461ECDSA SigGen [FIPS186-4]SigGen (tested with SHA2-224, SHA2-256, SHA2-384, SHA2-512)P-224 (s ~= 112), P-256 (s ~= 128), P-384 (s ~= 192), P-521 (s ~= 256) See Note 2ECC signature generation
A2461ECDSA SigVer [FIPS186-4]SigVer (tested with SHA-1, SHA2-224, SHA2-256, SHA2-384, SHA2-512)P-192 (s < 112), P-224 (s ~= 112), P-256 (s ~= 128), P-384 (s ~= 192), P-521 (s ~= 256) See Note 2ECC signature verification. (verification with SHA-1 and curve P-192 is for legacy use only)
A2461Hash DRBG [SP800-90Ar1]No prediction resistanceSHA2-256 (s = 256)Random bit generation

FIPS 140-3 Security Policy wolfCrypt

2.5 Approved and Allowed Cryptographic Functionality

The Module implements the Approved and allowed cryptographic functions listed in the table below. Equivalent strength in bits is given for each key or algorithm type (as some algorithms do not use or produce keys). The term s is used throughout to indicate security strength, following the notation used in the majority of the sources (refer to the notes below Table 3). This table is referenced by Table 9 (SSPs). Table 3

Page 9
CAVP CertAlgorithm and StandardMode/MethodDescription/Key Size(s)/ Key Strength(s)Use/Function
A2461HMAC-SHA-1 [FIPS198-1]Generate HMAC-SHA-1 MAC, with SHA-1 modeSHA-1 (s = 160)Generation, verification, message authentication
A2461HMAC-SHA2 [FIPS198-1]Generate HMAC-SHA2 MAC with the listed SHA2 modesSHA2-224 (s = 224), SHA2-256 (s = 256), SHA2-384 (s = 384), SHA2-512 (s = 512)Generation, verification, message authentication
A2461HMAC-SHA3 [FIPS198-1]Generate HMAC-SHA3 MAC with the listed SHA3 modesSHA3-224 (s = 224), SHA3-256 (s = 256), SHA3-384 (s = 384), SHA3-512 (s = 512)Generation, verification, message authentication
A2461KAS-ECC-SSC [SP800-56Ar3]Scheme: ephemeralUnified KAS Role: Initiator, responderP-256 (s ~= 128), P-384 (s ~= 192), P-521 (s ~= 256) See Note 2 and Note 3Shared secret computation
A2461KAS-FFC-SSC [SP800-56Ar3]Scheme: dhEphem KAS Role: Initiator, responderffdhe2048 (s = 112), ffdhe3072 (112 ≤ s ≤ 128), ffdhe4096 (112 ≤ s ≤ 152), ffdhe6144 (112 ≤ s ≤ 176), ffdhe8192 (112 ≤ s ≤ 200) See Note 5Shared secret computation
CVL A2461KDF SSH [SP800-135r1]Derivation of key blocks for the listed AES cipher key types and hash algorithmsAES-128 (s = 128), AES-192 (s = 192), AES-256 (s = 256); SHA-1 (s = 160), SHA2-256 (s = 256), SHA2-384 (s = 384), SHA2-512 (s = 512)Key derivation for use with the SSH v2 protocol
CVL A2461KDF TLS [SP800-135r1]TLS key derivation using the listed hash algorithmsSHA2-256 (s = 256), SHA2-384 (s = 384), SHA2-512 (s = 512)Key derivation for use with the TLS v1.2 protocol
CVL A2461RSA Decryption Primitive [SP800-56Br2]RSA primitive operations only (no claims of key transport)k = 2048 (s ~= 112) See Note 6Key transport primitive RSADP
Vendor AffirmedRSA Encryption Primitive [SP800-56Br2]RSA primitive operations only (no claims of key transport)k=2048 (s ~= 112), k=3072 (s ~= 128), k=4096 (s ~= 152) See Note 6Key transport primitive RSAEP
A2461RSA KeyGen [FIPS186-4]Key generation mode: B.3.3 Primality tests per Table C.2, with listed modulik=2048 (s ~= 112), k=3072 (s ~= 128), k=4096 (s ~= 152) See Note 4, Note 6, and Note 10Key generation
A2461RSA SigGen [FIPS186-4]Signature types: PKCS 1.5 and PKCSPSS tested with the listed moduli and the following hash algorithms: SHA2-224, SHA2-256, SHA2-384, SHA2-512k=2048 (s ~= 112), k=3072 (s ~= 128), k=4096 (s ~= 152) See Note 4, Note 6, and Note 10Signature generation

FIPS 140-3 Security Policy wolfCrypt wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.

Page 10
CAVP CertAlgorithm and StandardMode/Method Signature types: PKCS 1.5 and PKCSPSS with the listed moduli and the following hash algorithms: SHA3-224, SHA3-256, SHA3-384, SHA3-512 (no ACVP testing is currently available, See Note 9)Description/Key Size(s)/ Key Strength(s)Use/Function
A2461RSA SigVer [FIPS186-4]Signature types: PKCS 1.5 and PKCSPSS tested with the listed moduli and the following hash algorithms: SHA-1, SHA2-224, SHA2-256, SHA2-384, SHA2-512 Signature types: PKCS 1.5 and PKCSPSS with the listed moduli and the following hash algorithms: SHA3-224, SHA3-256, SHA3-384, SHA3-512 (no ACVP testing is currently available, See Note 9)k=1024 (s ≤ 112), k=2048 (s ~= 112), k=3072 (s ~= 128), k=4096 (s ~= 152) See Note 4 and Note 6Signature verification (verification with SHA-1 and modulus length k=1024 is for legacy use only)
A2461SHA-1 [FIPS180-4]SHA-1 mode listed at rightSHA-1 (s = 160) See Note 1Message digest generation
A2461SHA2 [FIPS180-4]SHA2 modes listed at rightSHA2-224 (s = 224), SHA2-256 (s = 256), SHA2-384 (s = 384), SHA2-512 (s = 512) See Note 1Message digest generation
A2461SHA3 [FIPS202]SHA3 modes listed at right See Note 9SHA3-224 (s = 224), SHA3-256 (s = 256), SHA3-384 (s = 384), SHA3-512 (s = 512) See Note 1Message digest generation
CVL A2461TLS v1.2 KDF [RFC7627]TLS [RFC7627] key derivation with Extended Master Secret (EMS) support, using the listed hash algorithmsSHA2-256 (s = 256), SHA2-384 (s = 384), SHA2-512 (s = 512)Key derivation for use with the TLS v1.2 protocol
CVL A2461TLS v1.3 KDF [RFC8446]KDF running modes: DHE, PSK, PSK-DHE, using the listed HMAC algorithmsHMAC-SHA2-256 (s = 256), HMAC-SHA2-384 (s = 384)Key derivation for use with the TLS v1.3 protocol

FIPS 140-3 Security Policy wolfCrypt Note 1: Preimage resistance strength applies to hash algorithms used in DRBG, KDFs. Described also in [SP800-57P1r5] Table

  1. Note 2: Elliptic curve strengths are annotated as approximate (i.e., s ~=) since [SP800-186] Table 1 provides approximate security strengths. Note 3: Approved elliptic curves for ECC key agreement are given in [SP800-56Ar3] Table
  2. Note 4: In Digital Signature applications, security strength is primarily associated with the asymmetric key pair specification. The hash function used must have equivalent strength equal to or greater than the security strength of the associated key pair. Note 5: Approved key types for FFC key agreement are given in [SP800-56Ar3] Tables 25,
  3. The group notation of Table 26 is used for consistency with CAVP algorithm listings and ACVP capability registration. wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.
Page 11
Algorithm/FunctionUse/Function
RSA SigGen using 1024 bit keysRSA Signature Generation
Physical PortLogical InterfaceData that Passes over Port/Interface
N/A: Internal (call stack)Control InAPI entry point: stack frame including non-sensitive parameters
N/A: Internal (call stack)Control OutAPI call parameters passed by reference for structures allocated by wolfCrypt
N/A: Internal (call stack)Data InAPI call parameters passed by reference or value for cryptographic service input
N/A: Internal (call stack)Data OutAPI call parameters passed by reference for cryptographic service output
N/A: Internal (call stack)Status OutAPI return value: enumerated status resulting from call execution

FIPS 140-3 Security Policy wolfCrypt Note 6: Estimated security strengths of common RSA moduli are given in [SP800-56Br2] Table

  1. IFC key types approved for Digital Signature Generation and Verification are given also in [SP800-57P1r5] Table
  2. Equivalent strengths are annotated as approximate (i.e., s ~=) since [SP800-56Br2] Table 4 provides approximate security strengths. Note 7: Security strength for L=2048/N=256 is determined in accordance with [FIPS140-3_IG] D.B Strength of SSP Establishment Methods as y = min(x, N/2), where x is 112 and therefore y = min(112, 128) = 112. Note 8: The Module is compliant with [FIPS140-3_IG] C.F. extending prime generation and signature generation techniques to the RSA modulus sizes not listed in [FIPS186-4]. With regards to primality testing the Module tests p and q (no auxiliary primes) with 8 rounds of MR Test Only regardless of p and q size. 8 Rounds is three more rounds than the minimum required when p and q are 1024-bits respectively and double the rounds required when p and q are 1536-bits (or greater) respectively. The minimum requirements come from in [FIPS186-5] Table B.1 as related to using a prime generation method that does not rely on the use of auxiliary primes. The Module does more than the minimum required rounds in all cases of p and q size. Note 9: SHA3 was CAVP tested as standalone functions. SHA3 has not been CAVP tested with ECDSA or RSA as no CAVP testing is currently available. This meets the use and testing requirements in [FIPS140-3_IG] C.C. Note 10: The Module cannot generate signatures in the Approved mode using a 1024-bit key and cannot generate 1024-bit keys. The Module can verify signatures signed with a 1024-bit key. Reference sources for the strengths provided in Table 3 are as follows: • AES (AES-128, AES-192, AES-256): [SP800-57P1r5] Table 2. • ECC (P-192, P-224, P-256, P-384, P-521): [SP800-186] Table 1. • FFC (L=1024/N=160, L=2048/N=224, L=2048/N=256, L=3072/N=256): [SP800-57P1r5] Table 2. • FFC (ffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192): [SP800-56Ar3] Table 26. • IFC (k=1024, k=2048, k=3072, k=4096): [SP800-56Br2] Table 4. • SHA-1, SHA2 (SHA2-224, SHA2-256, SHA2-384, SHA2-512): [SP800-107] Table 1. • SHA3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512): [SP800-57P1r5] Table
  3. Table 4 - Non-Approved Algorithms Not Allowed in the Approved Mode of Operation The Module does not implement the following: • Non-Approved Algorithms Allowed in the Approved Mode of Operation. • Non-Approved Algorithms Allowed in the Approved Mode of Operation with No Security Claimed.
3 Cryptographic Module Interfaces

Table 5 defines the Module’s [FIPS140-3] logical interfaces; the Module does not interact with physical ports. Table 5 – Ports and Interfaces

4 Roles, Services, and Authentication

The Module supports the Cryptographic Officer (CO) operator role, and does not support multiple concurrent operators, a maintenance role or bypass capability. wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.

Page 12
RoleServiceInputOutput
CODigital signatureSign: signing key; message Verify: signature value; flags; sizesStatus return; Signature value Status return
COGenerate key pairFFC, ECC: curve identifier RSA: modulus sizeStatus return; general digital signature private and public keys
COKey agreementKey structs (key agreement keys); flagsStatus return; key agreement shared secret
COKey derivationKey agreement shared secret; flagsStatus return; derived keying material
COKey transport primitivesDecrypt primitive: Key structs; encapsulated keying material; flagsStatus return; keying material
COKeyed hashKeyed hash keyStatus return; Tag value
COMessage digestMessage; flagsStatus return; Hash value
CORandomDRBG struct (RGB_State); RBG_SeedStatus return; Random value
COSelf-testFlagsStatus return
COShow statusNoneStatus return (includes Module version)
COSymmetric cipherEncryption or decryption key; flags; plaintext or ciphertextStatus return; Plaintext or ciphertext
COZeroiseFreeRNG destroys the DRBG struct (RGB_State), and is used on module shutdown for the internal DRBG. Key structures allocated by the caller are zeroized by the Free call corresponding to the allocated structure.Status return

FIPS 140-3 Security Policy wolfCrypt The Module does not provide an authentication or identification method of its own. The CO role is implicitly The cryptographic module does not support loading software from an external source.

4.1 Approved Services

All services implemented by the Module are listed in Table 6. The calling application may use the Show status service (wolfCrypt_GetStatus_fips call) to determine the status of the Module. A return code of FIPS_MODE_NORMAL means the Module is in a state without errors; the return code FIPS_MODE_DEGRADED means a CAST has failed

Page 13
ServiceDescriptionApproved Security FunctionsKeys and/or SSPsRolesAccess Rights to Keys and/or SSPsIndicator
Digital signatureGenerate or verify digital signaturesECDSA SigGen, ECDSA SigVer, RSA SigGen, RSA SigVerDS_SGK/ECC DS_SVK/ECC DS_SGK/IFC DS_SVK/IFCCOE,W E,W E,W E,Wk
Generate key pair†Generate asymmetric key pairsECDSA KeyGen, ECDSA KeyVer, RSA KeyGen, DSA KeyGenGKP_Private/ECC GKP_Public/ECC GKP_Private/IFC GKP_Public/IFC GKP_Private/FFC GKP_Public/FFSCOG,W G,W G,W G,W G,W G,Wf
Key agreement†DH key agreement primitivesKAS-ECC-SSC, KAS-FFC-SSCKAS_Private/ECC KAS_Public/ECC KAS_Private/FFC KAS_Public/FFC KAS_SS/ECC KAS_SS/FFCCOE,W E,W E,W E,W G,R G,Rf
Key derivation†Derive keying material from a shared secretKDF SSH, KDF TLS, TLS v1.2 KDF RFC7627, TLS v1.3 KDFKAS_SS/ECC KAS_SS/FFC KD_DKM, KTS_SS/IFCCOE,W E,W G,R E,Wf
Key transport primitives ‡Encapsulate or decapsulate key material on behalf of the calling processRSA Decryption Primitive, RSA Encryption PrimitiveKTS_KDK/IFC KTS_KEK/IFC KTS_SS/IFCCOE, E, Rf
Keyed hashGenerate or verify message integrityAES-CMAC, AES-GMAC, HMAC-SHA-1, HMAC-SHA2-224, HMAC-SHA2-256, HMAC-SHA2-384, HMAC-SHA2-512, HMAC-SHA3-224, HMAC-SHA3-256, HMAC-SHA3-384, HMAC-SHA3-512KH_Key/AES-CMAC KH_Key/AES-GMAC KH_Key/HMACCOE,W E,W E,Wf
Message digestGenerate a message digestSHA-1, SHA2-224, SHA2- 256, SHA2-384, SHA2-512, SHA3-224, SHA3-256, SHA3-384, SHA3-512--CO--f
RandomGenerate random bits using the DRBGCKG, Hash DRBGRBG_Seed RBG_State Entropy InputCOE,W E,G E,Wf
Self-testPerform the designated self-test----CO--f
Show statusProvide Module status (includes Module version)----CO--t

FIPS 140-3 Security Policy wolfCrypt Table 7

Page 14
ServiceDescriptionApproved Security FunctionsKeys and/or SSPsRolesAccess Rights to Keys and/or SSPsIndicator
Symmetric cipherEncrypt or decrypt data, including AEAD modes (CCM, GCM)AES-CBC, AES-CCM, AES-CTR, AES-ECB, AES-GCM, AES-OFBSC_EDK/AESCOE,Wf
Zeroisewc_FreeRng_fips() destroys RNG CSPs All functions zeroise CSPs using function ForceZero() (overwriting with zeroes) within the function scope after use Caller stack cleanup is the duty of the application GPC restart/power- cycle clears all CSPs in RAM--Entropy Input RBG_State DS_SGK/ECC DS_SGK/IFC GKP_Private/ECC GKP_Private/IFC KAS_Private/ECC KAS_Private/FFC KAS_SS/ECC KAS_SS/FFC KH_Key/AES-CMAC KH_Key/AES-GMAC KH_Key/HMAC RBG_Seed SC_EDK/AESCOZ Z Z Z Z Z Z Z Z Z Z Z Z Zf

FIPS 140-3 Security Policy wolfCrypt Note that the caller provides the KAS_Private and KAS_Public keys for shared secret computation; the caller’s exchange and assurance of SSPs with the remote participant is outside the scope of the Module. † Consistent with [FIPS140-3_IG] §9.5.A, available only if the private_key_read_enable property is set to TRUE. ‡ Not claiming key transport, but the RSADP and RSAEP are available for interoperation with peers using the TLS protocol stack without an approved cryptography implementation. wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.

Page 15
ServiceDescriptionAlgorithms AccessedRoleIndicator
Digital signatureGenerate digital signaturesRSA SigGen using 1024 bit keysCO1024

FIPS 140-3 Security Policy wolfCrypt Table 8 – Non-Approved Services

5 Software/Firmware Security
5.1 Integrity Techniques

The Module uses HMAC-SHA2-256 with a 256-bit key (HMAC Cert. #A2461) as the approved integrity technique. The object files from section 2 are linked into the library. The code section is delimited by two functions that do not perform any actions; they are used only for their addresses. The constant data section is delimited by two constant arrays of unused data; they are only used for their addresses. The code is first added to the hash, then the constant data is added to the hash. The verify hash stored in the code is excluded from the HMAC-SHA2-256 calculation. The calculated HMAC is compared to the HMAC stored in the constant data section. Before the integrity technique is executed, the Module performs an HMAC-SHA2-256 KAT.

5.2 Initiate on Demand

The operator can initiate the integrity test on demand by reloading the Module.

5.3 Open-Source Parameters

While the Module is not “open-source” since it is only shipped under a commercial license, the open-source practice of source code delivery with a commercial license is standard for the Module. While not required to do so, the Module will abide by [ISO19790] §B.2.5. Please see details in the wolfCrypt FIPS 140-3 User Guide [UG] for the OEs listed on the validation certificate. Details will include information about compiler, compiler configuration settings and methods to compile the source code into an executable form in an approved mode of operation. See also §11.1 below.

6 Operational Environment

Table 2 lists the operational environments on which the Module was tested. The module runs on a modifiable operating environment. The operational environment that is designed to accept functional changes that may contain non-controlled software. For Linux builds, the configure script provided with the package detects the environment and sets the required flags. On Windows, a header file is provided to set the required flags.

7 Physical Security

N/A. The Module does not implement physical security.

8 Non-Invasive Security

N/A. The Module does not implement non-invasive security mechanisms. wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.

Page 16
Key/SSP Name/TypeStrength1Security Function and Cert Numbern o ti a r e n e Gt r o p x E / t r o p m It n e m h s ilb a t s Ee g a r o t Sn o ti a s io r e ZUse & Related Keys
DS_SGK/ECC112, 128, 192, 256ECDSA SigGen #A2461--IE1--S1Z1SigGen (private) key; related to DS_SVK/ECC
DS_SVK/ECC<112, 112, 128, 192, 256ECDSA SigVer #A2461--IE1--S1Z1SigVer (public) key, related to DS_SGK/ECC; key type with security strength <112 bits (P-192) used only for legacy signature verification
DS_SGK/IFC112, 128, 152RSA SigGen #A2461--IE1--S1Z1SigGen (private) key, related to DS_SVK/IFC
DS_SVK/IFC<112, 112, 128, 152RSA SigVer #A2461--IE1--S1Z1SigVer (public) key, related to DS_SGK/IFC; key type with security strength <112 bits (k=1024) used only for legacy signature verification
GKP_Private/ECC112, 128, 192, 256ECDSA KeyGen #A2461, ECDSA KeyVer #A2461G2IE2--S1Z1General ECDSA (private) key, related to GKP_Public/ECC
GKP_Public/ECC<112, 112, 128, 192, 256ECDSA KeyGen #A2461, ECDSA KeyVer #A2461G2IE2--S1Z1General ECDSA (public) key, related to GKP_Private/ECC; key type with security strength <112 bits (P-192) used only for legacy public key validation (KeyVer)
GKP_Private/FFC112DSA KeyGen #A2461G3IE2--S1Z1General DSA (private) key, related to GKP_Public/FFC
GKP_Public/FFC112DSA KeyGen #A2461G3IE2--S1Z1General DSA (public) key, related to GKP_Private/FFC
GKP_Private/IFC112, 128, 152RSA KeyGen #A2461G1IE2--S1Z1General RSA (private) key, related to GKP_Public/IFC
GKP_Public/IFC112, 128, 152RSA KeyGen #A2461G1IE2--S1Z1General RSA (public) key, related to GKP_Private/IFC
KAS_Private/ECC128, 192, 256KAS-ECC-SSC #A2461--IE1--S1Z1Key pair component used for shared secret generation
KAS_Public/ECC128, 192, 256KAS-ECC-SSC #A2461--IE1--S1Z1Peer key pair component used for shared secret generation
KAS_Private/FFC112 ≤ s ≤ 200KAS-FFC-SSC #A2461--IE1--S1Z1Key pair component used for shared secret generation
KAS_Public/FFC112 ≤ s ≤ 200KAS-FFC-SSC #A2461--IE1--S1Z1Peer key pair component used for shared secret generation
KAS_SS/ECC128, 192, 256KAS-ECC-SSC #A2461----E2S1Z1Shared secret calculation z output value (for KDF)
KAS_SS/FFC112 ≤ s ≤ 200KAS-FFC-SSC #A2461----E1S1Z1Shared secret calculation z output value (for KDF)

FIPS 140-3 Security Policy wolfCrypt

9 Sensitive Security Parameter Management

All Sensitive Security Parameters (SSPs) used by the Module are described in this section, arranged for consistency with Table 7. The text ‘--’ indicates the table cell contents are intentionally not present. Table 9

Page 17
Key/SSP Name/TypeStrength1Security Function and Cert Numbern o ti a r e n e Gt r o p x E / t r o p m It n e m h s ilb a t s Ee g a r o t Sn o ti a s io r e ZUse & Related Keys
KD_DKM160, 128, 192, 256, 384, 512KDF SSH #A2461, KDF TLS #A2461, TLS v1.2 KDF RFC7627 #A2461, TLS v1.3 KDF #A2461----E3S1Z1Key Derivation derived keying material2
KH_Key/ AES-CMAC128, 192, 256AES-CMAC #A2461--IE1--S1Z1Keyed Hash key
KH_Key/ AES-GMAC128, 192, 256AES-GMAC #A2461--IE1--S1Z1Keyed Hash key
KH_Key/HMAC112 to 1024 in 8-bit incrementsHMAC SHA-1 HMAC SHA2-224 HMAC SHA2-256 HMAC SHA2-384 HMAC SHA2-512 HMAC SHA3-224 HMAC SHA3-256 HMAC SHA3-384 HMAC SHA3-512 #A2461--IE1--S1Z1Keyed Hash key
KTS_KDK/IFC112, 128, 152RSA Decryption Primitive #A2461--IE1--S1Z1RSA key de-encapsulation Key (for KDF)
KTS_KEK/IFC112, 128, 152RSA Encryption Primitive--IE1--S1Z1RSA key encapsulation Key (for KDF)
KTS_SS/IFC112, 128, 152RSA Decryption Primitive #A2461, RSA Encryption Primitive--IE1--S1Z1RSA key transport shared secret (for KDF)
Entropy Input112External source (see Table 9)--IE1--S1Z1, Z2Entropy input string
RBG_Seed112Hash DRBG #A2461G4----S1Z1, Z2DRBG seed used for DRBG instantiate and reseed
RBG_State256Hash DRBG #A2461G5--E4S1Z1, Z2Hash DRBG (SHA2-256) state: V (440) and C (440)
SC_EDK/AES128, 192, 256AES-CBC #A2461, AES-CCM #A2461, AES-CTR #A2461, AES-ECB #A2461, AES-GCM #A2461, AES-OFB #A2461--IE1--S1Z1AES key used for symmetric encryption and decryption (including AES authenticated encryption and decryption)
Table, extracted as text (did not parse into structured rows)
FIPS 140-3 Security Policy                                                                                                                                          wolfCrypt Generation   Import/Export   Establishment             Zeroisation Storage Legend Generation                                    Establishment                                                                      Storage G1: [FIPS186-4] RSA keypair generation,       E1: [SP800-56Ar3] §5.7.1.1 FFC DH                                                  S1: RAM in plaintext [SP800-133r2] Section 5 compliant             E2: [SP800-56Ar3] §5.7.1.1 ECC CDH G2: [FIPS186-4] ECDSA keypair generation      E3: [SP800-56Cr2] Extract-then-expand                                              Zeroisation [SP800-133r2] Section 5 compliant             KDF                                                                                Z1: Cleared after use via Free, or as part of G3: [FIPS186-4] DSA keypair generation,       E4: [SP800-90Ar1] Hash_df; Instantiate;                                            function cleanup before return. [SP800-133r2] Section 5 compliant.            Generate; Reseed                                                                   Z2: the internal RBG is zeroized upon G4: [SP800-90B] DRBG seed material,                                                                                              module shutdown. [SP800-133r2] Section 4 compliant The separation into specific keys is done outside the scope of the module but must be conformant to [SP800-56Cr2]. wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.
Page 18
Entropy SourcesMinimum Number of Bits of EntropyDetails
Calling application112 to 256 inclusiveThe Module passively obtains entropy via callback functions outside the Module boundary, while exercising no control over the amount or quality of the obtained entropy; the following caveat is applicable to this scenario: No assurance of the minimum strength of generated SSPs (e.g., keys)

FIPS 140-3 Security Policy wolfCrypt G5: [SP800-90Ar1] DRBG state Import/Export (instantiation or update); [SP800-133r2] IE1: Call stack (API) input parameters Section 4 compliant. (electronic entry) IE2: Call stack (API) output parameters (electronic entry)

10 Self-Tests
10.1 Pre-Operational and Conditional Self-Tests

Each time the Module is powered up, it tests that the cryptographic algorithms still operate correctly, and that sensitive data has not been damaged. The pre-operational self-tests are available on demand by reloading the On instantiation, the Module performs the pre-operational self-tests described below. All cryptographic functions include a check of a self-test flag; a self-test will be invoked if it has not yet been performed. All KATs must complete successfully prior to any other use of cryptography by the Module. The error state is persistent, and no services are available. All attempts to use the Module’s services result in the return of a non-zero error code, FIPS_NOT_ALLOWED_E (-197). To recover from an error state, reload the Module into memory. The module error state is called “Err”. Once the Module is powered on and has passed the pre-operational self-tests, calls to any cryptographic algorithm will trigger the CAST on first operational use of the algorithm. The CASTs are available on demand after power-on and can be executed by the Cryptographic Officer (CO) at any time. The CO may optionally invoke any CAST ahead of algorithm use at a more convenient time rather than letting it run automatically on first use. Regardless of the CAST running manually or automatically, once it has passed, the CO may manually re-run any CAST at any time in a periodic fashion. A CAST will no longer run automatically after it has passed the first time. wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.

Page 19

FIPS 140-3 Security Policy wolfCrypt wolfSSL Inc. highly recommends a periodic power cycle or reload of the Module (once in a 24-hour period) as a best security practice. If a periodic power cycle is not possible, a periodic call to the function wc_RunAllCast_fips() is recommended as an alternative (at least once in a 24-hour period). See §10.2 below for details on proper use of the API from a calling application. Pre-Operational Self-Tests

Page 20

FIPS 140-3 Security Policy wolfCrypt

10.2 Operator Initiation of Self-Tests

For calling applications, the following is required:

  1. Include the library configuration header <wolfssl/options.h> (or user_settings.h via wolfssl/wolfcrypt/settings.h) first.
  2. After including the library configuration header, include <wolfssl/wolfcrypt/fips_test.h>, then use the API specified below to execute a given self-test. The CO may initiate all CASTs at once. The API wc_RunAllCast_fips() is provided as a public API to applications using the Module that have included the headers above in the proper order. The CO may initiate CASTs individually using the API wc_RunCast_fips(algorithm type) with any of the below algorithm type inputs: • FIPS_CAST_AES_CBC • FIPS_CAST_AES_GCM • FIPS_CAST_HMAC_SHA1 • FIPS_CAST_HMAC_SHA2_256 • FIPS_CAST_HMAC_SHA2_512 • FIPS_CAST_HMAC_SHA3_256 • FIPS_CAST_DRBG • FIPS_CAST_RSA_SIGN_PKCS1v15 • FIPS_CAST_ECC_CDH • FIPS_CAST_ECC_PRIMITIVE_Z • FIPS_CAST_DH_PRIMITIVE_Z • FIPS_CAST_ECDSA • FIPS_CAST_KDF_TLS12 • FIPS_CAST_KDF_TLS13 • FIPS_CAST_KDF_SSH The CO may re-run the pre-operational self-tests at any time after power-on using the public API wolfCrypt_IntegrityTest_fips(). This function always returns a value of zero regardless if the integrity check passed or failed, so the CO shall then check the status of the Module using the API wolfCrypt_GetStatus_fips(). The return value of the wolfCrypt_GetStatus_fips() API shall then be checked against the status indicators below: • FIPS_MODE_INIT status indicator value is
  3. This indicator means the integrity test has not completed and is likely running in another thread (multi-threaded). • FIPS_MODE_NORMAL status indicator value is
  4. This indicator means the integrity test passed and the Module is in a state without errors. • FIPS_MODE_FAILED status indicator value is
  5. This indicator means the integrity test failed and the Module is unusable. The CO shall power cycle or reload (equivalent to power cycle) to restore the Module. wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.
Page 21

FIPS 140-3 Security Policy wolfCrypt

11 Life-Cycle Assurance
11.1 Installation, Initialization, and Startup Procedures

The CO shall use the provided FIPS 140-3 User Guide, hereafter referred to as [UG]. A common name for this document is also the Cryptographic Officer Guidance Manual (COGM). [UG] and COGM are one and the same for this Module. The [UG] has a section specific to each Operational Environment (OE), also referred to as the “Tested Configuration”, that appears on the Module’s certificate and in the above Table 2

Page 22

FIPS 140-3 Security Policy wolfCrypt

11.1.1 Linux Installation

Operation of wolfCrypt in the FIPS 140-3 Approved Mode requires the wolfCrypt library version 5.2.0.1. To verify the fingerprint of the package, calculate the SHA2-256 sum using a FIPS 140-2 or FIPS 140-3 validated cryptographic module. The following command serves as an example: $ shasum -a 256 wolfssl-5.2.0.1-commercial-fips-linuxv5.7z 746341ac6d88b0d6de02277af5b86275361ed106c9ec07559aa57508e218b3f5 Compare the sum to the sum provided with the package. If the sums do not match stop using the Module and contact wolfSSL. To unpack the bundle: $ 7za x wolfssl-5.7.2-commercial-fips-linuxv5.2.0.1.7z 7-Zip... Extracting archive: wolfssl-5.7.2-commercial-fips-linuxv5.2.0.1.7z ... Enter password (will not be echoed): When prompted, enter the password. The password is provided in the distribution email. To build and install wolfCrypt in Approved mode: $ ./configure --enable-fips=v5 $ ./wolfcrypt/test/testwolfcrypt $ sudo make install If you have not received the library with FIPS 140-3 support the ./configure step will fail. Please contact wolfSSL. The enable and disable options required for running in the Approved Mode are automatically set by the FIPS enable option. Any encryption algorithms that are not enabled by the configuration must not be enabled separately. Options affecting wolfSSL usage are still allowed. make check will verify the build and that the library is operating correctly. If make check fails this probably means the In Core Integrity check has failed, which is expected. To verify this do: $ ./wolfcrypt/test/testwolfcrypt wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.

Page 23

FIPS 140-3 Security Policy wolfCrypt ... in my Fips callback, ok = 0, err = 203 message = In Core Integrity check FIPS error hash = 622B4F8714276FF8845DD49DD3AA27FF68A8226C50D5651D320D914A5660B3F5 In core integrity hash check failure, copy above hash into verifyCore[] in fips_test.c and rebuild Copy the value given for the hash in the output, and replace the value of verifyCore[] in ./wolfcrypt/src/fips_test.c with this new value. After updating verifyCore[], recompile the wolfSSL library by running make check again. The In Core Integrity checksum will vary with compiler versions, runtime library versions, target hardware, and build type.

11.1.2 Windows 10 Installation

Operation of wolfCrypt in the FIPS 140-3 Approved Mode requires the wolfCrypt library version 5.2.0.1. To verify the fingerprint of the package, calculate the SHA2-256 sum using a FIPS 140-2 or FIPS 140-3 validated cryptographic module. The following command serves as an example: % shasum –a 256 wolfssl-5.7.2-commercial-fips-linuxv5.2.0.1.7z 02da35d0a4d6b8e777236fe30da7a6ff93834fb16939ea16da663773f1b34cf0 And compare the sum to the sum provided with the package. If for some reason the sums do not match stop using the Module and contact wolfSSL. A GUI-based 7-zip extraction may be used. To unpack the bundle from a command shell: % 7za x wolfssl-5.7.2-commercial-fips-linuxv5.2.0.1.7z 7-Zip... Extracting archive: wolfssl-5.7.2-commercial-fips-linuxv5.2.0.1.7z ... Enter password (will not be echoed): When prompted, enter the password. The password is provided in the distribution email. To build and install wolfCrypt for use in a FIPS 140-3 approved mode:

  1. In Visual Studio open IDE\WIN10\wolfssl-fips.sln.
  2. Select the Release DLL and x64 as the build type and target.
  3. Build the solution
  4. The library should be in the directory IDE\WIN10\DLL Release\x64 as a pair of files: wolfssl-fips.lib is the linking library and wolfssl-fips.dll is the shared library proper, it can be added to your project.
  5. In your application project, add a preprocessor macro for HAVE_FIPS. This will ensure the compiler is loading all the correct settings from the user_settings.h header file in the library.
  6. Build the solution.
  7. Run the code from the DLL Release\x64 directory, the default check failure should be output in the shell. The enable and disable options required for Approved mode are automatically set in the user settings file mentioned in step 5 above. Any encryption algorithms that are not enabled by the Approved mode must not be enabled separately. Options affecting wolfSSL usage are still allowed. The first run should indicate the In Core Integrity check has failed: in my Fips callback, ok = 0, err = -203 message = In Core Integrity check FIPS error hash = 622B4F8714276FF8845DD49DD3AA27FF68A8226C50D5651D320D914A5660B3F5 In core integrity hash check failure, copy above hash into verifyCore[] in fips_test.c and rebuild wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.
Page 24

FIPS 140-3 Security Policy wolfCrypt The In Core Integrity checksum will vary with compiler versions, runtime library versions, target hardware, and build type.

11.1.3 Linux Secure Startup

The library uses an allocator method to initialize itself after loading, without programmer interaction. The library will perform its own self-test in a thread safe manner.

11.1.4 Windows 10 Secure Startup

The library uses the DllMain() function to initialize itself after loading, without programmer interaction. The library will perform its own self-test in a thread safe manner.

11.2 Administrator Guidance

The CO shall use the provided [UG].

11.3 Non-Administrator Guidance

The Module supports the Cryptographic Officer (CO) operator role and does not support non-administrators.

12 Mitigation of Other Attacks

N/A. The Module does not claim mitigation of other attacks. wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.

Page 25

FIPS 140-3 Security Policy wolfCrypt References

Page 26

FIPS 140-3 Security Policy wolfCrypt

Page 27
Table, extracted as text (did not parse into structured rows)
FIPS 140-3 Security Policy                                                                             wolfCrypt Acronyms and Definitions •   AES: Advanced Encryption Standard •   AES-NI: Advanced Encryption Standard New Instructions •   API: Application Programming Interface •   CAST: Cryptographic Algorithm Self-Test •   CAVP: Cryptographic Algorithm Validation Program •   CBC: Cipher-Block Chaining •   CCM: Counter with CBC-MAC •   CMAC: Cipher-based Message Authentication Code •   CMVP: Cryptographic Module Validation Program •   CO: Cryptographic Officer •   CPU: Central Processing Unit •   CSP: Critical Security Parameter •   CTR: Counter-mode •   CVL: Component Validation List •   DH: Diffie-Hellman •   DRBG: Deterministic Random Bit Generator •   DSA: Digital Signature Algorithm •   ECB: Electronic Code Book •   ECC: Elliptic Curve Cryptography •   ECC-CDH: Elliptic Curve Cryptography Cofactor Diffie-Hellman •   ECDH: Elliptic Curve Diffie-Hellman •   ECDSA: Elliptic Curve Digital Signature Algorithm •   EMC: Electromagnetic Compatibility •   EMI: Electromagnetic Interference •   FFC: Finite Field Cryptography •   FIPS: Federal Information Processing Standard •   GCM: Galois/Counter Mode •   GMAC: Galois Message Authentication Code •   GPC: General-Purpose Computer •   HMAC: Keyed-Hash Message Authentication Code •   IG: Implementation Guidance •   IV: Initialization Vector •   KAS: Key Agreement Scheme •   KAT: Known Answer Test •   KDF: Key Derivation Function •   LTS: Long Term Support •   NIST: National Institute of Standards and Technology •   PAA: Processor Algorithm Accelerators •   PCT: Pair-wise Consistency Test •   PSP: Public Security Parameter •   RAM: Random Access Memory wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.
Page 28
Table, extracted as text (did not parse into structured rows)
FIPS 140-3 Security Policy                                                                             wolfCrypt •   RNG: Random Number Generator •   RSA: Rivest, Shamir, and Adleman Algorithm •   RSADP: RSA Decryption Primitive •   RSAEP: RSA Encryption Primitive •   SHA: Secure Hash Algorithm •   SHS: Secure Hash Standard •   SSC: Shared Secret Computation •   SSP: Sensitive Security Parameter •   TLS: Transport Layer Security wolfSSL Inc. Public Material – May be reproduced in its original entirety without revision.