@@ -544,23 +544,50 @@ static int linuxkm_lkcapi_register(void)
544544#endif /* LINUXKM_LKCAPI_REGISTER_ECDH */
545545
546546#ifdef LINUXKM_LKCAPI_REGISTER_RSA
547- #ifdef WOLFSSL_SHA224
548- REGISTER_ALG (pkcs1_sha224 , akcipher , linuxkm_test_pkcs1_sha224 );
549- #endif /* WOLFSSL_SHA224 */
550- #ifndef NO_SHA256
551- REGISTER_ALG (pkcs1_sha256 , akcipher , linuxkm_test_pkcs1_sha256 );
552- #endif /* !NO_SHA256 */
553- #ifdef WOLFSSL_SHA384
554- REGISTER_ALG (pkcs1_sha384 , akcipher , linuxkm_test_pkcs1_sha384 );
555- #endif /* WOLFSSL_SHA384 */
556- #ifdef WOLFSSL_SHA512
557- REGISTER_ALG (pkcs1_sha512 , akcipher , linuxkm_test_pkcs1_sha512 );
558- #endif /* WOLFSSL_SHA512 */
559- #ifdef WOLFSSL_SHA3
560- REGISTER_ALG (pkcs1_sha3_256 , akcipher , linuxkm_test_pkcs1_sha3_256 );
561- REGISTER_ALG (pkcs1_sha3_384 , akcipher , linuxkm_test_pkcs1_sha3_384 );
562- REGISTER_ALG (pkcs1_sha3_512 , akcipher , linuxkm_test_pkcs1_sha3_512 );
563- #endif /* WOLFSSL_SHA3 */
547+ #if !defined(LINUXKM_AKCIPHER_NO_SIGNVERIFY )
548+ /* linux kernel < 6.13 consists of:
549+ * akcipher: "pkcs1pad(<rsa>, <hash>)" */
550+ #ifdef WOLFSSL_SHA224
551+ REGISTER_ALG (pkcs1_sha224 , akcipher , linuxkm_test_pkcs1_sha224 );
552+ #endif /* WOLFSSL_SHA224 */
553+ #ifndef NO_SHA256
554+ REGISTER_ALG (pkcs1_sha256 , akcipher , linuxkm_test_pkcs1_sha256 );
555+ #endif /* !NO_SHA256 */
556+ #ifdef WOLFSSL_SHA384
557+ REGISTER_ALG (pkcs1_sha384 , akcipher , linuxkm_test_pkcs1_sha384 );
558+ #endif /* WOLFSSL_SHA384 */
559+ #ifdef WOLFSSL_SHA512
560+ REGISTER_ALG (pkcs1_sha512 , akcipher , linuxkm_test_pkcs1_sha512 );
561+ #endif /* WOLFSSL_SHA512 */
562+ #ifdef WOLFSSL_SHA3
563+ REGISTER_ALG (pkcs1_sha3_256 , akcipher , linuxkm_test_pkcs1_sha3_256 );
564+ REGISTER_ALG (pkcs1_sha3_384 , akcipher , linuxkm_test_pkcs1_sha3_384 );
565+ REGISTER_ALG (pkcs1_sha3_512 , akcipher , linuxkm_test_pkcs1_sha3_512 );
566+ #endif /* WOLFSSL_SHA3 */
567+ #else
568+ /* linux kernel >= 6.13 consists of:
569+ * akcipher: "pkcs1pad(<rsa>)"
570+ * sig: "pkcs1(<rsa>, <hash>)" */
571+ #ifdef WOLFSSL_SHA224
572+ REGISTER_ALG (pkcs1_sha224 , sig , linuxkm_test_pkcs1_sha224 );
573+ #endif /* WOLFSSL_SHA224 */
574+ #ifndef NO_SHA256
575+ REGISTER_ALG (pkcs1_sha256 , sig , linuxkm_test_pkcs1_sha256 );
576+ #endif /* !NO_SHA256 */
577+ #ifdef WOLFSSL_SHA384
578+ REGISTER_ALG (pkcs1_sha384 , sig , linuxkm_test_pkcs1_sha384 );
579+ #endif /* WOLFSSL_SHA384 */
580+ #ifdef WOLFSSL_SHA512
581+ REGISTER_ALG (pkcs1_sha512 , sig , linuxkm_test_pkcs1_sha512 );
582+ #endif /* WOLFSSL_SHA512 */
583+ #ifdef WOLFSSL_SHA3
584+ REGISTER_ALG (pkcs1_sha3_256 , sig , linuxkm_test_pkcs1_sha3_256 );
585+ REGISTER_ALG (pkcs1_sha3_384 , sig , linuxkm_test_pkcs1_sha3_384 );
586+ REGISTER_ALG (pkcs1_sha3_512 , sig , linuxkm_test_pkcs1_sha3_512 );
587+ #endif /* WOLFSSL_SHA3 */
588+
589+ REGISTER_ALG (pkcs1pad , akcipher , linuxkm_test_pkcs1pad );
590+ #endif /* !LINUXKM_AKCIPHER_NO_SIGNVERIFY */
564591
565592 #if defined(LINUXKM_DIRECT_RSA )
566593 /* Note, direct RSA must be registered after all PKCS1 algs have been
@@ -790,26 +817,52 @@ static int linuxkm_lkcapi_unregister(void)
790817 #if defined(LINUXKM_DIRECT_RSA )
791818 UNREGISTER_ALG (direct_rsa , akcipher );
792819 #endif /* LINUXKM_DIRECT_RSA */
793- #ifdef WOLFSSL_SHA224
794- UNREGISTER_ALG (pkcs1_sha224 , akcipher );
795- #endif /* WOLFSSL_SHA224 */
796- #ifndef NO_SHA256
797- UNREGISTER_ALG (pkcs1_sha256 , akcipher );
798- #endif /* !NO_SHA256 */
799- #ifdef WOLFSSL_SHA384
800- UNREGISTER_ALG (pkcs1_sha384 , akcipher );
801- #endif /* WOLFSSL_SHA384 */
802- #ifdef WOLFSSL_SHA384
803- UNREGISTER_ALG (pkcs1_sha384 , akcipher );
804- #endif /* WOLFSSL_SHA384 */
805- #ifdef WOLFSSL_SHA512
806- UNREGISTER_ALG (pkcs1_sha512 , akcipher );
807- #endif /* WOLFSSL_SHA512 */
808- #ifdef WOLFSSL_SHA3
809- UNREGISTER_ALG (pkcs1_sha3_256 , akcipher );
810- UNREGISTER_ALG (pkcs1_sha3_384 , akcipher );
811- UNREGISTER_ALG (pkcs1_sha3_512 , akcipher );
812- #endif /* WOLFSSL_SHA3 */
820+
821+ #if !defined(LINUXKM_AKCIPHER_NO_SIGNVERIFY )
822+ #ifdef WOLFSSL_SHA224
823+ UNREGISTER_ALG (pkcs1_sha224 , akcipher );
824+ #endif /* WOLFSSL_SHA224 */
825+ #ifndef NO_SHA256
826+ UNREGISTER_ALG (pkcs1_sha256 , akcipher );
827+ #endif /* !NO_SHA256 */
828+ #ifdef WOLFSSL_SHA384
829+ UNREGISTER_ALG (pkcs1_sha384 , akcipher );
830+ #endif /* WOLFSSL_SHA384 */
831+ #ifdef WOLFSSL_SHA384
832+ UNREGISTER_ALG (pkcs1_sha384 , akcipher );
833+ #endif /* WOLFSSL_SHA384 */
834+ #ifdef WOLFSSL_SHA512
835+ UNREGISTER_ALG (pkcs1_sha512 , akcipher );
836+ #endif /* WOLFSSL_SHA512 */
837+ #ifdef WOLFSSL_SHA3
838+ UNREGISTER_ALG (pkcs1_sha3_256 , akcipher );
839+ UNREGISTER_ALG (pkcs1_sha3_384 , akcipher );
840+ UNREGISTER_ALG (pkcs1_sha3_512 , akcipher );
841+ #endif /* WOLFSSL_SHA3 */
842+ #else
843+ #ifdef WOLFSSL_SHA224
844+ UNREGISTER_ALG (pkcs1_sha224 , sig );
845+ #endif /* WOLFSSL_SHA224 */
846+ #ifndef NO_SHA256
847+ UNREGISTER_ALG (pkcs1_sha256 , sig );
848+ #endif /* !NO_SHA256 */
849+ #ifdef WOLFSSL_SHA384
850+ UNREGISTER_ALG (pkcs1_sha384 , sig );
851+ #endif /* WOLFSSL_SHA384 */
852+ #ifdef WOLFSSL_SHA384
853+ UNREGISTER_ALG (pkcs1_sha384 , sig );
854+ #endif /* WOLFSSL_SHA384 */
855+ #ifdef WOLFSSL_SHA512
856+ UNREGISTER_ALG (pkcs1_sha512 , sig );
857+ #endif /* WOLFSSL_SHA512 */
858+ #ifdef WOLFSSL_SHA3
859+ UNREGISTER_ALG (pkcs1_sha3_256 , sig );
860+ UNREGISTER_ALG (pkcs1_sha3_384 , sig );
861+ UNREGISTER_ALG (pkcs1_sha3_512 , sig );
862+ #endif /* WOLFSSL_SHA3 */
863+
864+ UNREGISTER_ALG (pkcs1pad , akcipher );
865+ #endif /* !LINUXKM_AKCIPHER_NO_SIGNVERIFY */
813866#endif /* LINUXKM_LKCAPI_REGISTER_RSA */
814867
815868#ifdef LINUXKM_LKCAPI_REGISTER_DH
0 commit comments