@@ -567,6 +567,39 @@ list(APPEND VALID_MODULE_TYPES kernel kerneldll kernelmodedriver wdmdriver nativ
567567list (APPEND KERNEL_MODULE_TYPES kernel kerneldll kernelmodedriver wdmdriver)
568568list (APPEND NATIVE_MODULE_TYPES kernel kerneldll kernelmodedriver wdmdriver nativecui nativedll)
569569
570+ # Signs a driver if it is kernelmodedriver or wdmdriver if the cert exists
571+ function (sign_driver_if_needed TARGET )
572+ get_target_property (_type ${TARGET} REACTOS_MODULE_TYPE)
573+ if (NOT _type)
574+ message (STATUS "sign_driver_if_needed: No REACTOS_MODULE_TYPE for ${TARGET} " )
575+ return ()
576+ endif ()
577+ if (NOT (_type STREQUAL "kernelmodedriver" OR _type STREQUAL "wdmdriver" ))
578+ return ()
579+ endif ()
580+ if (NOT MSVC )
581+ return ()
582+ endif ()
583+ if (NOT EXISTS "C:/ReactOSCerts/ReactOSDevCert.cer" )
584+ return ()
585+ endif ()
586+ # Get output file name
587+ get_target_property (_output_name ${TARGET} OUTPUT_NAME )
588+ if (NOT _output_name)
589+ set (_output_name ${TARGET} )
590+ endif ()
591+ set (_driver_path "${CMAKE_CURRENT_BINARY_DIR} /${_output_name} .sys" )
592+ set (_driver_path "$<TARGET_FILE:${TARGET} >" )
593+ add_custom_command (TARGET ${TARGET} POST_BUILD
594+ COMMAND SignTool sign /v /fd sha1 /s PrivateCertStore /n reactos.org /t http://timestamp.digicert.com "${_driver_path} "
595+ COMMENT "Signing driver: ${_driver_path} " )
596+ endfunction ()
597+
598+ # Example usage after driver target creation:
599+ # add_library(my_driver ...)
600+ # set_module_type(my_driver kernelmodedriver)
601+ # sign_driver_if_needed(my_driver)
602+
570603function (set_module_type MODULE TYPE )
571604 cmake_parse_arguments (__module "UNICODE" "IMAGEBASE" "ENTRYPOINT" ${ARGN} )
572605
@@ -657,6 +690,7 @@ function(set_module_type MODULE TYPE)
657690 add_dependencies (${MODULE} bugcodes xdk)
658691 if ((${TYPE} STREQUAL kernelmodedriver) OR (${TYPE} STREQUAL wdmdriver))
659692 set_target_properties (${MODULE} PROPERTIES SUFFIX ".sys" )
693+ sign_driver_if_needed(${MODULE} )
660694 endif ()
661695 endif ()
662696
0 commit comments