Я недавно столкнулся с очень странной проблемой. Компиляция наших продуктов включает в себя подпись драйверов режима ядра и добавление контрсигнатуры. Это делается с помощью вызова signtool, включенного в DDK (теперь WDK):
"% DDKBASE% \ 6001,18000 \ Bin \ подписать самому \ signtool.exe"
знак / T
http://timestamp.globalsign.com/scripts/timstamp.dll
/ акр
"Путь к countercert \ MSCV-GlobalSign.cer"
/ s SPC / n "EldoS Corporation"% 1
Все работало нормально до недавнего времени, когда мы обнаружили, что контрсертификат просто не добавляется в подписанный драйвер. Signtool не сообщает об ошибках и молча опускает сертификат. Сама подпись и основная цепочка сертификатов применяются правильно, и это только контрсертификат, который отсутствует.
SignTool из более поздней версии WDK (версия 7600.16385.0) прекрасно работает с использованием той же командной строки.
Я попытался заново зарегистрировать capicom.dll, поставляя с соответствующим signtool (он находится в той же папке), но это не помогло.
Я не уверен, что мы можем использовать signtool из 7600.16385.0, потому что у меня есть ощущение, что это может нарушить совместимость, скажем, с Windows 2000.
Итак, вопрос в том, имеет ли кто-нибудь представление о том, что могло пойти не так?
Upd: Похоже, что signtool 7600 работает нормально (т.е. драйверы, подписанные с этой версией, работают нормально на XP и Windows 7), поэтому мы пока пойдем по этому пути и заменим signtool на наши собственные самодельные инструменты в будущем, чтобы избежать таких сюрпризов.