Можно ли подписать проект Excel VBA, включая отметку времени? - PullRequest
0 голосов
/ 28 июня 2019

Я подписываю код VBA в файлах Excel автоматически с помощью цифровой подписи, что хорошо работает при использовании X509Certificate2 и EPPlus. Теперь я хочу включить метку времени, есть идеи, где я могу установить это?

Если я подпишу код вручную в VBA Editor - Инструменты - Цифровая подпись, код будет подписан отметкой времени (и контрсигнатурой). Таким образом, он остается в силе, когда срок действия сертификата подписывающего лица истек. Но при подписании с EPPlus это не так. В ExcelVBASignature.cs это выглядит так, как если бы эта функция была еще подготовлена ​​..

Вот как я это делаю до сих пор:

using System;
using System.IO;
using OfficeOpenXml;
using System.Security.Cryptography.X509Certificates;
...
X509Certificate2 cert = new X509Certificate2 ( PFXfile, PFXpass, X509KeyStorageFlags.PersistKeySet );
using ( ExcelPackage xl = new ExcelPackage ( new System.IO.FileInfo ( Excelfile ) ) )
{
    using ( ExcelWorkbook wb = xl.Workbook )
    {
        wb.VbaProject.Signature.Certificate = cert;
        xl.SaveAs ( new System.IO.FileInfo ( TargetPath ) );
    }
}

1 Ответ

1 голос
/ 15 июля 2019

Мой запрос может быть решен с помощью Microsoft SignTool вместо EPPlus:

Я использую Microsoft SignTool (из Microsoft Windows 10 SDK ) с MicrosoftПакеты Office Subject Interface для цифровой подписи проектов VBA .

Подробная информация:

  1. Загрузите и установите SDK .
    Папка, содержащая signtool.exe - это, например, C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x86
    Обязательно используйте папку x86.
  2. Загрузка ираспакуйте SIP-пакет .
    Прочитайте и следуйте прилагаемому файлу readme.txt
  3. Выберите предпочитаемые параметры и параметры signtool.exe

Пример. С помощью следующей команды VBA-код в файле Excel подписывается контрподписью с использованием файла сертификата, включая закрытый ключ.Сама книга Excel не будет подписана.

signtool.exe sign /f "CertificateFile.pfx" /p "P@ssw0rd" /fd "SHA256" /tr "http://rfc3161timestamp.globalsign.com/advanced" /td "SHA256" "D:\ExcelFileWithVBA.xlsm"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...