LCOV - code coverage report
Current view: top level - library/spdm_secured_message_lib - libspdm_secmes_key_exchange_pqc.c (source / functions) Coverage Total Hit
Test: coverage.info Lines: 0.0 % 27 0
Test Date: 2026-02-22 08:11:49 Functions: 0.0 % 5 0

            Line data    Source code
       1              : /**
       2              :  *  Copyright Notice:
       3              :  *  Copyright 2025-2026 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_secured_message_lib.h"
       8              : 
       9            0 : void *libspdm_secured_message_kem_new(spdm_version_number_t spdm_version,
      10              :                                       uint32_t kem_alg, bool is_initiator)
      11              : {
      12            0 :     return libspdm_kem_new(spdm_version, kem_alg, is_initiator);
      13              : }
      14              : 
      15            0 : void libspdm_secured_message_kem_free(uint32_t kem_alg, void *kem_context)
      16              : {
      17            0 :     libspdm_kem_free(kem_alg, kem_context);
      18            0 : }
      19              : 
      20            0 : bool libspdm_secured_message_kem_generate_key(uint32_t kem_alg,
      21              :                                               void *kem_context,
      22              :                                               uint8_t *encap_key,
      23              :                                               size_t *encap_key_size)
      24              : {
      25            0 :     return libspdm_kem_generate_key(kem_alg, kem_context, encap_key, encap_key_size);
      26              : }
      27              : 
      28            0 : bool libspdm_secured_message_kem_encapsulate(
      29              :     uint32_t kem_alg, void *kem_context,
      30              :     const uint8_t *peer_encap_key, size_t peer_encap_key_size,
      31              :     uint8_t *cipher_text, size_t *cipher_text_size,
      32              :     void *spdm_secured_message_context)
      33              : {
      34              :     libspdm_secured_message_context_t *secured_message_context;
      35              :     uint8_t final_key[LIBSPDM_MAX_KEM_SS_SIZE];
      36              :     size_t final_key_size;
      37              :     bool ret;
      38              : 
      39            0 :     secured_message_context = spdm_secured_message_context;
      40              : 
      41            0 :     final_key_size = sizeof(final_key);
      42            0 :     ret = libspdm_kem_encapsulate(kem_alg, kem_context, peer_encap_key,
      43              :                                   peer_encap_key_size, cipher_text,
      44              :                                   cipher_text_size, final_key,
      45              :                                   &final_key_size);
      46            0 :     if (!ret) {
      47            0 :         return ret;
      48              :     }
      49            0 :     libspdm_copy_mem(secured_message_context->master_secret.shared_secret,
      50              :                      sizeof(secured_message_context->master_secret.shared_secret),
      51              :                      final_key, final_key_size);
      52            0 :     libspdm_zero_mem(final_key, final_key_size);
      53            0 :     secured_message_context->shared_key_size = final_key_size;
      54            0 :     return true;
      55              : }
      56              : 
      57            0 : bool libspdm_secured_message_kem_decapsulate(
      58              :     uint32_t kem_alg, void *kem_context,
      59              :     const uint8_t *peer_cipher_text, size_t peer_cipher_text_size,
      60              :     void *spdm_secured_message_context)
      61              : {
      62              :     libspdm_secured_message_context_t *secured_message_context;
      63              :     uint8_t final_key[LIBSPDM_MAX_KEM_SS_SIZE];
      64              :     size_t final_key_size;
      65              :     bool ret;
      66              : 
      67            0 :     secured_message_context = spdm_secured_message_context;
      68              : 
      69            0 :     final_key_size = sizeof(final_key);
      70            0 :     ret = libspdm_kem_decapsulate(kem_alg, kem_context, peer_cipher_text,
      71              :                                   peer_cipher_text_size, final_key,
      72              :                                   &final_key_size);
      73            0 :     if (!ret) {
      74            0 :         return ret;
      75              :     }
      76            0 :     libspdm_copy_mem(secured_message_context->master_secret.shared_secret,
      77              :                      sizeof(secured_message_context->master_secret.shared_secret),
      78              :                      final_key, final_key_size);
      79            0 :     libspdm_zero_mem(final_key, final_key_size);
      80            0 :     secured_message_context->shared_key_size = final_key_size;
      81            0 :     return true;
      82              : }
        

Generated by: LCOV version 2.0-1