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

BoringCrypto

Certificate#5104StandardFIPS 140-3Level1TypeSoftwareEmbodimentMulti-Chip Stand AloneStatusActiveVendorGoogle, LLC
Low review priority  ·  no TCB surface named  ·  last validated 7 months ago. How this is derived →

Certificate

StandardFIPS 140-3
Overall level1
Module typeSoftware
EmbodimentMulti-Chip Stand Alone
StatusActive
Sunset date12/8/2030
CaveatWhen operated in approved mode. No assurance of the minimum strength of generated SSPs (e.g., keys)
VendorGoogle, LLC

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

flowchart LR
  %% Deterministic review-risk graph for BoringCrypto
  %% 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>Recovery</i>"]
    C3["[low] Self-test / status surface<br/>(referenced in text)<br/><i>Self-Test<br/>UnAuth<br/>Status Output</i>"]
    C5["[low] Protocol / secure-channel<br/>references (may be KDF<br/>names, not a live channel)<br/><i>TLS<br/>HTTPS<br/>library named: boringssl</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 BoringCrypto
  %% 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>Recovery</i><br/>src: text:keyword"]
    C3["[low] Self-test / status surface (referenced in text)<br/><i>Self-Test<br/>UnAuth<br/>Status Output</i><br/>src: text:keyword"]
    C5["[low] Protocol / secure-channel references (may be KDF names, not a live channel)<br/><i>TLS<br/>HTTPS<br/>library named: boringssl</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

Google, LLC BoringCrypto Date: September 10. 2025 Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 2
Table of Contents
#SectionPage
Page 3

Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 4
List of Tables
ItemPage
Table 1: Security Levels5
Table 2: Tested Module Identification – Software, Firmware, Hybrid (Executable Code Sets)6
Table 3: Tested Operational Environments - Software, Firmware, Hybrid7
Table 4: Modes List and Description7
Table 5: Approved Algorithms9
Table 6: Vendor-Affirmed Algorithms10
Table 7: Non-Approved, Not Allowed Algorithms10
Table 8: Security Function Implementations14
Table 9: Ports and Interfaces17
Table 10: Roles17
Table 11: Approved Services24
Table 12: Non-Approved Services25
Table 13: Storage Areas26
Table 14: SSP Input-Output Methods27
Table 15: SSP Zeroization Methods27
Table 16: SSP Table 130
Table 17: SSP Table 232
Table 18: Pre-Operational Self-Tests32
Table 19: Conditional Self-Tests34
Table 20: Pre-Operational Periodic Information35
Table 21: Conditional Periodic Information37
Table 22: Error States37
Figure 1: Block Diagram6
Page 5
SectionTitleSecurity 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
Overall Level1
1.1 Overview

This document describes the cryptographic module Security Policy (SP) for the Google, LLC BoringCrypto (software version: 20240407) cryptographic module (also referred to as the “module” hereafter). It contains a specification of the security rules under which the cryptographic module operates, including the security rules derived from the requirements of the FIPS 140-3 standard. The module meets the overall Level 1 security requirements of FIPS 140-3.

1.2 Security Levels
2.1 Description

Purpose and Use: The Google, LLC BoringCrypto module is an open-source, general-purpose cryptographic library which provides FIPS 140-3 approved cryptographic algorithms to serve BoringSSL and other user-space applications. Module Embodiment: MultiChipStand Module Characteristics: Cryptographic Boundary: The boundary of the module is defined as a single object file, bcm.o, and its instantiation in memory. Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 6
Package or File NameSoftware/ Firmware VersionFeaturesIntegrity Test
bcm.o20240407Single encompassing HMAC

Tested Operational Environment’s Physical Perimeter (TOEPP): The TOEPP is the enclosure of the general purpose computer the module is running on. Figure 1: Block Diagram

2.2 Tested and Vendor Affirmed Module Version and Identification

Tested Module Identification

Page 7
Operating SystemHardware PlatformProcessorsPAA/PAIHypervisor or Host OSVersion(s)
Google Prodimage with Linux 5.10.0APIF-824AMD EPYC 7B12Yes20240407
Google Prodimage with Linux 5.10.0APIF-824AMD EPYC 7B12No20240407
Google Prodimage with Linux 5.10.0APIF-091ARM Neoverse-N1Yes20240407
Google Prodimage with Linux 5.10.0APIF-091ARM Neoverse-N1No20240407
Google Prodimage with Linux 5.10.0APIF-738Intel Xeon 8273CLYes20240407
Google Prodimage with Linux 5.10.0APIF-738Intel Xeon 8273CLNo20240407
Mode NameDescriptionTypeStatus Indicator
ApprovedWhen all self-tests pass and only Approved algorithms are invokedApprovedPer service indication
Non- ApprovedWhen a non-Approved algorithm is invokedNon- ApprovedPer service indication

Table 3: Tested Operational Environments - Software, Firmware, Hybrid CMVP makes no statement as to the correct operation of the module or the security strengths of the generated keys when ported if the specific operational environment is not listed on the validation certificate.

2.3 Excluded Components

The module contains no excluded components.

2.4 Modes of Operation

Modes List and Description: Table 4: Modes List and Description The module supports two modes of operation: Approved and Non-approved. The module will be in approved mode when all power up self-tests have completed successfully, and only Approved Approved algorithm is invoked (see table below). The module does not enforce a general Approved mode, use the service indicators to determine whether a given service is operated in an Approved mode. Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 8
AlgorithmCAVP CertPropertiesReference
AES-CBCA5370Direction - Decrypt, Encrypt Key Length - 128, 192, 256SP 800-38A
AES-CCMA5370Key Length - 128SP 800-38C
AES-CTRA5370Direction - Decrypt, Encrypt Key Length - 128, 192, 256SP 800-38A
AES-ECBA5370Direction - Decrypt, Encrypt Key Length - 128, 192, 256SP 800-38A
AES-GCMA5370Direction - Decrypt, Encrypt IV Generation - External, Internal IV Generation Mode - 8.2.2 Key Length - 128, 192, 256SP 800-38D
AES-GMACA5370Direction - Decrypt, Encrypt IV Generation - External Key Length - 128, 192, 256SP 800-38D
AES-KWA5370Direction - Decrypt, Encrypt Key Length - 128, 192, 256SP 800-38F
AES-KWPA5370Direction - Decrypt, Encrypt Key Length - 128, 192, 256SP 800-38F
Counter DRBGA5370Prediction Resistance - No Mode - AES-256 Derivation Function Enabled - NoSP 800-90A Rev. 1
ECDSA KeyGen (FIPS186-5)A5370Curve - P-224, P-256, P-384, P-521 Secret Generation Mode - testing candidatesFIPS 186-5
ECDSA KeyVer (FIPS186-5)A5370Curve - P-224, P-256, P-384, P-521FIPS 186-5
ECDSA SigGen (FIPS186-5)A5370Curve - P-224, P-256, P-384, P-521 Hash Algorithm - SHA2-224, SHA2-256, SHA2-384, SHA2-512, SHA2-512/256FIPS 186-5
ECDSA SigVer (FIPS186-5)A5370Curve - P-224, P-256, P-384, P-521 Hash Algorithm - SHA2-224, SHA2-256, SHA2-384, SHA2-512, SHA2-512/256FIPS 186-5
HMAC-SHA-1A5370Key Length - Key Length: 8-524288 Increment 8FIPS 198-1
HMAC-SHA2-224A5370Key Length - Key Length: 8-524288 Increment 8FIPS 198-1
HMAC-SHA2-256A5370Key Length - Key Length: 8-524288 Increment 8FIPS 198-1
HMAC-SHA2-384A5370Key Length - Key Length: 8-524288 Increment 8FIPS 198-1
HMAC-SHA2-512A5370Key Length - Key Length: 8-524288 Increment 8FIPS 198-1
HMAC-SHA2- 512/256A5370Key Length - Key Length: 8-524288 Increment 8FIPS 198-1
KAS-ECC-SSC Sp800-56Ar3A5370Domain Parameter Generation Methods - P-224, P-256, P-384, P-521SP 800-56A Rev. 3

Approved Algorithms: Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 9
AlgorithmCAVP CertProperties Scheme - ephemeralUnified - KAS Role - initiator, responder staticUnified - KAS Role - initiator, responderReference
KAS-FFC-SSC Sp800-56Ar3A5370Domain Parameter Generation Methods - FB, FC Scheme - dhEphem - KAS Role - initiatorSP 800-56A Rev. 3
KDA HKDF Sp800-56Cr1A5370Derived Key Length - 2048 Shared Secret Length - Shared Secret Length: 224-65336 Increment 8 HMAC Algorithm - SHA2-224, SHA2-256, SHA2-384, SHA2-512, SHA2-512/256SP 800-56C Rev. 2
RSA KeyGen (FIPS186-5)A5370Key Generation Mode - probable Modulo - 2048, 3072, 4096 Primality Tests - 2powSecStr Private Key Format - standardFIPS 186-5
RSA SigGen (FIPS186-5)A5370Modulo - 2048, 3072, 4096 Signature Type - pkcs1v1.5, pssFIPS 186-5
RSA SigVer (FIPS186-5)A5370Modulo - 2048, 3072, 4096 Signature Type - pkcs1v1.5, pssFIPS 186-5
SHA-1A5370Message Length - Message Length: 0- 65528 Increment 8FIPS 180-4
SHA2-224A5370Message Length - Message Length: 0- 65528 Increment 8FIPS 180-4
SHA2-256A5370Message Length - Message Length: 0- 65528 Increment 8FIPS 180-4
SHA2-384A5370Message Length - Message Length: 0- 65528 Increment 8FIPS 180-4
SHA2-512A5370Message Length - Message Length: 0- 65528 Increment 8FIPS 180-4
SHA2-512/256A5370Message Length - Message Length: 0- 65528 Increment 8FIPS 180-4
TLS v1.2 KDF RFC7627 (CVL)A5370Hash Algorithm - SHA2-256, SHA2-384, SHA2-512SP 800-135 Rev. 1
TLS v1.3 KDF (CVL)A5370HMAC Algorithm - SHA2-256, SHA2-384 KDF Running Modes - DHE, PSK, PSK- DHESP 800-135 Rev. 1
NamePropertiesImplementationReference
CKGKey Type:AsymmetricN/ASection 4, example 1: U is directly output without XORing V

Table 5: Approved Algorithms Vendor-Affirmed Algorithms: Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 10
NameUse and Function
MD5, MD4Non-Approved Hashing
POLYVALNon-Approved authenticated encryption
DES, Triple-DES (non-compliant)Non-Approved encryption/decryption
AES (non-compliant)Non-Approved encryption/decryption
DH (non-compliant)Non-Approved key agreement
RSA PKCS #1 v1.5 key wrapping (non-compliant)Non-Approved key wrapping
TLS 1.0/1.1 KDF (non-compliant)Non-Approved TLS key derivation
NameTypeDescriptionPropertiesAlgorithms
Authenticated DecryptionBC-AuthSymmetric authenticated decryption of calling application dataAES-CCM: (A5370) AES-GCM: (A5370)
Authenticated EncryptionBC-AuthSymmetric authenticated encryption of calling application dataAES-CCM: (A5370) AES-GCM: (A5370)
DecryptionBC-UnAuthSymmetric decryption of calling application dataAES-CBC: (A5370) AES-CTR: (A5370) AES-ECB: (A5370)
EncryptionBC-UnAuthSymmetric encryption of calling application dataAES-CBC: (A5370) AES-CTR: (A5370) AES-ECB: (A5370)

Table 6: Vendor-Affirmed Algorithms N/A for this module. Non-Approved, Allowed Algorithms with No Security Claimed: N/A for this module. Table 7: Non-Approved, Not Allowed Algorithms

2.6 Security Function Implementations

Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 11
NameTypeDescriptionPropertiesAlgorithms
HashingSHAHashing of calling application dataSHA-1: (A5370) SHA2-224: (A5370) SHA2-256: (A5370) SHA2-384: (A5370) SHA2-512: (A5370) SHA2-512/256: (A5370)
KAS-ECC-SSCKAS-SSCSP 800- 56Arev3. KAS_ECC_SSC per IG D.F Scenario 2, path (1)Caveat:providing 128, 192, or 256 bits of encryption strengthKAS-ECC-SSC Sp800-56Ar3: (A5370) CKG: () Key Type: Asymmetric Counter DRBG: (A5370) AES-ECB: (A5370)
KAS-FFC-SSCKAS-SSCSP 800- 56Arev3. KAS_ECC_SSC per IG D.F Scenario 2, path (1)Caveat:providing 112 bits of encryption strengthKAS-FFC-SSC Sp800-56Ar3: (A5370) CKG: () Key Type: Asymmetric Counter DRBG: (A5370) AES-ECB: (A5370)
Key Derivation Hash BasedKAS-56CKDFHash Based Key Derivation to support calling applicationKDA HKDF Sp800-56Cr1: (A5370) SHA2-224: (A5370) SHA2-256: (A5370) SHA2-384: (A5370) SHA2-512: (A5370) SHA2-512/256: (A5370)
Key Derivation TLS 1.2KAS-135KDFKey derivation to support calling application's TLS implementTLS v1.2 KDF RFC7627: (A5370) HMAC-SHA2- 256: (A5370)

Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 12
NameTypeDescriptionPropertiesAlgorithms
SHA2-256: (A5370) HMAC-SHA2- 384: (A5370) SHA2-384: (A5370) HMAC-SHA2- 512: (A5370) SHA2-512: (A5370)
Key Derivation TLS 1.3KAS-135KDFKey derivation to support calling application's TLS implementTLS v1.3 KDF: (A5370) HMAC-SHA2- 256: (A5370) SHA2-256: (A5370) HMAC-SHA2- 384: (A5370) SHA2-384: (A5370)
AES-KeyWrapBC-AuthSymmetric key wrapping to support calling application's key transportCaveat:providing 128, 192, or 256 bits of encryption strengthAES-KW: (A5370) AES-KWP: (A5370)
Message AuthenticationMACMessage authentication of calling application dataAES-GMAC: (A5370) HMAC-SHA-1: (A5370) Key Size: 112- bit or greater HMAC-SHA2- 224: (A5370) Key Size: 112- bit or greater HMAC-SHA2- 256: (A5370) Key Size: 112- bit or greater HMAC-SHA2- 384: (A5370) Key Size: 112- bit or greater HMAC-SHA2- 512: (A5370) Key Size: 112- bit or greater HMAC-SHA2- 512/256:

Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 13
NameTypeDescriptionPropertiesAlgorithms
(A5370) Key Size: 112- bit or greater SHA-1: (A5370) SHA2-224: (A5370) SHA2-256: (A5370) SHA2-384: (A5370) SHA2-512: (A5370) SHA2-512/256: (A5370)
Random Bit GenerationDRBGRandom Bit GenerationCounter DRBG: (A5370) AES-ECB: (A5370)
Signature GenerationDigSig-SigGenDigital signature generation to support calling applicationECDSA SigGen (FIPS186-5): (A5370) RSA SigGen (FIPS186-5): (A5370) SHA2-224: (A5370) SHA2-256: (A5370) SHA2-384: (A5370) SHA2-512: (A5370) SHA2-512/256: (A5370)
Signature Key GenerationAsymKeyPair- KeyGenGeneration of digital signature key pairsECDSA KeyGen (FIPS186-5): (A5370) RSA KeyGen (FIPS186-5): (A5370) CKG: () Key Type: Asymmetric Counter DRBG: (A5370) AES-ECB: (A5370)

Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 14
NameTypeDescriptionPropertiesAlgorithms
Signature Key ValidationAsymKeyPair- KeyVerVerification of ECDSA digital signature key pairECDSA KeyVer (FIPS186-5): (A5370)
Signature VerificationDigSig-SigVerVerification of digital signature to support calling applicationECDSA SigVer (FIPS186-5): (A5370) RSA SigVer (FIPS186-5): (A5370) SHA2-224: (A5370) SHA2-256: (A5370) SHA2-384: (A5370) SHA2-512: (A5370) SHA2-512/256: (A5370)

Table 8: Security Function Implementations

2.7 Algorithm Specific Information

AES-CTR Reuse of a counter value under the same AES key in AES-CTR is a serious cryptographic vulnerability. The developer integrating the module must prevent this vulnerability by never providing a counter start value that is the same or earlier than the last counter value used under that key for AES-CTR encryption. AES-GCM In the case of AES-GCM, the IV generation method is user-selectable, and the value can be computed in more than one manner. The module does not implement the TLS protocol but offers cryptographic primitives that can be used by an external operator/application to implement TLS. The following restrictions must be followed when an external operator/application uses the module’s AES-GCM within a TLS implementation. In the context of the TLS protocol version 1.3, AES-GCM encryption and decryption is used compliant to Scenario 5 in FIPS 140-3 IG C.H. The module is compliant with NIST SP 80052rev2 and the mechanism for IV generation is compliant with RFC 8446. The module ensures that it is strictly increasing and thus cannot repeat. When the IV exhausts the maximum number of possible values for a given session key, the first party (client or server) to encounter this condition may either send a TLS 1.3 KeyUpdate message to establish a new encryption key, or fail. In either case, the module prevents any IV duplication and thus enforces the security property. Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 15

In the context of the TLS protocol version 1.2, AES-GCM encryption and decryption is used compliant to Scenario 1 in FIPS 140-3 IG C.H. The module is compatible with TLS protocol version 1.2 using AES-GCM ciphersuites as specified in NIST SP 800-52rev2, Section 3.3.1, and the mechanism for IV generation is compliant with RFC 5288. The module ensures that it is strictly increasing and thus cannot repeat. When the IV exhausts the maximum number of possible values for a given session key, the first party (client or server) to encounter this condition may either trigger a handshake to establish a new encryption key in accordance with RFC 5246 or fail. In either case, the module prevents any IV duplication and thus enforces the security property. The module’s IV is generated internally by the module’s Approved DRBG, which is internal to the module’s boundary. The IV is 96 bits in length per NIST SP 800-38D, Section 8.2.2 and FIPS 140-3 IG C.H scenario 2. The selection of the IV construction method is the responsibility of the user of this cryptographic module. In approved mode, only internally generated IVs, or the TLS modes described above, are considered compliant for use. Per IG C.H, in the event module power is lost and restored, the consuming application must ensure that any of its AES-GCM keys used for encryption or decryption are re-distributed. AES-KW / AES-KWP The module does not establish SSPs using an approved key transport scheme (KTS). However, it does offer approved authenticated algorithms that can be used by an external operator/application as part of an approved KTS. Counter DRBG The CTR_DRBG is used without a derivation function. IG D.L requires that a CTR_DRNG used without a derivation function shall be seeded from an entropy source producing full-entropy outputs, and the entropy source shall be located within the TOEPP. The module relies on passively provided entropy and it is the responsibility of the developer integrating the module to ensure that the entropy used to seed the DRBG comes from a source located within the TOEPP which CMVP has evaluated as producing full entropy output. KAS-ECC-SSC and KAS-FFC-SSC The module does not establish SSPs using an approved key agreement scheme (KAS). However, it does offer some or all of the underlying KAS cryptographic functionality to be used by an external operator/application as part of an approved KAS. Hashing The module does not perform truncation of hash outputs except as part of the approved SHA2224, SHA2-512/256, and SHA2-384 algorithms. These algorithms inherently produce hash outputs of 224, 256, and 384 bits, respectively, as defined by FIPS 180-4. The module complies with IG C.L because no additional or manual truncation of hash outputs is implemented by the module in any other context. Legacy Use Algorithms SHA-1 is categorized as Legacy Use when using as part of digital signature verification. Algorithms designated as “Legacy” can only be used on data that was generated prior to the Legacy Date specified in FIPS 140-3 IG C.M. It is the responsibility of the developer integrating the module to ensure this restriction is met. Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 16
2.8 RBG and Entropy

N/A for this module. N/A for this module. The module passively receives entropy, per IG 9.3.A case 2(b), and shall be provided at least

384 bits of entropy. Use a SP 800-90B compliant entropy source with at least 256 bits of

security strength. Entropy is supplied to the Module via callback functions. The callback functions shall return an error if the minimum entropy strength cannot be met. The caveat “No assurance of the minimum strength of generated SSPs (e.g., keys)” is applicable.

2.9 Key Generation

The module provides several key generation methods.

8446 TLS v1.3 KDF.

• Derivation of symmetric keys from a key agreement shared secret per SP 800-133r2 section 6.2.1 and SP 800-56Cr2 KDA HKDF. The module does not have a key generation service for symmetric keys; however, a calling application may create one using output from the module’s Approved DRBG.

2.10 Key Establishment

The module provides the cryptographic building blocks for key agreement in its SP 800-56Arev3 KAS-ECC-SSC and KAS-FFC-SSC algorithms. A calling application may link these to the module’s SP 800-135rev1 TLS v1.2 KDF or RFC 8446 TLS v1.3 KDF to form a complete key agreement scheme. No other part of the TLS protocol, other than the approved cryptographic algorithms and the KDFs, have been tested by the CAVP and CMVP.

2.11 Industry Protocols

The module does not implement any complete industry protocols, however it provides the key agreement and key derivation cryptographic algorithm building blocks to allow calling applications to implement the industry standard TLS v1.2 RFC 7627 or TLS v1.3 protocols using FIPS approved key establishment. The key establishment and generation primitives are described in sections 2.9 and 2.10, and the use of AES-GCM within them described in section 2.7. Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 17
Physical PortLogical Interface(s)Data That Passes
n/aData InputAPI input parameters
n/aData OutputAPI output parameters and return values
n/aControl InputAPI input parameters
n/aStatus OutputAPI return values
NameTypeOperator TypeAuthentication Methods
Crypto Officer (CO)RoleCrypto OfficerNone
3 Cryptographic Module Interfaces
3.1 Ports and Interfaces

Table 9: Ports and Interfaces consists of the actual API input parameters. The Status Output interface includes the return values of the API functions. As a software module, control of the physical ports is outside the module scope. However, when the module is performing self-tests, or is in an error state, all output on the module’s logical data output interfaces is inhibited. The module does not implement a power interface or a control output interface.

4 Roles, Services, and Authentication

N/A for this module. The module does not support operator authentication.

4.2 Roles

Table 10: Roles The cryptographic module only implements a Crypto Officer (CO) role. The CO role is implicitly assumed by the entity accessing services implemented by the module. An operator is considered the owner of the thread that instantiates the module and, therefore, only one concurrent operator is allowed.

4.3 Approved Services

Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 18
NameDescriptio nIndicatorInputsOutputsSecurity FunctionsSSP Access
Module Initializati onModule Initializatio nN/AN/AReturn CodeNoneCrypto Officer (CO)
Symmetr ic Encryptio nSymmetric encryption of calling application datafips_service_indi cator set to 1Plaintext, AAD, IV, encryptio n keyReturn code, ciphertext, tagAuthenticat ed Encryption EncryptionCrypto Officer (CO) - AES Key: W,E - AES- GCM Key: W,E
Symmetr ic Decrypti onSymmetric decryption of calling application datafips_service_indi cator set to 1Cipherte xt, AAD, IV, tag, decryptio n keyReturn code, plaintextAuthenticat ed Decryption DecryptionCrypto Officer (CO) - AES Key: W,E - AES- GCM Key: W,E
Keyed HashingSymmetric message authenticat ion of calling application datafips_service_indi cator set to 1Message , keyReturn code, Message Authenticat ion CodeMessage Authenticat ionCrypto Officer (CO) - HMAC Key: W,E - AES- GCM Key: W,E
HashingHashing of calling application datafips_service_indi cator set to 1MessageReturn code, hashHashingCrypto Officer (CO)
Random Bit Generati onGeneration of random bits for calling applicationfips_service_indi cator set to 1API call paramete rsReturn code, random bitsRandom Bit GenerationCrypto Officer (CO) - CTR_DR BG Entropy Input: W,E - CTR_DR BG Seed: G,E - CTR_DR BG V: G,E

W,E G,E G,E Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 19
NameDescriptio nIndicatorInputsOutputsSecurity FunctionsSSP Access
- CTR_DR BG Key: G,E
Signatur e Generati onDigital signature of calling application datafips_service_indi cator set to 1Message , signing keyReturn code, signatureSignature GenerationCrypto Officer (CO) - ECDSA Signing Key: W,E - RSA Signature Generatio n Key: W,E - CTR_DR BG V: E - CTR_DR BG Key: E
Signatur e Verificati onDigital signature verification of calling application datafips_service_indi cator set to 1Signatur e, verificatio n keyReturn codeSignature VerificationCrypto Officer (CO) - ECDSA Verificatio n Key: W,E - RSA Signature Verificatio n Key: W,E
Key Wrap ServiceSymmetric key wrapping of calling application keyfips_service_indi cator set to 1API call paramete rs, unwrapp ed key, wrapping keyReturn code, wrapped keyAES- KeyWrapCrypto Officer (CO) - AES Wrapping Key: W,E - Unwrapp ed Key: W - Wrapped Key: G,R

G,E W,E E W,E W,E W Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 20
NameDescriptio nIndicatorInputsOutputsSecurity FunctionsSSP Access
Key Unwrap ServiceSymmetric key unwrappin g of calling application keyfips_service_indi cator set to 1API call paramete rs, wrapped keyReturn code, unwrapped keyAES- KeyWrapCrypto Officer (CO) - AES Wrapping Key: W,E - Wrapped Key: W - Unwrapp ed Key: G,R
Key Agreeme nt ServiceAPI call parameter sfips_service_indi cator set to 1Return code, shared secretReturn code, shared secretKAS-ECC- SSC KAS-FFC- SSCCrypto Officer (CO) - EC DH Private Key: G,E - EC DH Public Key: G,R - Other Party EC DH Public Key: W,E - DH Private Key: G,E - DH Public Key: W,E - Other Party DH Public Key: W,E - KAS Shared Secret: G,R
Key Derivatio n KDAHash based key derivation for calling applicationfips_service_indi cator set to 1API call paramete rs, shared secretReturn code, derived keying materialKey Derivation Hash BasedCrypto Officer (CO) - KDA Shared Secret: W,E - Derived

G,R G,R W,E Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 21
NameDescriptio nIndicatorInputsOutputsSecurity FunctionsSSP Access
Keying Material: G,R
TLS Key Derivatio nTLS Key derivation for calling applicationfips_service_indi cator set to 1API call paramete rs, TLS KDF inputReturn code, TLS keying materialKey Derivation TLS 1.2 Key Derivation TLS 1.3Crypto Officer (CO) - TLS KDF Input: G,E - TLS Keying Material: G,R
Key Generati onAsymmetri c key generationfips_service_indi cator set to 1API call paramete rsReturn code, key pairSignature Key GenerationCrypto Officer (CO) - ECDSA Signing Key: G,R - ECDSA Verificatio n Key: G,R - RSA Signature Generatio n Key: G,R - RSA Signature Verificatio n Key: G,R - CTR_DR BG V: E - CTR_DR BG Key: E
Key Verificati onAsymmetri c key pair validationfips_service_indi cator set to 1API call paramete rs, key pairReturn codeSignature Key ValidationCrypto Officer (CO) - ECDSA Signing Key: W,E - ECDSA

G,R G,E G,R G,R G,R G,R E Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 22
NameDescriptio nIndicatorInputsOutputsSecurity FunctionsSSP Access
Verificatio n Key: W,E
On- Demand Self-TestOn- Demand Self-Testfips_service_indi cator set to 1N/AReturn CodeAuthenticat ed Decryption Authenticat ed Encryption Decryption Encryption Hashing KAS-ECC- SSC KAS-FFC- SSC Key Derivation Hash Based Key Derivation TLS 1.2 Key Derivation TLS 1.3 AES- KeyWrap Message Authenticat ion Random Bit Generation Signature Generation Signature VerificationCrypto Officer (CO)
Zeroisati onZeroisationfips_service_indi cator set to 1N/AN/ANoneCrypto Officer (CO) - AES Key: Z - AES- GCM Key: Z - AES Wrapping Key: Z

W,E Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 23
NameDescriptio nIndicatorInputsOutputsSecurity FunctionsSSP Access
- Wrapped Key: Z - Unwrapp ed Key: Z - ECDSA Signing Key: Z - ECDSA Verificatio n Key: Z - EC DH Private Key: Z - EC DH Public Key: Z - Other Party EC DH Public Key: Z - DH Private Key: Z - DH Public Key: Z - Other Party DH Public Key: Z - KAS Shared Secret: Z - KDA Shared Secret: Z - HMAC Key: Z - RSA Signature Generatio n Key: Z - RSA Signature Verificatio n Key: Z

Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 24
NameDescriptio nIndicatorInputsOutputsSecurity FunctionsSSP Access
- TLS KDF Input: Z - TLS Keying Material: Z - CTR_DR BG Entropy Input: Z - CTR_DR BG Seed: Z - CTR_DR BG V: Z - CTR_DR BG Key: Z - Derived Keying Material: Z
Show StatusShow Statusfips_service_indi cator set to 1API call paramete rsReturn code, statusNoneCrypto Officer (CO)
Show NameShow module namefips_service_indi cator set to 1API call paramete rsReturn code, string of module nameNoneCrypto Officer (CO)
Show VersionShow module versionfips_service_indi cator set to 1API call paramete rsReturn code, string of module versionNoneCrypto Officer (CO)

Z Z Z Z Table 11: Approved Services The Approved services supported by the module and access rights within services accessible over the module’s public interface are listed in the table above. The corresponding FIPS_service_indicator_xxx function can be called to query the approved algorithm status of the proceeding service call, or the macro CALL_SERVICE_AND_CHECK_APPROVED can be used to automatically check the approved Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 25
NameDescriptionAlgorithmsRole
TLS 1.0/1.1 KDFPerform hashing operations when used with the TLS protocol version 1.0 and 1.1TLS 1.0/1.1 KDF (non-compliant)Crypto Officer (CO)
HashingPerform hashing operationsMD5, MD4Crypto Officer (CO)
Hashing for GCM-SIVUsed as part of AES-GCM- SIVPOLYVALCrypto Officer (CO)
Symmetric encryption/decryptionPerform symmetric encryption and/or decryption operationsDES, Triple-DES (non-compliant) AES (non-compliant)Crypto Officer (CO)
Key TransportPerform RSA PKCS #1 v1.5 key transportRSA PKCS #1 v1.5 key wrapping (non- compliant)Crypto Officer (CO)
Key AgreementPerform non-compliant DH key agreementDH (non-compliant)Crypto Officer (CO)

service indicator and inform the calling application whether the service called through the macro was FIPSStatus::APPROVED or FIPSStatus::NOT_APPROVED.

4.4 Non-Approved Services

Table 12: Non-Approved Services Non-Approved Services are listed in the table above.

4.5 External Software/Firmware Loaded

The module does not support external software loading.

5 Software/Firmware Security
5.1 Integrity Techniques

The pre-operational integrity test is performed using HMAC-SHA-256.

5.2 Initiate on Demand

The integrity test can be executed on demand by power-cycling the host platform and reloading the module.

5.3 Open-Source Parameters

The module is open-source. To build the approved version of the module the following tools are required to build and compile the module. Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 26
Target PlatformTools
Linux• clang compiler version 17.0.6 (http://releases.llvm.org/download.html) • go programming language version 1.22.3 (https://golang.org/dl/) • ninja build system version 1.12.1 (https://github.com/ninja- build/ninja/releases) ● cmake version 3.29.3 (https://cmake.org/download/)
Storage Area NameDescriptionPersistence Type
RAMEphemeral storage in RAMDynamic
6 Operational Environment
6.1 Operational Environment Type and Requirements

Type of Operational Environment: Modifiable The module runs on a GPC, which is a modifiable operational environment, running one of the operating systems specified in Table 2. Each tested operating system manages processes and threads in a logically separated manner. The module’s user is considered the owner of the calling application that instantiates the module. No special configuration of the operating system is required. The module is designed to ensure that the power-up tests are initiated automatically when the module is loaded.

7 Physical Security

As a software module, the physical security requirements are not applicable.

8 Non-Invasive Security

The module does not claim any non-invasive security measures.

9 Sensitive Security Parameters Management
9.1 Storage Areas

Table 13: Storage Areas The module has no persistent SSP storage, all SSPs are stored ephemerally in RAM and are zeroised once no longer needed.

9.2 SSP Input-Output Methods

Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 27
NameFromToFormat TypeDistribution TypeEntry TypeSFI or Algorithm
PT InputCalling ApplicationRAMPlaintextN/AElectronic
PT OutputRAMCalling ApplicationPlaintextN/AElectronic
Zeroization MethodDescriptionRationaleOperator Initiation
Power Cycle HostTurn off or power cycle the host computer to clear all RAM contentsAll module SSPs are held ephemerally in RAM, so turning off or power cycling the computer will cause them to be irretrievably lost.Procedural - turn off or power cycle host

Name AES Key AES-GCM Key AES Wrapping Key Wrapped Key

Descriptio n AES Key AES-GCM Key AES Wrapping Key Any calling application

Size - Strengt h 128 192 256 - 128 192 256 128 192 256 - 128 192 256 128 192 256 - 128 192 256 Any - Any

Type - Category Symmetri c Key - CSP Symmetri c Key - CSP Symmetri c Key - CSP Any - CSP

Generate d By

Establishe d By

Used By Decryption Encryption Authenticated Decryption Authenticated Encryption Message Authenticatio n AES- KeyWrap

Table 14: SSP Input-Output Methods The software module inputs and outputs SSP only as part of its API, and normally they are input unwrapping, where the wrapped key is entered or output encrypted.

9.3 SSP Zeroization Methods

Table 15: SSP Zeroization Methods The software module has no persistent SSP storage and the zeroisation method for all SSP is currently holds. h n Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 28
NameDescriptio n key the module AES Key WrapsSize - Strengt hType - CategoryGenerate d ByEstablishe d ByUsed By
Unwrapped KeyAny calling application key the module AES Key UnwrapsAny - AnyAny - CSP
ECDSA Signing KeyECDSA Signing KeyP-224 P- 256 P- 384 P- 521 - 112 128 192 256Private - CSPSignature Key Generatio nSignature Generation Signature Key Validation
ECDSA Verification KeyECDSA Verification KeyP-224 P- 256 P- 384 P- 521 - 112 128 192 256Public - PSPSignature Key Generatio nSignature Key Validation Signature Verification
EC DH Private KeyEC DH Private KeyP-256 P- 384 P- 521 - 128 192 256Private - CSPKAS-ECC- SSCKAS-ECC- SSC
EC DH Public KeyEC DH Private KeyP-256 P- 384 P- 521 - 128 192 256Public - PSPKAS-ECC- SSCKAS-ECC- SSC
Other Party EC DH Public KeyOther Party EC DH Public KeyP-256 P- 384 P- 521 - 128 192 256Public - PSPKAS-ECC- SSC
DH Private KeyDH Private Key2048 - 112Private - CSPKAS-FFC- SSCKAS-FFC- SSC
DH Public KeyDH Public Key2048 - 112Public - PSPKAS-FFC- SSCKAS-FFC- SSC
Other Party DH Public KeyOther Party DH Public Key2048 - 112Public - PSPKAS-FFC- SSC
KAS Shared SecretKAS Shared SecretAt least 112-bit -Shared Secret - CSPKAS-ECC- SSC

h Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 29
NameDescriptio nSize - Strengt hType - CategoryGenerate d ByEstablishe d ByUsed By
At least 112-bitKAS-FFC- SSC
KDA Shared SecretKDA Shared SecretAt least 112-bit - At least 112-bitShared Secret - CSPKey Derivation Hash Based
Derived Keying MaterialDerived Keying Material112 - 512 - 112 - 512Symmetri c Key - CSPKey Derivation Hash Based
HMAC KeyHMAC KeyAt least 112-bit - At least 112-bitSymmetri c Key - CSPMessage Authenticatio n
RSA Signature Generation KeyRSA Signature Generation Key2048 3072 4096 - 112 128 150Private - CSPSignature Key Generatio nSignature Generation
RSA Signature Verification KeyRSA Signature Verification Key2048 3072 4096 - 112 128 150Public - PSPSignature Key Generatio nSignature Verification
TLS KDF InputTLS KDF input keying materialAt least 112-bit - At least 112-bitShared Secret - CSPKey Derivation TLS 1.2 Key Derivation TLS 1.3
TLS Keying MaterialTLS Keying material from TLS KDF, for use by calling application TLS protocolAt least 112-bit - At least 112-bitSymmetri c Key - CSPKey Derivation TLS 1.2 Key Derivation TLS 1.3
CTR_DRB G Entropy InputCTR_DRB G Entropy Input384 - 384Entropy Input - CSP
CTR_DRB G SeedCTR_DRB G Seed384 - 384DRBG CSP - CSPRandom Bit Generatio n

h n Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 30
NameDescriptio nSize - Strengt hType - CategoryGenerate d ByEstablishe d ByUsed By
CTR_DRB G VCTR_DRB G V128 - 128DRBG CSP - CSPRandom Bit Generatio n
CTR_DRB G KeyCTR_DRB G Key256 - 256DRBG CSP - CSPRandom Bit Generatio n
NameInput - OutputStorageStorage DurationZeroizationRelated SSPs
AES KeyPT InputRAM:PlaintextUntil function completionPower Cycle Host
AES-GCM KeyPT InputRAM:PlaintextUntil function completionPower Cycle Host
AES Wrapping KeyPT InputRAM:PlaintextUntil function completionPower Cycle HostWrapped Key:Encrypts Unwrapped Key:Decrypts
Wrapped KeyPT Input PT OutputRAM:PlaintextUntil function completionPower Cycle HostAES Wrapping Key:Wrapped By
Unwrapped KeyPT Input PT OutputRAM:PlaintextUntil function completionPower Cycle HostAES Wrapping Key:Unwrapped By
ECDSA Signing KeyPT Input PT OutputRAM:PlaintextUntil function completionPower Cycle HostECDSA Verification Key:Paired With
ECDSA Verification KeyPT Input PT OutputRAM:PlaintextUntil function completionPower Cycle HostECDSA Signing Key:Paired With
EC DH Private KeyPT Input PT OutputRAM:PlaintextUntil function completionPower Cycle HostEC DH Public Key:Paired With Other Party EC DH Public Key:Used With KAS Shared Secret:Establishes
EC DH Public KeyPT InputRAM:PlaintextUntil function completionPower Cycle HostEC DH Private Key:Paired With

h n n Table 16: SSP Table 1 Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 31
NameInput - OutputStorageStorage DurationZeroizationRelated SSPs
PT Output
Other Party EC DH Public KeyPT InputRAM:PlaintextUntil function completionPower Cycle HostEC DH Private Key:Used With KAS Shared Secret:Establishes
DH Private KeyPT Input PT OutputRAM:PlaintextUntil function completionPower Cycle HostDH Public Key:Paired With Other Party DH Public Key:Used With KAS Shared Secret:Establishes
DH Public KeyPT Input PT OutputRAM:PlaintextUntil function completionPower Cycle HostDH Private Key:Paired With
Other Party DH Public KeyPT InputRAM:PlaintextUntil function completionPower Cycle HostDH Private Key:Used With KAS Shared Secret:Establishes
KAS Shared SecretPT Input PT OutputRAM:PlaintextUntil function completionPower Cycle HostEC DH Private Key:Established By Other Party EC DH Public Key:Established By DH Private Key:Established By Other Party DH Public Key:Established By
KDA Shared SecretPT InputRAM:PlaintextUntil function completionPower Cycle HostDerived Keying Material:Derives
Derived Keying MaterialPT OutputRAM:PlaintextUntil function completionPower Cycle HostKDA Shared Secret:Derived From
HMAC KeyPT InputRAM:PlaintextUntil function completionPower Cycle Host
RSA Signature Generation KeyPT Input PT OutputRAM:PlaintextUntil function completionPower Cycle HostRSA Signature Verification Key:Paired With
RSA Signature Verification KeyPT Input PT OutputRAM:PlaintextUntil function completionPower Cycle HostRSA Signature Generation Key:Paired With
TLS KDF InputPT InputRAM:PlaintextUntil function completionPower Cycle HostTLS Keying Material:Derives

Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 32
NameInput - OutputStorageS Dtorage urationZeroizationRelated SSPs
TLS Keying MaterialPT OutputRAM:PlaintextUntil function completionPower Cycle HostTLS KDF Input:Derived From
CTR_DRBG Entropy InputPT InputRAM:PlaintextUntil function completionPower Cycle HostCTR_DRBG Seed:Derives
CTR_DRBG SeedRAM:PlaintextUntil DRBG iunnstantiationPower Cycle HostCTR_DRBG Entropy Input:Derived From CTR_DRBG V:Derives CTR_DRBG Key:Derives
CTR_DRBG VRAM:PlaintextUntil DRBG iunnstantiationPower Cycle HostCTR_DRBG Seed:Derived From
CTR_DRBG KeyRAM:PlaintextUntil DRBG iunnstantiationPower Cycle HostCTR_DRBG Seed:Derived From
Algorithm or TestTest PropertiesTest MethodTest TypeIndicatorDetails
HMAC-SHA2- 256 (A5370)Hardcoded 512 bit keyIntegritySW/FW Integrityreturn code of 1 for success, 0 for failureSingle HMAC over entire module
Algorith m or TestTest Properti esTest MethodTest TypeIndicatorDetailsConditio ns
AES- CBC Encrypt KAT128KATCAS TNone on success. "AES- CBC-encrypt KAT failed" on stderr on failure.Encryptmodule power-up

Output Duration Table 17: SSP Table 2

10 Self-Tests
10.1 Pre-Operational Self-Tests

Table 18: Pre-Operational Self-Tests Pre-operational self-tests are run upon the initialization of the module. The CAST (Cryptographic Algorithm Self-Test) for HMAC-SHA2-256 is performed before the integrity test. Self-tests do not require operator intervention to run. If any of the tests fail, the module will not initialize and enter an error state where no services can be accessed.

10.2 Conditional Self-Tests

Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 33
Algorith m or TestTest Properti esTest MethodTest TypeIndicatorDetailsConditio ns
AES- CBC Decrypt KAT128KATCAS TNone on success. "AES- CBC-decrypt KAT failed" on stderr on failure.Decryptmodule power-up
AES- GCM Encrypt KAT128KATCAS TNone on success. "AES- GCM-encrypt KAT failed" on stderr on failure.Encryptmodule power-up
AES- GCM Decrypt KAT128KATCAS TNone on success. "AES- GCM-decrypt KAT failed" on stderr on failure.Decryptmodule power-up
Counter DRBG KATinitialize, reseed, generate tests, per SP 800- 90Arev1 Section 11.3KATCAS TNone on success. "CTR- DRBG failed" on stderr on failure.Instantiat e, Reseed, Generatemodule power-up
ECDSA SigGen KATP-256KATCAS TNone on success. "ECDSA-sign KAT failed" on stderr on failure.SignOn first use
ECDSA SigVer KATP-256KATCAS TNone on success. "ECDSA-verify KAT failed" on stderr on failure.VerifyOn first use
HMAC- SHA2- 256 KAT128KATCAS TNone on success. "HMAC-SHA-256 KAT failed" on stderr on failure.MACmodule power-up
KAS- ECC- SSC Sp800- 56Ar3 KATP-256KATCAS TNone on success. "Z- computation KAT failed." on stderr on failure.SSCOn first use
KAS- FFC- SSC Sp800- 56Ar3 KAT2048KATCAS TNone on success. "FFDH failed" on stderr on failure.SSCOn first use
KDA HKDF Sp800-HMAC SHA-256KATCAS TNone on success. "HKDF failed" on stderr on failure.KDFmodule power-up

Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 34
Algorith m or TestTest Properti esTest MethodTest TypeIndicatorDetailsConditio ns
56Cr1 KAT
RSA SigGen KAT2048KATCAS TNone on success. "RSA- sign KAT failed" on stderr on failure.SignOn first use
RSA SigVer KAT2048KATCAS TNone on success. "RSA- verify KAT failed" on stderr on failure.VerifyOn first use
SHA-1 KATn/aKATCAS TNone on success. "SHA- 1 KAT failed" on stderr on failure.Hashmodule power-up
SHA2- 256 KATn/aKATCAS TNone on success. "SHA- 256 KAT failed" on stderr on failure.Hashmodule power-up
SHA2- 512 KATn/aKATCAS TNone on success. "SHA- 512 KAT failed" on stderr on failure.Hashmodule power-up
TLS v1.2 KDF RFC762 7 KATSHA-256KATCAS TNone on success. "TLS12-KDF KAT failed" on stderr on failure.KDFmodule power-up
TLS v1.3 KDF KATSHA-256KATCAS TNone on success. "TLS13-KDF KAT failed" on stderr on failure.KDFmodule power-up
ECDSA KeyGen PCTGenerate d key- pairSign/Veri fy PCTPCTNone on success. "EC_KEY_generate_key_ fips failed" on stderr on failure.Sign/Veri fy PCTKeypair generated
RSA KeyGen PCTGenerate d key- pairSign/Veri fy PCTPCTNone on success. "RSA_generate_key_fips failed" on stderr on failure.Sign/Veri fy PCTKeypair generated
KAS- ECC- SSC Sp800- 56Ar3 PCTGenerate d key- pairSP 800- 56Arev3 validity testsPCTNone on success. Module aborted on failure.SP 800- 56Arev3 validity testsKeypair generated
KAS- FFC- SSC Sp800- 56Ar3 PCTGenerate d key- pairSP 800- 56Arev3 validity testsPCTNone on success. Module aborted on failure.SP 800- 56Arev3 validity testsKeypair generated

Table 19: Conditional Self-Tests Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 35
Algorithm or TestTest MethodTest TypePeriodPeriodic Method
HMAC-SHA2- 256 (A5370)IntegritySW/FW IntegrityOn startupManually call On-Demand Self-Test service or restart module
Algorithm or TestTest MethodTest TypePeriodPeriodic Method
AES-CBC Encrypt KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
AES-CBC Decrypt KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
AES-GCM Encrypt KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
AES-GCM Decrypt KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
Counter DRBG KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module

Conditional cryptographic algorithm self-tests (CAST) are run prior to the first use of the cryptographic algorithm. CASTs do not require operator intervention to run. If any of the tests fail, the module will enter an error state and no services can be accessed. Pair-wise consistency tests (PCT) are run during the module’s operation when a new asymmetric keypair is generated. If any of these tests fail, the module will enter an error state, where no services can be accessed by the operators. The module can be re-initialized to clear the error and resume approved mode of operation. Table 20: Pre-Operational Periodic Information Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 36
Algorithm or TestTest MethodTest TypePeriodPeriodic Method
ECDSA SigGen KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
ECDSA SigVer KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
HMAC-SHA2- 256 KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
KAS-ECC-SSC Sp800-56Ar3 KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
KAS-FFC-SSC Sp800-56Ar3 KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
KDA HKDF Sp800-56Cr1 KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
RSA SigGen KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
RSA SigVer KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
SHA-1 KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
SHA2-256 KATKATCASTOperator chosenManually call On-Demand Self-Test service

Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 37
Algorithm or TestTest MethodTest TypePeriodPeriodic Method
or restart module
SHA2-512 KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
TLS v1.2 KDF RFC7627 KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
TLS v1.3 KDF KATKATCASTOperator chosenManually call On-Demand Self-Test service or restart module
ECDSA KeyGen PCTSign/Verify PCTPCTn/an/a
RSA KeyGen PCTSign/Verify PCTPCTn/an/a
KAS-ECC-SSC Sp800-56Ar3 PCTSP 800-56Arev3 validity testsPCTn/an/a
KAS-FFC-SSC Sp800-56Ar3 PCTSP 800-56Arev3 validity testsPCTn/an/a
NameDescriptionConditionsRecovery MethodIndicator
Error stateThe module's error stateFailure of any FIPS self-testRestart the modulePossible indication of failed test on stderr. Module aborts.

Table 21: Conditional Periodic Information A level 1 module does not require automatic periodic self-testing, however self-tests can be

10.4 Error States

Table 22: Error States The module’s single error state is shows above. Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

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

The cryptographic module is initialized by loading the module before any cryptographic functionality is available. In User Space the operating system is responsible for the initialization process and loading of the library. General guidance about the module can be found at https://boringssl.googlesource.com/boringssl. This includes information about the APIs, building and specific information related to FIPS can be found at https://boringssl.googlesource.com/boringssl.git/+/refs/heads/fips20230428/crypto/fipsmodule/FIPS.md (note this still mentions 140-2, but the information there is the same). The module is open source and must be built on a Linux workstation using the tools in section

5.3 Open Source Parameters.

Once the above tools have been obtained, issue the following command to create a CMake toolchain file to specify the use of Clang: printf "set(CMAKE_C_COMPILER \"clang\")\nset(CMAKE_CXX_COMPILER \"clang++\")\n" > ${HOME}/toolchain The FIPS 140-3 validated release of the module can be obtained by downloading the tarball containing the source code at the following location: https://commondatastorage.googleapis.com/chromium-boringssl-fips/boringssl85897d07196b7bf164dbd4673fc78b762aff3e8b.tar.xz or by issuing the following command: wget https://commondatastorage.googleapis.com/chromium-boringssl-fips/boringssl85897d07196b7bf164dbd4673fc78b762aff3e8b.tar.xz The set of files specified in the archive constitutes the complete set of source files of the validated module. There shall be no additions, deletions, or alterations of this set as used during module build. The downloaded tarball file can be verified using the below SHA-256 digest value: b1c87a2746e831dd51448038d8ec7d0ba256d949e73dace0c9a1484889d82d1a By issuing the following command: sha256sum boringssl-85897d07196b7bf164dbd4673fc78b762aff3e8b.tar.xz The tarball can be extracted using the following command: tar xJ < boringssl-85897d07196b7bf164dbd4673fc78b762aff3e8b.tar.xz After the tarball has been extracted, the following commands will compile the module: Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)

Page 39

cd boringssl mkdir build && cd build ninja bcm.o Retrieving Module name and version The following methods will provide the module name and versions:

11.2 Administrator Guidance

CSP Sharing Non-Approved cryptographic algorithms shall not share the same key or CSP as an approved algorithm. As such, Approved algorithms shall not use the keys generated by the module’s NonApproved key generation methods or the converse.

11.3 Non-Administrator Guidance

The module does not support a non-administrator role.

11.4 Additional Information

The source code for the module is maintained in a git repository. While in development, work on the code is maintained internally, before eventually being released externally. BoringCrypto is released publicly to https://boringssl.googlesource.com/boringssl (this is the generic version, available under the Building for Linux instructions). The version number is determined by the developer releasing the version, though git attaches hashes to every single file and branch in the repository.

12 Mitigation of Other Attacks

The module is not designed to mitigate against attacks that are outside of the scope of FIPS 140-3. Google, LLC 2025 Version 1.0 Public Material – May be reproduced only in its original entirely (without revision)