Page 1 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Zebra Technologies Corporation BoringCrypto FIPS 140-3 Non-Proprietary Security Policy Date: June 10, 2026 Page 2 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Table of Contents 1 General ......................................................................................................................................5 1.1 Overview .............................................................................................................................5 1.2 Security Levels....................................................................................................................5 2 Cryptographic Module Specification ..........................................................................................5 2.1 Description ..........................................................................................................................5 2.2 Tested and Vendor Affirmed Module Version and Identification .........................................6 2.3 Excluded Components ........................................................................................................7 2.4 Modes of Operation.............................................................................................................7 2.5 Algorithms ...........................................................................................................................7 2.6 Security Function Implementations ...................................................................................11 2.7 Algorithm Specific Information...........................................................................................13 2.8 RBG and Entropy ..............................................................................................................15 2.9 Key Generation .................................................................................................................15 2.10 Key Establishment...........................................................................................................15 2.11 Industry Protocols............................................................................................................16 3 Cryptographic Module Interfaces.............................................................................................16 3.1 Ports and Interfaces ..........................................................................................................16 4 Roles, Services, and Authentication ........................................................................................16 4.1 Authentication Methods.....................................................................................................16 4.2 Roles .................................................................................................................................16 4.3 Approved Services ............................................................................................................17 4.4 Non-Approved Services ....................................................................................................24 4.5 External Software/Firmware Loaded .................................................................................24 5 Software/Firmware Security.....................................................................................................24 5.1 Integrity Techniques..........................................................................................................24 5.2 Initiate on Demand ............................................................................................................24 5.3 Open-Source Parameters .................................................................................................24 6 Operational Environment .........................................................................................................25 6.1 Operational Environment Type and Requirements ...........................................................25 7 Physical Security......................................................................................................................25 8 Non-Invasive Security..............................................................................................................25 9 Sensitive Security Parameters Management...........................................................................25 9.1 Storage Areas ...................................................................................................................25 9.2 SSP Input-Output Methods ...............................................................................................25 9.3 SSP Zeroization Methods..................................................................................................26 Page 3 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) 9.4 SSPs .................................................................................................................................26 10 Self-Tests...............................................................................................................................31 10.1 Pre-Operational Self-Tests..............................................................................................31 10.2 Conditional Self-Tests .....................................................................................................32 10.3 Periodic Self-Test Information .........................................................................................34 10.4 Error States .....................................................................................................................36 11 Life-Cycle Assurance.............................................................................................................37 11.1 Installation, Initialization, and Startup Procedures ..........................................................37 Building for Android .............................................................................................................37 Building for Linux .................................................................................................................38 11.2 Administrator Guidance...................................................................................................39 11.3 Non-Administrator Guidance...........................................................................................39 11.4 Additional Information......................................................................................................39 12 Mitigation of Other Attacks.....................................................................................................39 Page 4 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) List of Tables Table 1: Security Levels................................................................................................................5 Table 2: Tested Module Identification – Software, Firmware, Hybrid (Executable Code Sets).....6 Table 3: Tested Operational Environments - Software, Firmware, Hybrid....................................7 Table 4: Modes List and Description.............................................................................................7 Table 5: Approved Algorithms.....................................................................................................10 Table 6: Vendor-Affirmed Algorithms..........................................................................................10 Table 7: Non-Approved, Not Allowed Algorithms........................................................................11 Table 8: Security Function Implementations...............................................................................13 Table 9: Ports and Interfaces......................................................................................................16 Table 10: Roles...........................................................................................................................16 Table 11: Approved Services......................................................................................................23 Table 12: Non-Approved Services..............................................................................................24 Table 13: Storage Areas.............................................................................................................25 Table 14: SSP Input-Output Methods.........................................................................................26 Table 15: SSP Zeroization Methods ...........................................................................................26 Table 16: SSP Table 1................................................................................................................29 Table 17: SSP Table 2................................................................................................................31 Table 18: Pre-Operational Self-Tests .........................................................................................31 Table 19: Conditional Self-Tests.................................................................................................34 Table 20: Pre-Operational Periodic Information..........................................................................34 Table 21: Conditional Periodic Information.................................................................................36 Table 22: Error States.................................................................................................................37 List of Figures Figure 1: Block Diagram ...............................................................................................................6 Page 5 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) 1 General 1.1 Overview This document describes the cryptographic module Security Policy (SP) for the Zebra Technologies Corporation BoringCrypto (software version: 2023042800) 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 Section Title Security Level 1 General 1 2 Cryptographic module specification 1 3 Cryptographic module interfaces 1 4 Roles, services, and authentication 1 5 Software/Firmware security 1 6 Operational environment 1 7 Physical security N/A 8 Non-invasive security N/A 9 Sensitive security parameter management 1 10 Self-tests 1 11 Life-cycle assurance 1 12 Mitigation of other attacks N/A Overall Level 1 Table 1: Security Levels 2 Cryptographic Module Specification 2.1 Description Purpose and Use: The Zebra Technologies Corporation 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 Type: Software Module Embodiment: Multi-Chip Standalone Module Characteristics: Cryptographic Boundary: The boundary of the module is defined as a single object file, bcm.o, and its instantiation in memory. Page 6 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) 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 – Software: Package or File Name Software/ Firmware Version Features Integrity Test bcm.o 2023042800 Yes - single encompassing test Table 2: Tested Module Identification – Software, Firmware, Hybrid (Executable Code Sets) Tested Operational Environments - Software: Page 7 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Operating System Hardware Platform Processors PAA/PAI Hypervisor or Host OS Version(s) Android 14 TC58E QualComm QCM4490 Yes 2023042800 Android 14 TC58E QualComm QCM4490 No 2023042800 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: Mode Name Description Type Status Indicator Approved When all self-tests pass and only Approved algorithms are invoked Approved Per service indication Non- Approved When a non-Approved algorithm is invoked Non- Approved Per service indication 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 algorithms are invoked (see table below). The non-Approved mode is entered when a non- Approved algorithm is invoked (see table below). Mode Change Instructions and Status: 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. 2.5 Algorithms Approved Algorithms: Algorithm CAVP Cert Properties Reference AES-CBC A6791 Direction - Decrypt, Encrypt Key Length - 128, 192, 256 SP 800-38A AES-CCM A6791 Key Length - 128 Tag Length - 32, 64 IV Length - IV Length: 104 Payload Length - Payload Length: 0-256 SP 800-38C Page 8 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Algorithm CAVP Cert Properties Reference Increment 8 AAD Length - AAD Length: 0-524288 Increment 8 AES-CTR A6791 Direction - Decrypt, Encrypt Key Length - 128, 192, 256 Payload Length - Payload Length: 8-128 Increment 8 Supports Counter larger than maximum value - Yes Incremental Counter - Yes Counter Tests Performed - Yes SP 800-38A AES-ECB A6791 Direction - Decrypt, Encrypt Key Length - 128, 192, 256 SP 800-38A AES-GCM A6791 Direction - Decrypt, Encrypt IV Generation - External Key Length - 128, 192, 256 Tag Length - 104, 112, 120, 128, 32, 64, 96 IV Length - IV Length: 96 Payload Length - Payload Length: 0-65536 Increment 8 AAD Length - AAD Length: 0-65536 Increment 8 SP 800-38D AES-GMAC A6791 Direction - Decrypt, Encrypt IV Generation - External Key Length - 128, 192, 256 Tag Length - 104, 112, 120, 128, 32, 64, 96 IV Length - IV Length: 96 AAD Length - AAD Length: 0-65536 Increment 8 SP 800-38D AES-KW A6791 Direction - Decrypt, Encrypt Cipher - Cipher Key Length - 128, 192, 256 Payload Length - Payload Length: 128-4096 Increment 64 SP 800-38F AES-KWP A6791 Direction - Decrypt, Encrypt Cipher - Cipher Key Length - 128, 192, 256 Payload Length - Payload Length: 8-4096 Increment 8 SP 800-38F Counter DRBG A6791 Prediction Resistance - No Supports Reseed - Yes Mode - AES-256 Derivation Function Enabled - No Additional Input - Additional Input: 0-384 Increment 16 Entropy Input - Entropy Input: 384 Nonce - Nonce: 0 Personalization String Length - SP 800-90A Rev. 1 Page 9 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Algorithm CAVP Cert Properties Reference Personalization String Length: 0-384 Increment 16 Returned Bits - 2048 ECDSA KeyGen (FIPS186-4) A6791 Curve - P-224, P-256, P-384, P-521 Secret Generation Mode - Testing Candidates FIPS 186-4 ECDSA KeyVer (FIPS186-4) A6791 Curve - P-224, P-256, P-384, P-521 FIPS 186-4 ECDSA SigGen (FIPS186-4) A6791 Curve - P-224, P-256, P-384, P-521 Hash Algorithm - SHA2-224, SHA2-256, SHA2-384, SHA2-512, SHA2-512/256 FIPS 186-4 ECDSA SigVer (FIPS186-4) A6791 Curve - P-224, P-256, P-384, P-521 Hash Algorithm - SHA-1, SHA2-224, SHA2- 256, SHA2-384, SHA2-512, SHA2-512/256 FIPS 186-4 HMAC-SHA-1 A6791 MAC - MAC: 32-160 Increment 8 Key Length - Key Length: 8-524288 Increment 8 FIPS 198-1 HMAC-SHA2-224 A6791 MAC - MAC: 32-224 Increment 8 Key Length - Key Length: 8-524288 Increment 8 FIPS 198-1 HMAC-SHA2-256 A6791 MAC - MAC: 32-256 Increment 8 Key Length - Key Length: 8-524288 Increment 8 FIPS 198-1 HMAC-SHA2-384 A6791 MAC - MAC: 32-384 Increment 8 Key Length - Key Length: 8-524288 Increment 8 FIPS 198-1 HMAC-SHA2-512 A6791 MAC - MAC: 32-512 Increment 8 Key Length - Key Length: 8-524288 Increment 8 FIPS 198-1 HMAC-SHA2- 512/256 A6791 MAC - MAC: 32-256 Increment 8 Key Length - Key Length: 8-524288 Increment 8 FIPS 198-1 KAS-ECC-SSC Sp800-56Ar3 A6791 Domain Parameter Generation Methods - P- 224, P-256, P-384, P-521 Scheme - ephemeralUnified - KAS Role - initiator, responder staticUnified - KAS Role - initiator, responder SP 800-56A Rev. 3 KAS-FFC-SSC Sp800-56Ar3 A6791 Domain Parameter Generation Methods - FB, FC Scheme - dhEphem - KAS Role - initiator SP 800-56A Rev. 3 KDA HKDF Sp800-56Cr1 A6791 Fixed Info Pattern - uPartyInfo||vPartyInfo Fixed Info Encoding - concatenation Derived Key Length - 2048 Shared Secret Length - Shared Secret SP 800-56C Rev. 2 Page 10 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Algorithm CAVP Cert Properties Reference Length: 224-65336 Increment 8 HMAC Algorithm - SHA2-224, SHA2-256, SHA2-384, SHA2-512, SHA2-512/256 RSA KeyGen (FIPS186-4) A6791 Key Generation Mode - B.3.3 Modulo - 2048, 3072, 4096 Primality Tests - Table C.2 Info Generated By Server - Yes Public Exponent Mode - Fixed Fixed Public Exponent - 010001 Private Key Format - Standard FIPS 186-4 RSA SigGen (FIPS186-4) A6791 Signature Type - PKCS 1.5, PKCSPSS Modulo - 2048, 3072, 4096 Hash Pair - Hash Algorithm - SHA2-224 FIPS 186-4 RSA SigVer (FIPS186-4) A6791 Signature Type - PKCS 1.5, PKCSPSS Modulo - 1024, 2048, 3072, 4096 Hash Pair - Hash Algorithm - SHA2-224 Public Exponent Mode - Fixed Fixed Public Exponent - 010001 FIPS 186-4 SHA-1 A6791 Message Length - Message Length: 0-65528 Increment 8 FIPS 180-4 SHA2-224 A6791 Message Length - Message Length: 0-65528 Increment 8 FIPS 180-4 SHA2-256 A6791 Message Length - Message Length: 0-65528 Increment 8 FIPS 180-4 SHA2-384 A6791 Message Length - Message Length: 0-65528 Increment 8 FIPS 180-4 SHA2-512 A6791 Message Length - Message Length: 0-65528 Increment 8 FIPS 180-4 SHA2-512/256 A6791 Message Length - Message Length: 0-65528 Increment 8 FIPS 180-4 TLS v1.2 KDF RFC7627 (CVL) A6791 Hash Algorithm - SHA2-256, SHA2-384, SHA2-512 Key Block Length - Key Block Length: 1024 SP 800-135 Rev. 1 TLS v1.3 KDF (CVL) A6791 HMAC Algorithm - SHA2-256, SHA2-384 KDF Running Modes - DHE, PSK, PSK-DHE SP 800-135 Rev. 1 Table 5: Approved Algorithms Vendor-Affirmed Algorithms: Name Properties Implementation Reference CKG Key Type:Asymmetric N/A Section 4, example 1: U is directly output without XORing V Table 6: Vendor-Affirmed Algorithms Non-Approved, Allowed Algorithms: Page 11 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) N/A for this module. Non-Approved, Allowed Algorithms with No Security Claimed: N/A for this module. Non-Approved, Not Allowed Algorithms: Name Use and Function MD5, MD4 Non-Approved Hashing POLYVAL Non-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 Table 7: Non-Approved, Not Allowed Algorithms 2.6 Security Function Implementations Name Type Description Properties Algorithms Authenticated Decryption BC-Auth Symmetric authenticated decryption of calling application data AES-CCM: (A6791) AES-GCM: (A6791) Authenticated Encryption BC-Auth Symmetric authenticated encryption of calling application data AES-CCM: (A6791) AES-GCM: (A6791) Decryption BC-UnAuth Symmetric decryption of calling application data AES-CBC: (A6791) AES-CTR: (A6791) AES-ECB: (A6791) Encryption BC-UnAuth Symmetric encryption of calling application data AES-CBC: (A6791) AES-CTR: (A6791) AES-ECB: (A6791) Hashing SHA Hashing of calling application data SHA-1: (A6791) SHA2-224: (A6791) SHA2-256: (A6791) Page 12 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name Type Description Properties Algorithms SHA2-384: (A6791) SHA2-512: (A6791) SHA2-512/256: (A6791) KAS-ECC-SSC KAS-SSC SP 800- 56Arev3. KAS_ECC_SSC per IG D.F Scenario 2, path (1) Caveat:providing 128, 192, or 256 bits of encryption strength KAS-ECC-SSC Sp800-56Ar3: (A6791) KAS-FFC-SSC KAS-SSC SP 800- 56Arev3. KAS_ECC_SSC per IG D.F Scenario 2, path (1) Caveat:providing 112 bits of encryption strength KAS-FFC-SSC Sp800-56Ar3: (A6791) Key Derivation Hash Based KAS-56CKDF Hash Based Key Derivation to support calling application KDA HKDF Sp800-56Cr1: (A6791) Key Derivation TLS 1.2 KAS-135KDF Key derivation to support calling application's TLS implement TLS v1.2 KDF RFC7627: (A6791) Key Derivation TLS 1.3 KAS-135KDF Key derivation to support calling application's TLS implement TLS v1.3 KDF: (A6791) AES-KeyWrap BC-Auth Symmetric key wrapping to support calling application's key transport Caveat:providing 128, 192, or 256 bits of encryption strength AES-KW: (A6791) AES-KWP: (A6791) Message Authentication MAC Message authentication of calling application data AES-GCM: (A6791) HMAC-SHA-1: (A6791) HMAC-SHA2- 224: (A6791) HMAC-SHA2- 256: (A6791) HMAC-SHA2- 384: (A6791) HMAC-SHA2- 512: (A6791) HMAC-SHA2- 512/256: Page 13 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name Type Description Properties Algorithms (A6791) AES-GMAC: (A6791) Random Bit Generation DRBG Random Bit Generation Counter DRBG: (A6791) Signature Generation DigSig-SigGen Digital signature generation to support calling application ECDSA SigGen (FIPS186-4): (A6791) RSA SigGen (FIPS186-4): (A6791) Signature Key Generation AsymKeyPair- KeyGen Generation of digital signature key pairs ECDSA KeyGen (FIPS186-4): (A6791) RSA KeyGen (FIPS186-4): (A6791) Signature Key Validation AsymKeyPair- KeyVer Verification of ECDSA digital signature key pair ECDSA KeyVer (FIPS186-4): (A6791) Signature Verification DigSig-SigVer Verification of digital signature to support calling application ECDSA SigVer (FIPS186-4): (A6791) RSA SigVer (FIPS186-4): (A6791) 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. Page 14 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) 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 800- 52rev2 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. 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 SHA2- 224, SHA2-512/256, and SHA2-384 algorithms. These algorithms inherently produce hash Page 15 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) 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. 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.  Generation of asymmetric keys for key generation per SP 800-133r2 section 5.1 CKG and FIPS 186-5.  Generation of asymmetric keys for key establishment per SP 800-133r2 section 5.2 CKG and SP 800-56Arev3.  Derivation of symmetric keys for industry standard protocols from a key agreement shared secret per SP 800-133r2 section 6.2.1 and SP 800-135rev1 TLS v1.2 KDF / RFC 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. Page 16 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) 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. 3 Cryptographic Module Interfaces 3.1 Ports and Interfaces Physical Port Logical Interface(s) Data That Passes n/a Data Input API input parameters n/a Data Output API output parameters and return values n/a Control Input API input parameters n/a Status Output API return values Table 9: Ports and Interfaces The Data Input interface consists of the input parameters of the API functions. The Data Output interface consists of the output parameters of the API functions. The Control Input interface 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 4.1 Authentication Methods N/A for this module. The module does not support operator authentication. 4.2 Roles Name Type Operator Type Authentication Methods Crypto Officer (CO) Role Crypto Officer None Table 10: Roles Page 17 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) 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 Name Descriptio n Indicator Inputs Outputs Security Functions SSP Access Module Initializati on Module Initializatio n N/A N/A Return Code None Crypto Officer (CO) Symmetr ic Encryptio n Symmetric encryption of calling application data fips_service_indi cator set to 1 Plaintext, AAD, IV, encryptio n key Return code, ciphertext, tag Authenticat ed Encryption Encryption Crypto Officer (CO) - AES Key: W,E - AES- GCM Key: W,E Symmetr ic Decrypti on Symmetric decryption of calling application data fips_service_indi cator set to 1 Cipherte xt, AAD, IV, tag, decryptio n key Return code, plaintext Authenticat ed Decryption Decryption Crypto Officer (CO) - AES Key: W,E - AES- GCM Key: W,E Keyed Hashing Symmetric message authenticat ion of calling application data fips_service_indi cator set to 1 Message , key Return code, Message Authenticat ion Code Message Authenticat ion Crypto Officer (CO) - HMAC Key: W,E - AES- GCM Key: W,E Hashing Hashing of calling application data fips_service_indi cator set to 1 Message Return code, hash Hashing Crypto Officer (CO) Random Bit Generati on Generation of random bits for calling application fips_service_indi cator set to 1 API call paramete rs Return code, random bits Random Bit Generation Crypto Officer (CO) - CTR_DR BG Entropy Input: W,E - Page 18 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name Descriptio n Indicator Inputs Outputs Security Functions SSP Access CTR_DR BG Seed: G,E - CTR_DR BG V: G,E - CTR_DR BG Key: G,E Signatur e Generati on Digital signature of calling application data fips_service_indi cator set to 1 Message , signing key Return code, signature Signature Generation Crypto 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 on Digital signature verification of calling application data fips_service_indi cator set to 1 Signatur e, verificatio n key Return code Signature Verification Crypto Officer (CO) - ECDSA Verificatio n Key: W,E - RSA Signature Verificatio n Key: W,E Key Wrap Service Symmetric key wrapping service of calling application key fips_service_indi cator set to 1 API call paramete rs, unwrapp ed key, wrapping key Return code, wrapped key AES- KeyWrap Crypto Officer (CO) - AES Wrapping Key: W,E - Page 19 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name Descriptio n Indicator Inputs Outputs Security Functions SSP Access Unwrapp ed Key: W - Wrapped Key: G,R Key Unwrap Service Symmetric key unwrappin g service of calling application key fips_service_indi cator set to 1 API call paramete rs, wrapped key Return code, unwrapped key AES- KeyWrap Crypto Officer (CO) - AES Wrapping Key: W,E - Wrapped Key: W - Unwrapp ed Key: G,R Key Agreeme nt Service API service call parameter s fips_service_indi cator set to 1 Return code, shared secret Return code, shared secret KAS-ECC- SSC KAS-FFC- SSC Crypto 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 Page 20 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name Descriptio n Indicator Inputs Outputs Security Functions SSP Access Key Derivatio n KDA Hash based key derivation for calling application fips_service_indi cator set to 1 API call paramete rs, shared secret Return code, derived keying material Key Derivation Hash Based Crypto Officer (CO) - KDA Shared Secret: W,E - Derived Keying Material: G,R TLS Key Derivatio n TLS Key derivation for calling application fips_service_indi cator set to 1 API call paramete rs, TLS master secret Return code, TLS Key Key Derivation TLS 1.2 Key Derivation TLS 1.3 Crypto Officer (CO) - TLS Master Secret: W,E - TLS Key Material: G,R Key Generati on Asymmetri c key generation fips_service_indi cator set to 1 API call paramete rs Return code, key pair Signature Key Generation Crypto 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 Page 21 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name Descriptio n Indicator Inputs Outputs Security Functions SSP Access Key Verificati on Asymmetri c key pair validation fips_service_indi cator set to 1 API call paramete rs, key pair Return code Signature Key Validation Crypto Officer (CO) - ECDSA Signing Key: W,E - ECDSA Verificatio n Key: W,E On- Demand Self-Test On- Demand Self-Test fips_service_indi cator set to 1 N/A Return Code Authenticat 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 Message Authenticat ion Random Bit Generation Signature Generation Signature Verification Crypto Officer (CO) Zeroisati on Zeroisation fips_service_indi cator set to 1 N/A N/A None Crypto Officer (CO) - AES Key: Z - AES- Page 22 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name Descriptio n Indicator Inputs Outputs Security Functions SSP Access GCM Key: Z - AES Wrapping Key: Z - 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 Page 23 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name Descriptio n Indicator Inputs Outputs Security Functions SSP Access n Key: Z - RSA Signature Verificatio n Key: Z - TLS Master Secret: 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 Status Show Status fips_service_indi cator set to 1 API call paramete rs Return code, status None Crypto Officer (CO) Show Name Show module name fips_service_indi cator set to 1 API call paramete rs Return code, string of module name None Crypto Officer (CO) Show Version Show module version fips_service_indi cator set to 1 API call paramete rs Return code, string of module version None Crypto Officer (CO) 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 Page 24 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) CALL_SERVICE_AND_CHECK_APPROVED can be used to automatically check the approved 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 Name Description Algorithms Role TLS 1.0/1.1 KDF Perform hashing operations when used with the TLS protocol version 1.0 and 1.1 TLS 1.0/1.1 KDF (non-compliant) Crypto Officer (CO) Hashing Perform hashing operations MD5, MD4 Crypto Officer (CO) Hashing for GCM-SIV Used as part of AES-GCM- SIV POLYVAL Crypto Officer (CO) Symmetric encryption/decryption Perform symmetric encryption and/or decryption operations DES, Triple-DES (non-compliant) AES (non-compliant) Crypto Officer (CO) Key Transport Perform RSA PKCS #1 v1.5 key transport RSA PKCS #1 v1.5 key wrapping (non- compliant) Crypto Officer (CO) Key Agreement Perform non-compliant DH key agreement DH (non-compliant) Crypto Officer (CO) 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 Page 25 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) The module is open-source. To build the approved version of the module the following tools are required to build and compile the module. Target Platform Tools Linux  clang compiler version 16.0.0 (http://releases.llvm.org/download.html)  go programming language version 1.21.1 (https://golang.org/dl/)  ninja build system version 1.11.1 (https://github.com/ninjabuild/ninja/releases)  cmake version 3.27.4 (https://cmake.org/download/) 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 Storage Area Name Description Persistence Type RAM Ephemeral storage in RAM Dynamic 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 Page 26 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name From To Format Type Distribution Type Entry Type SFI or Algorithm PT Input Calling Application RAM Plaintext N/A Electronic PT Output RAM Calling Application Plaintext N/A Electronic Table 14: SSP Input-Output Methods The software module inputs and outputs SSP only as part of its API, and normally they are input or output in plaintext. The exceptions are the services that provide key wrapping or key unwrapping, where the wrapped key is entered or output encrypted. 9.3 SSP Zeroization Methods Zeroization Method Description Rationale Operator Initiation Power Cycle Host Turn off or power cycle the host computer to clear all RAM contents All 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 Table 15: SSP Zeroization Methods The software module has no persistent SSP storage and the zeroisation method for all SSP is procedural. The operator may power-cycle the host computer to zeroise all SSPs the module currently holds. 9.4 SSPs Name Descriptio n Size - Strengt h Type - Category Generate d By Establishe d By Used By AES Key AES Key 128 192 256 - 128 192 256 Symmetri c Key - CSP Decryption Encryption AES-GCM Key AES-GCM Key 128 192 256 - 128 192 256 Symmetri c Key - CSP Authenticated Decryption Authenticated Encryption Message Authenticatio n AES Wrapping Key Any calling application keying material the module 128 192 256 - 128 192 256 Symmetri c Key - CSP Page 27 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name Descriptio n Size - Strengt h Type - Category Generate d By Establishe d By Used By AES Key Wraps Wrapped Key Any calling application key the module AES Key Wraps Any - Any Any - CSP Unwrapped Key Any calling application keying material the module AES Key Unwraps Any - Any Any - CSP ECDSA Signing Key ECDSA Signing Key P-224 P- 256 P- 384 P- 521 - 112 128 192 256 Private - CSP Signature Key Generatio n Signature Generation Signature Key Validation ECDSA Verification Key ECDSA Verification Key P-224 P- 256 P- 384 P- 521 - 112 128 192 256 Public - PSP Signature Key Generatio n Signature Key Validation Signature Verification EC DH Private Key EC DH Private Key P-256 P- 384 P- 521 - 128 192 256 Private - CSP KAS-ECC- SSC KAS-ECC- SSC EC DH Public Key EC DH Private Key P-256 P- 384 P- 521 - 128 192 256 Public - PSP KAS-ECC- SSC KAS-ECC- SSC Other Party EC DH Public Key Other Party EC DH Public Key P-256 P- 384 P- 521 - 128 192 256 Public - PSP KAS-ECC- SSC DH Private Key DH Private Key 2048 - 112 Private - CSP KAS-FFC- SSC KAS-FFC- SSC Page 28 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name Descriptio n Size - Strengt h Type - Category Generate d By Establishe d By Used By DH Public Key DH Public Key 2048 - 112 Public - PSP KAS-FFC- SSC KAS-FFC- SSC Other Party DH Public Key Other Party DH Public Key 2048 - 112 Public - PSP KAS-FFC- SSC KAS Shared Secret KAS Shared Secret At least 112-bit - At least 112-bit Shared Secret - CSP KAS-ECC- SSC KAS-FFC- SSC KDA Shared Secret KDA Shared Secret At least 112-bit - At least 112-bit Shared Secret - CSP Key Derivation Hash Based Derived Keying Material Derived Key 112 - 512 - 112 - 512 Symmetri c Key - CSP Key Derivation Hash Based HMAC Key HMAC Key At least 112-bit - At least 112-bit Symmetri c Key - CSP Message Authenticatio n RSA Signature Generation Key RSA Signature Generation Key 2048 3072 4096 - 112 128 150 Private - CSP Signature Key Generatio n Signature Generation RSA Signature Verification Key RSA Signature Verification Key 2048 3072 4096 - 112 128 150 Public - PSP Signature Key Generatio n Signature Verification TLS Master Secret TLS Master Secret At least 112-bit - At least 112-bit Shared Secret - CSP Key Derivation TLS 1.2 Key Derivation TLS 1.3 Key Derivation TLS 1.2 Key Derivation TLS 1.3 TLS Key Material TLS Keying material from TLS KDF, for use by calling application TLS protocol At least 112-bit - At least 112-bit Symmetri c Key - CSP Key Derivation TLS 1.2 Key Derivation TLS 1.3 Page 29 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name Descriptio n Size - Strengt h Type - Category Generate d By Establishe d By Used By CTR_DRB G Entropy Input CTR_DRB G Entropy Input 384 - 384 Entropy Input - CSP CTR_DRB G Key CTR_DRB G Key 256 - 256 DRBG CSP - CSP Random Bit Generatio n CTR_DRB G Seed CTR_DRB G Seed 384 - 384 DRBG CSP - CSP Random Bit Generatio n CTR_DRB G V CTR_DRB G V 128 - 128 DRBG CSP - CSP Random Bit Generatio n Table 16: SSP Table 1 Name Input - Output Storage Storage Duration Zeroization Related SSPs AES Key PT Input RAM:Plaintext Until function completion Power Cycle Host AES-GCM Key PT Input RAM:Plaintext Until function completion Power Cycle Host AES Wrapping Key PT Input RAM:Plaintext Until function completion Power Cycle Host Wrapped Key:Encrypts Unwrapped Key:Decrypts Wrapped Key PT Input PT Output RAM:Encrypted RAM:Encrypted Until function completion Power Cycle Host AES Wrapping Key:Wrapped By Unwrapped Key PT Input PT Output RAM:Plaintext Until function completion Power Cycle Host AES Wrapping Key:Unwrapped By ECDSA Signing Key PT Input PT Output RAM:Plaintext Until function completion Power Cycle Host ECDSA Verification Key:Paired With ECDSA Verification Key PT Input PT Output RAM:Plaintext Until function completion Power Cycle Host ECDSA Signing Key:Paired With EC DH Private Key PT Input RAM:Plaintext Until function completion Power Cycle Host EC DH Public Key:Paired With Other Party EC DH Page 30 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name Input - Output Storage Storage Duration Zeroization Related SSPs PT Output Public Key:Used With EC DH Public Key PT Input PT Output RAM:Plaintext Until function completion Power Cycle Host EC DH Private Key:Paired With Other Party EC DH Public Key PT Input RAM:Plaintext Until function completion Power Cycle Host EC DH Private Key:Used With KAS Shared Secret:Establishes DH Private Key PT Input PT Output RAM:Plaintext Until function completion Power Cycle Host DH Public Key:Paired With Other Party DH Public Key:Used With KAS Shared Secret:Establishes DH Public Key PT Input PT Output RAM:Plaintext Until function completion Power Cycle Host DH Private Key:Paired With Other Party DH Public Key PT Input RAM:Plaintext Until function completion Power Cycle Host DH Private Key:Used With KAS Shared Secret:Establishes KAS Shared Secret PT Input PT Output RAM:Plaintext Until function completion Power Cycle Host EC 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 Secret PT Input RAM:Plaintext Until function completion Power Cycle Host Derived Keying Material:Derives Derived Keying Material PT Output RAM:Plaintext Until function completion Power Cycle Host KDA Shared Secret:Derived From HMAC Key PT Input RAM:Plaintext Until function completion Power Cycle Host Page 31 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name Input - Output Storage Storage Duration Zeroization Related SSPs RSA Signature Generation Key PT Input PT Output RAM:Plaintext Until function completion Power Cycle Host RSA Signature Verification Key:Paired With RSA Signature Verification Key PT Input PT Output RAM:Plaintext Until function completion Power Cycle Host RSA Signature Generation Key:Paired With TLS Master Secret PT Input PT Output RAM:Plaintext Until function completion Power Cycle Host TLS Key Material:Derives TLS Key Material PT Output RAM:Plaintext Until function completion Power Cycle Host TLS Master Secret:Derived From CTR_DRBG Entropy Input PT Input RAM:Plaintext Until function completion Power Cycle Host CTR_DRBG Seed:Derives CTR_DRBG Key RAM:Plaintext Until DRBG iunnstantiation Power Cycle Host CTR_DRBG Seed:Derived From CTR_DRBG Seed RAM:Plaintext Until DRBG iunnstantiation Power Cycle Host CTR_DRBG Entropy Input:Derived From CTR_DRBG V:Derives CTR_DRBG Key:Derives CTR_DRBG V RAM:Plaintext Until DRBG iunnstantiation Power Cycle Host CTR_DRBG Seed:Derived From Table 17: SSP Table 2 10 Self-Tests 10.1 Pre-Operational Self-Tests Algorithm or Test Test Properties Test Method Test Type Indicator Details HMAC-SHA2- 256 (A6791) Hardcoded 512 bit key Integrity SW/FW Integrity return code of 1 for success, 0 for failure Single HMAC over entire module 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. Page 32 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) 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 Algorith m or Test Test Properti es Test Method Test Type Indicator Details Conditio ns AES- CBC Encrypt KAT 128 KAT CAS T None on success. "AES- CBC-encrypt KAT failed" on stderr on failure. Encrypt module power-up AES- CBC Decrypt KAT 128 KAT CAS T None on success. "AES- CBC-decrypt KAT failed" on stderr on failure. Decrypt module power-up AES- GCM Encrypt KAT 128 KAT CAS T None on success. "AES- GCM-encrypt KAT failed" on stderr on failure. Encrypt module power-up AES- GCM Decrypt KAT 128 KAT CAS T None on success. "AES- GCM-decrypt KAT failed" on stderr on failure. Decrypt module power-up Counter DRBG KAT initialize, reseed, generate tests, per SP 800- 90Arev1 Section 11.3 KAT CAS T None on success. "CTR- DRBG failed" on stderr on failure. Instantiat e, Reseed, Generate module power-up ECDSA SigGen KAT P-256 KAT CAS T None on success. "ECDSA-sign KAT failed" on stderr on failure. Sign On first use ECDSA SigVer KAT P-256 KAT CAS T None on success. "ECDSA-verify KAT failed" on stderr on failure. Verify On first use HMAC- SHA2- 256 KAT 128 KAT CAS T None on success. "HMAC-SHA-256 KAT failed" on stderr on failure. MAC module power-up KAS- ECC- SSC Sp800- 56Ar3 KAT P-256 KAT CAS T None on success. "Z- computation KAT failed." on stderr on failure. SSC On first use Page 33 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Algorith m or Test Test Properti es Test Method Test Type Indicator Details Conditio ns KAS- FFC- SSC Sp800- 56Ar3 KAT 2048 KAT CAS T None on success. "FFDH failed" on stderr on failure. SSC On first use KDA HKDF Sp800- 56Cr1 KAT HMAC SHA-256 KAT CAS T None on success. "HKDF failed" on stderr on failure. KDF module power-up RSA SigGen KAT 2048 KAT CAS T None on success. "RSA- sign KAT failed" on stderr on failure. Sign On first use RSA SigVer KAT 2048 KAT CAS T None on success. "RSA- verify KAT failed" on stderr on failure. Verify On first use SHA-1 KAT n/a KAT CAS T None on success. "SHA- 1 KAT failed" on stderr on failure. Hash module power-up SHA2- 256 KAT n/a KAT CAS T None on success. "SHA- 256 KAT failed" on stderr on failure. Hash module power-up SHA2- 512 KAT n/a KAT CAS T None on success. "SHA- 512 KAT failed" on stderr on failure. Hash module power-up TLS v1.2 KDF RFC762 7 KAT SHA-256 KAT CAS T None on success. "TLS12-KDF KAT failed" on stderr on failure. KDF module power-up TLS v1.3 KDF KAT SHA-256 KAT CAS T None on success. "TLS13-KDF KAT failed" on stderr on failure. KDF module power-up ECDSA KeyGen PCT Generate d key- pair Sign/Veri fy PCT PCT None on success. "EC_KEY_generate_key_ fips failed" on stderr on failure. Sign/Veri fy PCT Keypair generated RSA KeyGen PCT Generate d key- pair Sign/Veri fy PCT PCT None on success. "RSA_generate_key_fips failed" on stderr on failure. Sign/Veri fy PCT Keypair generated KAS- ECC- SSC Sp800- 56Ar3 PCT Generate d key- pair SP 800- 56Arev3 validity tests PCT None on success. Module aborted on failure. SP 800- 56Arev3 validity tests Keypair generated Page 34 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Algorith m or Test Test Properti es Test Method Test Type Indicator Details Conditio ns KAS- FFC- SSC Sp800- 56Ar3 PCT Generate d key- pair SP 800- 56Arev3 validity tests PCT None on success. Module aborted on failure. SP 800- 56Arev3 validity tests Keypair generated Table 19: Conditional Self-Tests 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. 10.3 Periodic Self-Test Information Algorithm or Test Test Method Test Type Period Periodic Method HMAC-SHA2- 256 (A6791) Integrity SW/FW Integrity On startup Manually call On-Demand Self-Test service or restart module Table 20: Pre-Operational Periodic Information Algorithm or Test Test Method Test Type Period Periodic Method AES-CBC Encrypt KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module AES-CBC Decrypt KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module AES-GCM Encrypt KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module Page 35 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Algorithm or Test Test Method Test Type Period Periodic Method AES-GCM Decrypt KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module Counter DRBG KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module ECDSA SigGen KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module ECDSA SigVer KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module HMAC-SHA2- 256 KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module KAS-ECC-SSC Sp800-56Ar3 KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module KAS-FFC-SSC Sp800-56Ar3 KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module KDA HKDF Sp800-56Cr1 KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module RSA SigGen KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module RSA SigVer KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service Page 36 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Algorithm or Test Test Method Test Type Period Periodic Method or restart module SHA-1 KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module SHA2-256 KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module SHA2-512 KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module TLS v1.2 KDF RFC7627 KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module TLS v1.3 KDF KAT KAT CAST Operator chosen Manually call On-Demand Self-Test service or restart module ECDSA KeyGen PCT Sign/Verify PCT PCT n/a n/a RSA KeyGen PCT Sign/Verify PCT PCT n/a n/a KAS-ECC-SSC Sp800-56Ar3 PCT SP 800-56Arev3 validity tests PCT n/a n/a KAS-FFC-SSC Sp800-56Ar3 PCT SP 800-56Arev3 validity tests PCT n/a n/a Table 21: Conditional Periodic Information A level 1 module does not require automatic periodic self-testing, however self-tests can be rerun by On- Dem and Sel f - Testser vi ce ( BORI NGSSL_sel f _t est )orrestarting the module. 10.4 Error States Page 37 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) Name Description Conditions Recovery Method Indicator Error state The module's error state Failure of any FIPS self-test Restart the module Possible indication of failed test on stderr. Module aborts. Table 22: Error States The module’s single error state is shows above. 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/fips- 20230428/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. Building for Android The necessary Android build tools that are configured as part of the manifest. Running the envsetup.sh script will ensure that the proper environment is set to build the library for Android. Download the manifest from https://ci.android.com/builds/submitted/10050109/aosp_cf_arm64_phone-userdebug/latest by clicking the Download button. Verify the manifest using the following command: sha256sum ~/manifest_10050109.xml Manually validate that the output from the final command indicates the following expected hash values for this file: 5f8701016e3c39503e26c81e0facb6ab386319b94f5d2508288907e652060d92 manifest_10050109.xml The module can be obtained by issuing the following commands: mkdir aosp cd aosp Page 38 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) ~/repo init ‐u https://android.googlesource.com/platform/manifest ‐‐depth 1 ~/repo init ‐m ~/manifest_10050109.xml ~/repo sync ‐q ‐c ‐j 50 To build the correct test tools (the test_fips components below, not the module), the following additional steps need to be followed: cd external/boringssl git fetch https://android.googlesource.com/platform/external/boringssl refs/changes/99/2775199/2 && git cherry‐pick FETCH_HEAD git fetch https://android.googlesource.com/platform/external/boringssl refs/changes/28/2778328/2 && git cherry‐pick FETCH_HEAD cd src/util/fipstools nano break‐kat.go Change the first line of the file to be: //go:build ignore Save and exit Once downloaded, the module and testing components can be built using the following commands: croot . build/envsetup.sh lunch aosp_arm64‐eng m clean m test_fips Building for Linux Once the above tools have been obtained, issue the following command to create a CMake toolchain file to specify the use of Clang: 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/boringssl- a430310d6563c0734ddafca7731570dfb683dc19.tar.xz or by issuing the following command: wget https://commondatastorage.googleapis.com/chromium‐boringssl‐fips/boringssl‐ a430310d6563c0734ddafca7731570dfb683dc19.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: 2d5339b756dbf1ceb4fdc4b1c8f19e32ded055292dc57827a6592f15ca9d359f By issuing the following command: printf "set(CMAKE_C_COMPILER \"clang\")\nset(CMAKE_CXX_COMPILER \"clang++\")\n" > ${HOME}/toolchain sha256sum boringssl‐a430310d6563c0734ddafca7731570dfb683dc19.tar.xz Page 39 of 39 Zebra Technologies Corporation Version 1.0 Public Material – May be reproduced only in its original entirely (without revision) The tarball can be extracted using the following command: After the tarball has been extracted, the following commands will compile the module: Retrieving Module name and version The following methods will provide the module name and versions: • FIPS_module_name() – BoringCrypto • FIPS_version() – 2023042800 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 Non- Approved 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. tar xJ < boringssl‐a430310d6563c0734ddafca7731570dfb683dc19.tar.xz cd boringssl mkdir build && cd build && cmake ‐GNinja ‐DCMAKE_TOOLCHAIN_FILE=${HOME}/toolchain ‐DFIPS=1 ‐ DCMAKE_BUILD_TYPE=Release ninja && ninja run_tests