@@ -5388,6 +5388,7 @@ static int _HandleMlDsaSignDma(whServerContext* ctx, uint16_t magic, int devId,
53885388 MlDsaKey key [1 ];
53895389 void * msgAddr = NULL ;
53905390 void * sigAddr = NULL ;
5391+ word32 sigLen = 0 ;
53915392
53925393 whMessageCrypto_MlDsaSignDmaRequest req ;
53935394 whMessageCrypto_MlDsaSignDmaResponse res ;
@@ -5448,7 +5449,7 @@ static int _HandleMlDsaSignDma(whServerContext* ctx, uint16_t magic, int devId,
54485449
54495450 if (ret == 0 ) {
54505451 /* Sign the message using appropriate FIPS 204 API */
5451- word32 sigLen = req .sig .sz ;
5452+ sigLen = req .sig .sz ;
54525453 if (preHashType != WC_HASH_TYPE_NONE ) {
54535454 ret = wc_MlDsaKey_SignCtxHash (
54545455 key , req_context , (byte )contextSz ,
@@ -5461,26 +5462,21 @@ static int _HandleMlDsaSignDma(whServerContext* ctx, uint16_t magic, int devId,
54615462 sigAddr , & sigLen , msgAddr , req .msg .sz ,
54625463 ctx -> crypto -> rng );
54635464 }
5465+ }
54645466
5465- if (ret == 0 ) {
5466- /* Post-write processing of signature buffer */
5467- ret = wh_Server_DmaProcessClientAddress (
5468- ctx , (uintptr_t )req .sig .addr , & sigAddr , sigLen ,
5469- WH_DMA_OPER_CLIENT_WRITE_POST ,
5470- (whServerDmaFlags ){0 });
5471-
5472- if (ret == 0 ) {
5473- /* Set response signature length */
5474- res .sigLen = sigLen ;
5475- * outSize = sizeof (res );
5476- }
5477-
5478- /* Post-read processing of message buffer */
5479- ret = wh_Server_DmaProcessClientAddress (
5480- ctx , (uintptr_t )req .msg .addr , & msgAddr ,
5481- req .msg .sz , WH_DMA_OPER_CLIENT_READ_POST ,
5482- (whServerDmaFlags ){0 });
5483- }
5467+ if (sigAddr != NULL ) {
5468+ /* Post-write processing of signature buffer */
5469+ (void )wh_Server_DmaProcessClientAddress (
5470+ ctx , (uintptr_t )req .sig .addr , & sigAddr , sigLen ,
5471+ WH_DMA_OPER_CLIENT_WRITE_POST ,
5472+ (whServerDmaFlags ){0 });
5473+ }
5474+ if (msgAddr != NULL ) {
5475+ /* Post-read processing of message buffer */
5476+ (void )wh_Server_DmaProcessClientAddress (
5477+ ctx , (uintptr_t )req .msg .addr , & msgAddr ,
5478+ req .msg .sz , WH_DMA_OPER_CLIENT_READ_POST ,
5479+ (whServerDmaFlags ){0 });
54845480 }
54855481 }
54865482
@@ -5495,12 +5491,13 @@ static int _HandleMlDsaSignDma(whServerContext* ctx, uint16_t magic, int devId,
54955491 }
54965492
54975493 if (ret == 0 ) {
5494+ /* Set response signature length */
5495+ res .sigLen = sigLen ;
5496+ * outSize = sizeof (res );
54985497
54995498 /* Translate the response */
55005499 (void )wh_MessageCrypto_TranslateMlDsaSignDmaResponse (
55015500 magic , & res , (whMessageCrypto_MlDsaSignDmaResponse * )cryptoDataOut );
5502-
5503- * outSize = sizeof (res );
55045501 }
55055502
55065503 return ret ;
@@ -5597,26 +5594,21 @@ static int _HandleMlDsaVerifyDma(whServerContext* ctx, uint16_t magic,
55975594 key , sigAddr , req .sig .sz , req_context , (byte )contextSz ,
55985595 msgAddr , req .msg .sz , & verified );
55995596 }
5597+ }
56005598
5601- if (ret == 0 ) {
5602- /* Post-read processing of signature buffer */
5603- ret = wh_Server_DmaProcessClientAddress (
5604- ctx , (uintptr_t )req .sig .addr , & sigAddr , req .sig .sz ,
5605- WH_DMA_OPER_CLIENT_READ_POST , (whServerDmaFlags ){0 });
5606-
5607- if (ret == 0 ) {
5608- /* Post-read processing of message buffer */
5609- ret = wh_Server_DmaProcessClientAddress (
5610- ctx , (uintptr_t )req .msg .addr , & msgAddr ,
5611- req .msg .sz , WH_DMA_OPER_CLIENT_READ_POST ,
5612- (whServerDmaFlags ){0 });
5599+ if (sigAddr != NULL ) {
5600+ /* Post-read processing of signature buffer */
5601+ (void )wh_Server_DmaProcessClientAddress (
5602+ ctx , (uintptr_t )req .sig .addr , & sigAddr , req .sig .sz ,
5603+ WH_DMA_OPER_CLIENT_READ_POST , (whServerDmaFlags ){0 });
5604+ }
56135605
5614- if (ret == 0 ) {
5615- /* Set verification result */
5616- res . verifyResult = verified ;
5617- }
5618- }
5619- }
5606+ if (msgAddr != NULL ) {
5607+ /* Post-read processing of message buffer */
5608+ ( void ) wh_Server_DmaProcessClientAddress (
5609+ ctx , ( uintptr_t ) req . msg . addr , & msgAddr ,
5610+ req . msg . sz , WH_DMA_OPER_CLIENT_READ_POST ,
5611+ ( whServerDmaFlags ){ 0 });
56205612 }
56215613 }
56225614
@@ -5628,6 +5620,9 @@ static int _HandleMlDsaVerifyDma(whServerContext* ctx, uint16_t magic,
56285620 }
56295621
56305622 if (ret == 0 ) {
5623+ /* Set verification result */
5624+ res .verifyResult = verified ;
5625+
56315626 /* Translate the response */
56325627 (void )wh_MessageCrypto_TranslateMlDsaVerifyDmaResponse (
56335628 magic , & res ,
0 commit comments