LCOV - code coverage report
Current view: top level - spdm_crypt_lib - libspdm_crypt_hkdf.c (source / functions) Coverage Total Hit
Test: coverage.info Lines: 70.0 % 40 28
Test Date: 2026-10-01 20:56:25 Functions: 100.0 % 2 2
Branches: 75.0 % 16 12

             Branch data     Line data    Source code
       1                 :             : /**
       2                 :             :  *  Copyright Notice:
       3                 :             :  *  Copyright 2021-2022 DMTF. All rights reserved.
       4                 :             :  *  License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md
       5                 :             :  **/
       6                 :             : 
       7                 :             : #include "internal/libspdm_crypt_lib.h"
       8                 :             : 
       9                 :         321 : bool libspdm_hkdf_extract(uint32_t base_hash_algo, const uint8_t *ikm, size_t ikm_size,
      10                 :             :                           const uint8_t *salt, size_t salt_size,
      11                 :             :                           uint8_t *prk_out, size_t prk_out_size)
      12                 :             : {
      13   [ +  +  +  +  :         321 :     switch (base_hash_algo) {
             +  +  -  - ]
      14                 :         316 :     case SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_256:
      15                 :             : #if LIBSPDM_SHA256_SUPPORT
      16                 :         316 :         return libspdm_hkdf_sha256_extract(ikm, ikm_size, salt, salt_size, prk_out, prk_out_size);
      17                 :             : #else
      18                 :             :         LIBSPDM_ASSERT(false);
      19                 :             :         return false;
      20                 :             : #endif
      21                 :           1 :     case SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_384:
      22                 :             : #if LIBSPDM_SHA384_SUPPORT
      23                 :           1 :         return libspdm_hkdf_sha384_extract(ikm, ikm_size, salt, salt_size, prk_out, prk_out_size);
      24                 :             : #else
      25                 :             :         LIBSPDM_ASSERT(false);
      26                 :             :         return false;
      27                 :             : #endif
      28                 :           1 :     case SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_512:
      29                 :             : #if LIBSPDM_SHA512_SUPPORT
      30                 :           1 :         return libspdm_hkdf_sha512_extract(ikm, ikm_size, salt, salt_size, prk_out, prk_out_size);
      31                 :             : #else
      32                 :             :         LIBSPDM_ASSERT(false);
      33                 :             :         return false;
      34                 :             : #endif
      35                 :           1 :     case SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA3_256:
      36                 :             : #if LIBSPDM_SHA3_256_SUPPORT
      37                 :           1 :         return libspdm_hkdf_sha3_256_extract(ikm, ikm_size, salt, salt_size, prk_out, prk_out_size);
      38                 :             : #else
      39                 :             :         LIBSPDM_ASSERT(false);
      40                 :             :         return false;
      41                 :             : #endif
      42                 :           1 :     case SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA3_384:
      43                 :             : #if LIBSPDM_SHA3_384_SUPPORT
      44                 :           1 :         return libspdm_hkdf_sha3_384_extract(ikm, ikm_size, salt, salt_size, prk_out, prk_out_size);
      45                 :             : #else
      46                 :             :         LIBSPDM_ASSERT(false);
      47                 :             :         return false;
      48                 :             : #endif
      49                 :           1 :     case SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA3_512:
      50                 :             : #if LIBSPDM_SHA3_512_SUPPORT
      51                 :           1 :         return libspdm_hkdf_sha3_512_extract(ikm, ikm_size, salt, salt_size, prk_out, prk_out_size);
      52                 :             : #else
      53                 :             :         LIBSPDM_ASSERT(false);
      54                 :             :         return false;
      55                 :             : #endif
      56                 :           0 :     case SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SM3_256:
      57                 :             : #if LIBSPDM_SM3_256_SUPPORT
      58                 :             :         return libspdm_hkdf_sm3_256_extract(ikm, ikm_size, salt, salt_size, prk_out, prk_out_size);
      59                 :             : #else
      60                 :           0 :         LIBSPDM_ASSERT(false);
      61                 :           0 :         return false;
      62                 :             : #endif
      63                 :           0 :     default:
      64                 :           0 :         LIBSPDM_ASSERT(false);
      65                 :           0 :         return false;
      66                 :             :     }
      67                 :             : }
      68                 :             : 
      69                 :        1663 : bool libspdm_hkdf_expand(uint32_t base_hash_algo, const uint8_t *prk,
      70                 :             :                          size_t prk_size, const uint8_t *info,
      71                 :             :                          size_t info_size, uint8_t *out, size_t out_size)
      72                 :             : {
      73   [ +  +  +  +  :        1663 :     switch (base_hash_algo) {
             +  +  -  - ]
      74                 :        1658 :     case SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_256:
      75                 :             : #if LIBSPDM_SHA256_SUPPORT
      76                 :        1658 :         return libspdm_hkdf_sha256_expand(prk, prk_size, info, info_size, out, out_size);
      77                 :             : #else
      78                 :             :         LIBSPDM_ASSERT(false);
      79                 :             :         return false;
      80                 :             : #endif
      81                 :           1 :     case SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_384:
      82                 :             : #if LIBSPDM_SHA384_SUPPORT
      83                 :           1 :         return libspdm_hkdf_sha384_expand(prk, prk_size, info, info_size, out, out_size);
      84                 :             : #else
      85                 :             :         LIBSPDM_ASSERT(false);
      86                 :             :         return false;
      87                 :             : #endif
      88                 :           1 :     case SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_512:
      89                 :             : #if LIBSPDM_SHA512_SUPPORT
      90                 :           1 :         return libspdm_hkdf_sha512_expand(prk, prk_size, info, info_size, out, out_size);
      91                 :             : #else
      92                 :             :         LIBSPDM_ASSERT(false);
      93                 :             :         return false;
      94                 :             : #endif
      95                 :           1 :     case SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA3_256:
      96                 :             : #if LIBSPDM_SHA3_256_SUPPORT
      97                 :           1 :         return libspdm_hkdf_sha3_256_expand(prk, prk_size, info, info_size, out, out_size);
      98                 :             : #else
      99                 :             :         LIBSPDM_ASSERT(false);
     100                 :             :         return false;
     101                 :             : #endif
     102                 :           1 :     case SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA3_384:
     103                 :             : #if LIBSPDM_SHA3_384_SUPPORT
     104                 :           1 :         return libspdm_hkdf_sha3_384_expand(prk, prk_size, info, info_size, out, out_size);
     105                 :             : #else
     106                 :             :         LIBSPDM_ASSERT(false);
     107                 :             :         return false;
     108                 :             : #endif
     109                 :           1 :     case SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA3_512:
     110                 :             : #if LIBSPDM_SHA3_512_SUPPORT
     111                 :           1 :         return libspdm_hkdf_sha3_512_expand(prk, prk_size, info, info_size, out, out_size);
     112                 :             : #else
     113                 :             :         LIBSPDM_ASSERT(false);
     114                 :             :         return false;
     115                 :             : #endif
     116                 :           0 :     case SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SM3_256:
     117                 :             : #if LIBSPDM_SM3_256_SUPPORT
     118                 :             :         return libspdm_hkdf_sm3_256_expand(prk, prk_size, info, info_size, out, out_size);
     119                 :             : #else
     120                 :           0 :         LIBSPDM_ASSERT(false);
     121                 :           0 :         return false;
     122                 :             : #endif
     123                 :           0 :     default:
     124                 :           0 :         LIBSPDM_ASSERT(false);
     125                 :           0 :         return false;
     126                 :             :     }
     127                 :             : }
        

Generated by: LCOV version 2.0-1