Поскольку они генерируются «на лету», решение на основе CI не подходит.
Я изучаю, как сделать это с помощью кода, поскольку я собираюсь использовать функцию Azure для подписи этих файлов, но не могу понять, как использовать SDK, как указано в разделе Использование других интеграций подписи с доверенной подписью.
Изменить 1: Signtool.exe предназначен только для Windows, а Jsign еще не поддерживает доверенную подпись. Думаю, я мог бы использовать Signtool.exe или Jsign, но они должны быть предварительно установлены, и я не знаю, как это сделать для функции Azure.
Изменить 2: ES512 — это алгоритм подписи, который принимает дайджест/хеш SHA512.
Изменить 3: я обнаружил, что RS512 работает, а моя предыдущая попытка с ES512 - нет.
Обновленный код:
Код: Выделить всё
var endpoint = new Uri("https://weu.codesigning.azure.net/");
const string codeSigningAccountName = "...";
const string certificateProfileName = "...";
var client = new CertificateProfileClient(new InteractiveBrowserCredential(), endpoint);
await using var stream = File.OpenRead("...");
var digest = await SHA512.HashDataAsync(stream);
var signRequest = new SignRequest(SignatureAlgorithm.RS512, digest);
var signOperation = await client.StartSignAsync(codeSigningAccountName, certificateProfileName, signRequest); // Fails here, obviously
var response = await signOperation.WaitForCompletionAsync();
Как я могу использовать их для подписи PowerShell в код на устройстве, отличном от Windows?
Предполагается, что SDK имеет открытый исходный код, но я не могу найти ни исходный код, ни документацию.
Ссылки:
- https://www.nuget.org/packages/Azure.CodeSigning.Sdk
- https://learn.microsoft.com/en-us/azure ... ed-signing
https://learn.microsoft.com/en-us/azure ... tegrations
Подробнее здесь: https://stackoverflow.com/questions/791 ... -powershel
Мобильная версия