Как воспроизвести команду signtool.exe /p7 /p7co "OID" в C# /C ++?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как воспроизвести команду signtool.exe /p7 /p7co "OID" в C# /C ++?

Сообщение Anonymous »

Я хочу повторить следующую signtool.exe Команда:

Код: Выделить всё

SignTool.exe sign /v /n "certCN" /p7 . /p7co "OID" /fd certHash
< /code>
Это моя попытка в .net < /p>
private static void SignFileBlob(string filePath,
X509Certificate2 signingCertificate,
string? contentOid = null)
{
byte[] fileContent = File.ReadAllBytes(filePath);
string contentTypeOid = contentOid ?? "1.2.840.113549.1.7.1";
ContentInfo contentInfo = new(new Oid(contentTypeOid), fileContent);
SignedCms signedCms = new(contentInfo, false);
CmsSigner signer = new(signingCertificate);
string hashOid = GetHashOidFromCertSignatureAlgorithm(signingCertificate);
signer.DigestAlgorithm = new Oid(hashOid);
signer.IncludeOption = X509IncludeOption.EndCertOnly;
signedCms.ComputeSignature(signer, false);
byte[] signedBytes = signedCms.Encode();
File.Delete(filePath);
File.WriteAllBytes(filePath, signedBytes);
}
К сожалению, он использует CMS V3, в то время как эта команда signtool.exe использует CMS V1. Мне нужна 100% идентичная подпись, повторяемая в C#, C ++ или Rust, любой из этих языков в порядке, я просто не хочу использовать какую -либо стороннюю библиотеку, такую ​​как Bouncy Castle, OpenSSL и т. Д. Моя единственная проблема с этим методом заключается в том, что она не использует CMS V1, и я не знаю, как заставить его использовать его. Я не знаю о каких -либо других различиях между моим кодом .NET по сравнению с методами signtool.exe использует. У меня тоже есть файл PFX. Сертификат был сгенерирован через CNG, вот точный код.


Подробнее здесь: https://stackoverflow.com/questions/796 ... oid-in-c-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»