@@ -72,17 +72,6 @@ struct WOLFSPDM_CTX {
7272 /* State machine */
7373 int state ;
7474
75- /* Boolean flag bit field */
76- struct {
77- unsigned int debug : 1 ;
78- unsigned int initialized : 1 ;
79- unsigned int isDynamic : 1 ; /* Set by wolfSPDM_New(), checked by Free */
80- unsigned int rngInitialized : 1 ;
81- unsigned int ephemeralKeyInit : 1 ;
82- unsigned int hasRspPubKey : 1 ;
83- unsigned int hasReqKeyPair : 1 ;
84- } flags ;
85-
8675 /* Protocol mode */
8776 WOLFSPDM_MODE mode ;
8877
@@ -166,6 +155,16 @@ struct WOLFSPDM_CTX {
166155 word32 reqPrivKeyLen ;
167156 byte reqPubKey [WOLFSPDM_ECC_POINT_SIZE ];
168157
158+ /* Boolean flag bit field (at end for better struct packing) */
159+ struct {
160+ unsigned int debug : 1 ;
161+ unsigned int initialized : 1 ;
162+ unsigned int isDynamic : 1 ; /* Set by wolfSPDM_New(), checked by Free */
163+ unsigned int rngInitialized : 1 ;
164+ unsigned int ephemeralKeyInit : 1 ;
165+ unsigned int hasRspPubKey : 1 ;
166+ unsigned int hasReqKeyPair : 1 ;
167+ } flags ;
169168};
170169
171170/* ----- Byte-Order Helpers ----- */
@@ -276,78 +275,78 @@ static WC_INLINE void wolfSPDM_BuildIV(byte* iv, const byte* baseIv,
276275
277276/* ----- Internal Function Declarations - Transcript ----- */
278277
279- WOLFSPDM_API void wolfSPDM_TranscriptReset (WOLFSPDM_CTX * ctx );
280- WOLFSPDM_API int wolfSPDM_TranscriptAdd (WOLFSPDM_CTX * ctx , const byte * data , word32 len );
281- WOLFSPDM_API int wolfSPDM_TranscriptHash (WOLFSPDM_CTX * ctx , byte * hash );
282- WOLFSPDM_API int wolfSPDM_Sha384Hash (byte * out ,
278+ WOLFTPM_LOCAL void wolfSPDM_TranscriptReset (WOLFSPDM_CTX * ctx );
279+ WOLFTPM_LOCAL int wolfSPDM_TranscriptAdd (WOLFSPDM_CTX * ctx , const byte * data , word32 len );
280+ WOLFTPM_LOCAL int wolfSPDM_TranscriptHash (WOLFSPDM_CTX * ctx , byte * hash );
281+ WOLFTPM_LOCAL int wolfSPDM_Sha384Hash (byte * out ,
283282 const byte * d1 , word32 d1Sz ,
284283 const byte * d2 , word32 d2Sz ,
285284 const byte * d3 , word32 d3Sz );
286285
287286/* ----- Internal Function Declarations - Crypto ----- */
288287
289- WOLFSPDM_API int wolfSPDM_GenerateEphemeralKey (WOLFSPDM_CTX * ctx );
290- WOLFSPDM_API int wolfSPDM_ExportEphemeralPubKey (WOLFSPDM_CTX * ctx ,
288+ WOLFTPM_LOCAL int wolfSPDM_GenerateEphemeralKey (WOLFSPDM_CTX * ctx );
289+ WOLFTPM_LOCAL int wolfSPDM_ExportEphemeralPubKey (WOLFSPDM_CTX * ctx ,
291290 byte * pubKeyX , word32 * pubKeyXSz ,
292291 byte * pubKeyY , word32 * pubKeyYSz );
293- WOLFSPDM_API int wolfSPDM_ComputeSharedSecret (WOLFSPDM_CTX * ctx ,
292+ WOLFTPM_LOCAL int wolfSPDM_ComputeSharedSecret (WOLFSPDM_CTX * ctx ,
294293 const byte * peerPubKeyX , const byte * peerPubKeyY );
295- WOLFSPDM_API int wolfSPDM_GetRandom (WOLFSPDM_CTX * ctx , byte * out , word32 outSz );
296- WOLFSPDM_API int wolfSPDM_SignHash (WOLFSPDM_CTX * ctx , const byte * hash , word32 hashSz ,
294+ WOLFTPM_LOCAL int wolfSPDM_GetRandom (WOLFSPDM_CTX * ctx , byte * out , word32 outSz );
295+ WOLFTPM_LOCAL int wolfSPDM_SignHash (WOLFSPDM_CTX * ctx , const byte * hash , word32 hashSz ,
297296 byte * sig , word32 * sigSz );
298- WOLFSPDM_API int wolfSPDM_VerifySignature (WOLFSPDM_CTX * ctx ,
297+ WOLFTPM_LOCAL int wolfSPDM_VerifySignature (WOLFSPDM_CTX * ctx ,
299298 const byte * hash , word32 hashSz ,
300299 const byte * sig , word32 sigSz );
301300
302301/* ----- Internal Function Declarations - Key Derivation ----- */
303302
304- WOLFSPDM_API int wolfSPDM_DeriveHandshakeKeys (WOLFSPDM_CTX * ctx , const byte * th1Hash );
305- WOLFSPDM_API int wolfSPDM_DeriveFromHandshakeSecret (WOLFSPDM_CTX * ctx , const byte * th1Hash );
306- WOLFSPDM_API int wolfSPDM_DeriveAppDataKeys (WOLFSPDM_CTX * ctx );
307- WOLFSPDM_API int wolfSPDM_HkdfExpandLabel (byte spdmVersion , const byte * secret , word32 secretSz ,
303+ WOLFTPM_LOCAL int wolfSPDM_DeriveHandshakeKeys (WOLFSPDM_CTX * ctx , const byte * th1Hash );
304+ WOLFTPM_LOCAL int wolfSPDM_DeriveFromHandshakeSecret (WOLFSPDM_CTX * ctx , const byte * th1Hash );
305+ WOLFTPM_LOCAL int wolfSPDM_DeriveAppDataKeys (WOLFSPDM_CTX * ctx );
306+ WOLFTPM_LOCAL int wolfSPDM_HkdfExpandLabel (byte spdmVersion , const byte * secret , word32 secretSz ,
308307 const char * label , const byte * context , word32 contextSz ,
309308 byte * out , word32 outSz );
310- WOLFSPDM_API int wolfSPDM_ComputeVerifyData (const byte * finishedKey , const byte * thHash ,
309+ WOLFTPM_LOCAL int wolfSPDM_ComputeVerifyData (const byte * finishedKey , const byte * thHash ,
311310 byte * verifyData );
312311
313312/* ----- Internal Function Declarations - Message Building ----- */
314313
315- WOLFSPDM_API int wolfSPDM_BuildGetVersion (byte * buf , word32 * bufSz );
316- WOLFSPDM_API int wolfSPDM_BuildKeyExchange (WOLFSPDM_CTX * ctx , byte * buf , word32 * bufSz );
317- WOLFSPDM_API int wolfSPDM_BuildFinish (WOLFSPDM_CTX * ctx , byte * buf , word32 * bufSz );
318- WOLFSPDM_API int wolfSPDM_BuildEndSession (WOLFSPDM_CTX * ctx , byte * buf , word32 * bufSz );
314+ WOLFTPM_LOCAL int wolfSPDM_BuildGetVersion (byte * buf , word32 * bufSz );
315+ WOLFTPM_LOCAL int wolfSPDM_BuildKeyExchange (WOLFSPDM_CTX * ctx , byte * buf , word32 * bufSz );
316+ WOLFTPM_LOCAL int wolfSPDM_BuildFinish (WOLFSPDM_CTX * ctx , byte * buf , word32 * bufSz );
317+ WOLFTPM_LOCAL int wolfSPDM_BuildEndSession (WOLFSPDM_CTX * ctx , byte * buf , word32 * bufSz );
319318/* PSK message builders/parsers declared in spdm_psk.h */
320319
321320/* ----- Internal Function Declarations - Message Parsing ----- */
322321
323- WOLFSPDM_API int wolfSPDM_ParseVersion (WOLFSPDM_CTX * ctx , const byte * buf , word32 bufSz );
324- WOLFSPDM_API int wolfSPDM_ParseKeyExchangeRsp (WOLFSPDM_CTX * ctx , const byte * buf , word32 bufSz );
325- WOLFSPDM_API int wolfSPDM_ParseFinishRsp (WOLFSPDM_CTX * ctx , const byte * buf , word32 bufSz );
326- WOLFSPDM_API int wolfSPDM_CheckError (const byte * buf , word32 bufSz , int * errorCode );
322+ WOLFTPM_LOCAL int wolfSPDM_ParseVersion (WOLFSPDM_CTX * ctx , const byte * buf , word32 bufSz );
323+ WOLFTPM_LOCAL int wolfSPDM_ParseKeyExchangeRsp (WOLFSPDM_CTX * ctx , const byte * buf , word32 bufSz );
324+ WOLFTPM_LOCAL int wolfSPDM_ParseFinishRsp (WOLFSPDM_CTX * ctx , const byte * buf , word32 bufSz );
325+ WOLFTPM_LOCAL int wolfSPDM_CheckError (const byte * buf , word32 bufSz , int * errorCode );
327326
328327/* ----- Internal Function Declarations - Secured Messaging ----- */
329328
330- WOLFSPDM_API int wolfSPDM_EncryptInternal (WOLFSPDM_CTX * ctx ,
329+ WOLFTPM_LOCAL int wolfSPDM_EncryptInternal (WOLFSPDM_CTX * ctx ,
331330 const byte * plain , word32 plainSz ,
332331 byte * enc , word32 * encSz );
333- WOLFSPDM_API int wolfSPDM_DecryptInternal (WOLFSPDM_CTX * ctx ,
332+ WOLFTPM_LOCAL int wolfSPDM_DecryptInternal (WOLFSPDM_CTX * ctx ,
334333 const byte * enc , word32 encSz ,
335334 byte * plain , word32 * plainSz );
336335
337336/* ----- Internal Utility Functions ----- */
338337
339- WOLFSPDM_API int wolfSPDM_SendReceive (WOLFSPDM_CTX * ctx ,
338+ WOLFTPM_LOCAL int wolfSPDM_SendReceive (WOLFSPDM_CTX * ctx ,
340339 const byte * txBuf , word32 txSz ,
341340 byte * rxBuf , word32 * rxSz );
342341
343342#ifdef DEBUG_WOLFTPM
344- WOLFSPDM_API void wolfSPDM_DebugPrint (WOLFSPDM_CTX * ctx , const char * fmt , ...)
343+ WOLFTPM_LOCAL void wolfSPDM_DebugPrint (WOLFSPDM_CTX * ctx , const char * fmt , ...)
345344#ifdef __GNUC__
346345 __attribute__((format (printf , 2 , 3 )))
347346#endif
348347 ;
349348
350- WOLFSPDM_API void wolfSPDM_DebugHex (WOLFSPDM_CTX * ctx , const char * label ,
349+ WOLFTPM_LOCAL void wolfSPDM_DebugHex (WOLFSPDM_CTX * ctx , const char * label ,
351350 const byte * data , word32 len );
352351#else
353352#define wolfSPDM_DebugPrint (ctx , fmt , ...) do { (void)(ctx); (void)fmt; } while(0)
0 commit comments