1*91676d66SBernhard Stoeckner /**
2*91676d66SBernhard Stoeckner  *  Copyright Notice:
3*91676d66SBernhard Stoeckner  *  Copyright 2021-2022 DMTF. All rights reserved.
4*91676d66SBernhard Stoeckner  *  License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md
5*91676d66SBernhard Stoeckner  **/
6*91676d66SBernhard Stoeckner 
7*91676d66SBernhard Stoeckner /** @file
8*91676d66SBernhard Stoeckner  * SPDM common library.
9*91676d66SBernhard Stoeckner  * It follows the SPDM Specification.
10*91676d66SBernhard Stoeckner  **/
11*91676d66SBernhard Stoeckner 
12*91676d66SBernhard Stoeckner #include "hal/library/responder/asymsignlib.h"
13*91676d66SBernhard Stoeckner #include "hal/library/responder/csrlib.h"
14*91676d66SBernhard Stoeckner #include "hal/library/responder/measlib.h"
15*91676d66SBernhard Stoeckner #include "hal/library/responder/psklib.h"
16*91676d66SBernhard Stoeckner #include "hal/library/responder/setcertlib.h"
17*91676d66SBernhard Stoeckner #include "hal/library/requester/reqasymsignlib.h"
18*91676d66SBernhard Stoeckner #include "hal/library/requester/psklib.h"
19*91676d66SBernhard Stoeckner 
20*91676d66SBernhard Stoeckner #if LIBSPDM_ENABLE_CAPABILITY_MEAS_CAP
libspdm_measurement_collection(spdm_version_number_t spdm_version,uint8_t measurement_specification,uint32_t measurement_hash_algo,uint8_t mesurements_index,uint8_t request_attribute,uint8_t * content_changed,uint8_t * device_measurement_count,void * device_measurement,size_t * device_measurement_size)21*91676d66SBernhard Stoeckner libspdm_return_t libspdm_measurement_collection(
22*91676d66SBernhard Stoeckner     spdm_version_number_t spdm_version,
23*91676d66SBernhard Stoeckner     uint8_t measurement_specification,
24*91676d66SBernhard Stoeckner     uint32_t measurement_hash_algo,
25*91676d66SBernhard Stoeckner     uint8_t mesurements_index,
26*91676d66SBernhard Stoeckner     uint8_t request_attribute,
27*91676d66SBernhard Stoeckner     uint8_t *content_changed,
28*91676d66SBernhard Stoeckner     uint8_t *device_measurement_count,
29*91676d66SBernhard Stoeckner     void *device_measurement,
30*91676d66SBernhard Stoeckner     size_t *device_measurement_size)
31*91676d66SBernhard Stoeckner {
32*91676d66SBernhard Stoeckner     return LIBSPDM_STATUS_UNSUPPORTED_CAP;
33*91676d66SBernhard Stoeckner }
34*91676d66SBernhard Stoeckner 
libspdm_measurement_opaque_data(spdm_version_number_t spdm_version,uint8_t measurement_specification,uint32_t measurement_hash_algo,uint8_t measurement_index,uint8_t request_attribute,void * opaque_data,size_t * opaque_data_size)35*91676d66SBernhard Stoeckner bool libspdm_measurement_opaque_data(
36*91676d66SBernhard Stoeckner     spdm_version_number_t spdm_version,
37*91676d66SBernhard Stoeckner     uint8_t measurement_specification,
38*91676d66SBernhard Stoeckner     uint32_t measurement_hash_algo,
39*91676d66SBernhard Stoeckner     uint8_t measurement_index,
40*91676d66SBernhard Stoeckner     uint8_t request_attribute,
41*91676d66SBernhard Stoeckner     void *opaque_data,
42*91676d66SBernhard Stoeckner     size_t *opaque_data_size)
43*91676d66SBernhard Stoeckner {
44*91676d66SBernhard Stoeckner     return false;
45*91676d66SBernhard Stoeckner }
46*91676d66SBernhard Stoeckner 
libspdm_challenge_opaque_data(spdm_version_number_t spdm_version,uint8_t slot_id,uint8_t * measurement_summary_hash,size_t measurement_summary_hash_size,void * opaque_data,size_t * opaque_data_size)47*91676d66SBernhard Stoeckner bool libspdm_challenge_opaque_data(
48*91676d66SBernhard Stoeckner     spdm_version_number_t spdm_version,
49*91676d66SBernhard Stoeckner     uint8_t slot_id,
50*91676d66SBernhard Stoeckner     uint8_t *measurement_summary_hash,
51*91676d66SBernhard Stoeckner     size_t measurement_summary_hash_size,
52*91676d66SBernhard Stoeckner     void *opaque_data,
53*91676d66SBernhard Stoeckner     size_t *opaque_data_size)
54*91676d66SBernhard Stoeckner {
55*91676d66SBernhard Stoeckner     return false;
56*91676d66SBernhard Stoeckner }
57*91676d66SBernhard Stoeckner 
libspdm_encap_challenge_opaque_data(spdm_version_number_t spdm_version,uint8_t slot_id,uint8_t * measurement_summary_hash,size_t measurement_summary_hash_size,void * opaque_data,size_t * opaque_data_size)58*91676d66SBernhard Stoeckner bool libspdm_encap_challenge_opaque_data(
59*91676d66SBernhard Stoeckner     spdm_version_number_t spdm_version,
60*91676d66SBernhard Stoeckner     uint8_t slot_id,
61*91676d66SBernhard Stoeckner     uint8_t *measurement_summary_hash,
62*91676d66SBernhard Stoeckner     size_t measurement_summary_hash_size,
63*91676d66SBernhard Stoeckner     void *opaque_data,
64*91676d66SBernhard Stoeckner     size_t *opaque_data_size)
65*91676d66SBernhard Stoeckner {
66*91676d66SBernhard Stoeckner     return false;
67*91676d66SBernhard Stoeckner }
68*91676d66SBernhard Stoeckner 
libspdm_generate_measurement_summary_hash(spdm_version_number_t spdm_version,uint32_t base_hash_algo,uint8_t measurement_specification,uint32_t measurement_hash_algo,uint8_t measurement_summary_hash_type,uint8_t * measurement_summary_hash,uint32_t measurement_summary_hash_size)69*91676d66SBernhard Stoeckner bool libspdm_generate_measurement_summary_hash(
70*91676d66SBernhard Stoeckner     spdm_version_number_t spdm_version,
71*91676d66SBernhard Stoeckner     uint32_t base_hash_algo,
72*91676d66SBernhard Stoeckner     uint8_t measurement_specification,
73*91676d66SBernhard Stoeckner     uint32_t measurement_hash_algo,
74*91676d66SBernhard Stoeckner     uint8_t measurement_summary_hash_type,
75*91676d66SBernhard Stoeckner     uint8_t  *measurement_summary_hash,
76*91676d66SBernhard Stoeckner     uint32_t measurement_summary_hash_size)
77*91676d66SBernhard Stoeckner {
78*91676d66SBernhard Stoeckner     return false;
79*91676d66SBernhard Stoeckner }
80*91676d66SBernhard Stoeckner #endif /* LIBSPDM_ENABLE_CAPABILITY_MEAS_CAP */
81*91676d66SBernhard Stoeckner 
82*91676d66SBernhard Stoeckner // NVIDIA_EDIT: Commenting out stub as we need this implementation for mutual authentication.
83*91676d66SBernhard Stoeckner #if LIBSPDM_ENABLE_CAPABILITY_MUT_AUTH_CAP
84*91676d66SBernhard Stoeckner /*
85*91676d66SBernhard Stoeckner bool libspdm_requester_data_sign(
86*91676d66SBernhard Stoeckner     spdm_version_number_t spdm_version, uint8_t op_code,
87*91676d66SBernhard Stoeckner     uint16_t req_base_asym_alg,
88*91676d66SBernhard Stoeckner     uint32_t base_hash_algo, bool is_data_hash,
89*91676d66SBernhard Stoeckner     const uint8_t *message, size_t message_size,
90*91676d66SBernhard Stoeckner     uint8_t *signature, size_t *sig_size)
91*91676d66SBernhard Stoeckner {
92*91676d66SBernhard Stoeckner     return false;
93*91676d66SBernhard Stoeckner }
94*91676d66SBernhard Stoeckner */
95*91676d66SBernhard Stoeckner #endif /* LIBSPDM_ENABLE_CAPABILITY_MUT_AUTH_CAP */
96*91676d66SBernhard Stoeckner 
libspdm_responder_data_sign(spdm_version_number_t spdm_version,uint8_t op_code,uint32_t base_asym_algo,uint32_t base_hash_algo,bool is_data_hash,const uint8_t * message,size_t message_size,uint8_t * signature,size_t * sig_size)97*91676d66SBernhard Stoeckner bool libspdm_responder_data_sign(
98*91676d66SBernhard Stoeckner     spdm_version_number_t spdm_version, uint8_t op_code,
99*91676d66SBernhard Stoeckner     uint32_t base_asym_algo,
100*91676d66SBernhard Stoeckner     uint32_t base_hash_algo, bool is_data_hash,
101*91676d66SBernhard Stoeckner     const uint8_t *message, size_t message_size,
102*91676d66SBernhard Stoeckner     uint8_t *signature, size_t *sig_size)
103*91676d66SBernhard Stoeckner {
104*91676d66SBernhard Stoeckner     return false;
105*91676d66SBernhard Stoeckner }
106*91676d66SBernhard Stoeckner 
107*91676d66SBernhard Stoeckner #if LIBSPDM_ENABLE_CAPABILITY_PSK_CAP
libspdm_psk_handshake_secret_hkdf_expand(spdm_version_number_t spdm_version,uint32_t base_hash_algo,const uint8_t * psk_hint,size_t psk_hint_size,const uint8_t * info,size_t info_size,uint8_t * out,size_t out_size)108*91676d66SBernhard Stoeckner bool libspdm_psk_handshake_secret_hkdf_expand(
109*91676d66SBernhard Stoeckner     spdm_version_number_t spdm_version,
110*91676d66SBernhard Stoeckner     uint32_t base_hash_algo,
111*91676d66SBernhard Stoeckner     const uint8_t *psk_hint,
112*91676d66SBernhard Stoeckner     size_t psk_hint_size,
113*91676d66SBernhard Stoeckner     const uint8_t *info,
114*91676d66SBernhard Stoeckner     size_t info_size,
115*91676d66SBernhard Stoeckner     uint8_t *out, size_t out_size)
116*91676d66SBernhard Stoeckner {
117*91676d66SBernhard Stoeckner     return false;
118*91676d66SBernhard Stoeckner }
119*91676d66SBernhard Stoeckner 
libspdm_psk_master_secret_hkdf_expand(spdm_version_number_t spdm_version,uint32_t base_hash_algo,const uint8_t * psk_hint,size_t psk_hint_size,const uint8_t * info,size_t info_size,uint8_t * out,size_t out_size)120*91676d66SBernhard Stoeckner bool libspdm_psk_master_secret_hkdf_expand(
121*91676d66SBernhard Stoeckner     spdm_version_number_t spdm_version,
122*91676d66SBernhard Stoeckner     uint32_t base_hash_algo,
123*91676d66SBernhard Stoeckner     const uint8_t *psk_hint,
124*91676d66SBernhard Stoeckner     size_t psk_hint_size,
125*91676d66SBernhard Stoeckner     const uint8_t *info,
126*91676d66SBernhard Stoeckner     size_t info_size, uint8_t *out,
127*91676d66SBernhard Stoeckner     size_t out_size)
128*91676d66SBernhard Stoeckner {
129*91676d66SBernhard Stoeckner     return false;
130*91676d66SBernhard Stoeckner }
131*91676d66SBernhard Stoeckner #endif /* LIBSPDM_ENABLE_CAPABILITY_PSK_CAP */
132*91676d66SBernhard Stoeckner 
133*91676d66SBernhard Stoeckner #if LIBSPDM_ENABLE_CAPABILITY_SET_CERT_CAP
libspdm_is_in_trusted_environment()134*91676d66SBernhard Stoeckner bool libspdm_is_in_trusted_environment()
135*91676d66SBernhard Stoeckner {
136*91676d66SBernhard Stoeckner     return false;
137*91676d66SBernhard Stoeckner }
138*91676d66SBernhard Stoeckner 
libspdm_write_certificate_to_nvm(uint8_t slot_id,const void * cert_chain,size_t cert_chain_size,uint32_t base_hash_algo,uint32_t base_asym_algo)139*91676d66SBernhard Stoeckner bool libspdm_write_certificate_to_nvm(uint8_t slot_id, const void * cert_chain,
140*91676d66SBernhard Stoeckner                                       size_t cert_chain_size,
141*91676d66SBernhard Stoeckner                                       uint32_t base_hash_algo, uint32_t base_asym_algo)
142*91676d66SBernhard Stoeckner {
143*91676d66SBernhard Stoeckner     return false;
144*91676d66SBernhard Stoeckner }
145*91676d66SBernhard Stoeckner #endif /* LIBSPDM_ENABLE_CAPABILITY_SET_CERT_CAP */
146*91676d66SBernhard Stoeckner 
147*91676d66SBernhard Stoeckner #if LIBSPDM_ENABLE_CAPABILITY_CSR_CAP
libspdm_gen_csr(uint32_t base_hash_algo,uint32_t base_asym_algo,bool * need_reset,const void * request,size_t request_size,uint8_t * requester_info,size_t requester_info_length,uint8_t * opaque_data,uint16_t opaque_data_length,size_t * csr_len,uint8_t * csr_pointer,bool is_device_cert_model)148*91676d66SBernhard Stoeckner bool libspdm_gen_csr(uint32_t base_hash_algo, uint32_t base_asym_algo, bool *need_reset,
149*91676d66SBernhard Stoeckner                      const void *request, size_t request_size,
150*91676d66SBernhard Stoeckner                      uint8_t *requester_info, size_t requester_info_length,
151*91676d66SBernhard Stoeckner                      uint8_t *opaque_data, uint16_t opaque_data_length,
152*91676d66SBernhard Stoeckner                      size_t *csr_len, uint8_t *csr_pointer,
153*91676d66SBernhard Stoeckner                      bool is_device_cert_model)
154*91676d66SBernhard Stoeckner {
155*91676d66SBernhard Stoeckner     return false;
156*91676d66SBernhard Stoeckner }
157*91676d66SBernhard Stoeckner #endif /* LIBSPDM_ENABLE_CAPABILITY_CSR_CAP */
158