Код подписи исполняемого файла дважды

Короткий вопрос

Как я могу получить информацию о нескольких сертификатах подписи кода из исполняемого файла (.EXE / .DLL)?

Ожидаемый ответ

В окончательно принятом ответе должен быть предложен способ получения всех сертификатов на C #. Концепция / псевдокод в порядке, я не ожидаю, что вы напишите полный исходный код.

Для промежуточного ответа, предлагающего инструмент, см.мой вопрос по Security.StackExchange.

Длинный вопрос

Я исследую, можем ли мы использовать несколько сертификатов подписи кода для плагина (.DLL), чтобы проверить, был ли он официально протестирован или нет. Это процедура:

DLL плагина подписывается поставщиком так же, как и любое другое приложениеплагин DLL входит в тестовую лабораторию и проходит набор тестовDLL плагина снова подписывается тестовой лабораторией, так что приложение, использующее DLL, может выяснить, использует ли оно протестированный плагин или нет

Кажется возможным подписать DLL во второй раз, используя

 signtool /v /f <pfx> /as <dll>

Признаки того, что это могло сработать:

файл увеличивается в размереинструмент печатает сообщение об успехе

Однако есть некоторые проблемы с отображением второй подписи:

хотя в проводнике Windows указано «Список подписей», он показывает только один сертификатC #X509Certificate.CreateFromSignedFile()&nbsp;метод может вернуть только один сертификат

На данный момент я на самом деле пробую свой код в файле EXE, а не в файле DLL, но это не должно иметь значения. EXE уже подписан доверенным корневым сертификатом и отметкой времени. Вторая подпись создается смой собственный сертификат, следуя этим шагам&nbsp;в настоящее время без отметки времени.

То, что я сделал, прежде чем задать вопрос:

поиск в Stackoverflow для существующих ответовпоиск инструментов в Google

Единственный связанный с этим вопрос, который я нашел,Как правильно дважды подписать с отметкой времени&nbsp;но у него нет ответа.