@@ -451,6 +451,9 @@ aesni_mb_set_session_cipher_parameters(const IMB_MGR *mb_mgr,
451451 uint8_t is_zuc = 0 ;
452452 uint8_t is_snow3g = 0 ;
453453 uint8_t is_kasumi = 0 ;
454+ #if IMB_VERSION (1 , 5 , 0 ) <= IMB_VERSION_NUM
455+ uint8_t is_sm4 = 0 ;
456+ #endif
454457
455458 if (xform == NULL ) {
456459 sess -> template_job .cipher_mode = IMB_CIPHER_NULL ;
@@ -521,6 +524,22 @@ aesni_mb_set_session_cipher_parameters(const IMB_MGR *mb_mgr,
521524 sess -> iv .offset = xform -> cipher .iv .offset ;
522525 sess -> template_job .iv_len_in_bytes = xform -> cipher .iv .length ;
523526 return 0 ;
527+ #if IMB_VERSION (1 , 5 , 0 ) <= IMB_VERSION_NUM
528+ case RTE_CRYPTO_CIPHER_SM4_CBC :
529+ sess -> template_job .cipher_mode = IMB_CIPHER_SM4_CBC ;
530+ is_sm4 = 1 ;
531+ break ;
532+ case RTE_CRYPTO_CIPHER_SM4_ECB :
533+ sess -> template_job .cipher_mode = IMB_CIPHER_SM4_ECB ;
534+ is_sm4 = 1 ;
535+ break ;
536+ #endif
537+ #if IMB_VERSION (1 , 5 , 0 ) < IMB_VERSION_NUM
538+ case RTE_CRYPTO_CIPHER_SM4_CTR :
539+ sess -> template_job .cipher_mode = IMB_CIPHER_SM4_CNTR ;
540+ is_sm4 = 1 ;
541+ break ;
542+ #endif
524543 default :
525544 IPSEC_MB_LOG (ERR , "Unsupported cipher mode parameter" );
526545 return - ENOTSUP ;
@@ -655,6 +674,15 @@ aesni_mb_set_session_cipher_parameters(const IMB_MGR *mb_mgr,
655674 & sess -> cipher .pKeySched_kasumi_cipher );
656675 sess -> template_job .enc_keys = & sess -> cipher .pKeySched_kasumi_cipher ;
657676 sess -> template_job .dec_keys = & sess -> cipher .pKeySched_kasumi_cipher ;
677+ #if IMB_VERSION (1 , 5 , 0 ) <= IMB_VERSION_NUM
678+ } else if (is_sm4 ) {
679+ sess -> template_job .key_len_in_bytes = IMB_KEY_128_BYTES ;
680+ IMB_SM4_KEYEXP (mb_mgr , xform -> cipher .key .data ,
681+ sess -> cipher .expanded_sm4_keys .encode ,
682+ sess -> cipher .expanded_sm4_keys .decode );
683+ sess -> template_job .enc_keys = sess -> cipher .expanded_sm4_keys .encode ;
684+ sess -> template_job .dec_keys = sess -> cipher .expanded_sm4_keys .decode ;
685+ #endif
658686 } else {
659687 if (xform -> cipher .key .length != 8 ) {
660688 IPSEC_MB_LOG (ERR , "Invalid cipher key length" );
0 commit comments