Преобразование PFX в SNK с использованием SN.EXE приводит к неверному файлу - PullRequest
0 голосов
/ 28 мая 2019

У меня есть проблемы с сертификатом подписи кода Sectigo в формате pfx. Я хочу создать файл snk для отложенной подписи сборок .NET. Я следовал за ответами на этот и этот вопрос, но не могу получить рабочий snk файл.

В частности, я использую sn.exe, чтобы произвести это так:

sn.exe -p codesign.pfx codesign.snk

, который, кажется, работает нормально:

Microsoft (R) .NET Framework Strong Name Utility  Version 4.0.30319.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Enter the password for the PKCS#12 key file:
Public key written to codesign.snk

Однако при выгрузке содержимого созданного файла с помощью sn.exe -tp codesign.snk я получаю следующую ошибку:

Microsoft (R) .NET Framework Strong Name Utility  Version 4.0.30319.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Failed to convert key to token -- Invalid assembly public key.

Та же ошибка возникает при попытке фактически отложить подпись сборки во время сборки.

Как правильно создать файл snk? Я думаю, что сертификат просто не обработан правильно sn.exe. Мой предыдущий snk, полученный из сертификата для подписи кода, выданного GoDaddy давным-давно, имел 544 байта, в то время как тот, который был создан сейчас, имеет только 288 байтов.

Обновление 1: Разница в размере связана с различными размерами открытого ключа. Старый сертификат имел 4096-битный ключ, а новый - (только!) - 2048-битный ключ. Заголовки файлов отличаются 4 байтами. Использование sn.exe -tp для старой работы, но не для новой.

Обновление 2: Кажется, что проблема связана либо с размером ключа или с флагами в 32-байтовом заголовке файла snk. Я взял 2048-битный ключ, дополнил его нулями до 4096-битного, добавил 32-байтовый заголовок из старого рабочего 544-байтового snk файла и создал новый 544-байтовый snk с 2048-битным ключом , Этот новый snk «работает» в терминах, которые sn.exe не будут жаловаться немедленно, но попытки завершить подпись сборки с задержкой подписи все равно будут неудачными.

...