C# Добавление метки времени к цифровой подписи CMS PKCS # 7 - PullRequest
0 голосов
/ 20 января 2020

Я являюсь разработчиком программного обеспечения и отвечаю за проект цифровой подписи текстовых файлов с помощью PCKS # 7.

Существует третье лицо, отвечающее за анализ подписанного файла, чтобы сообщить нам, правильно ли оно или нет.

Проблема, с которой я столкнулся, заключается в том, что они говорят, что информация подписавшего не содержит метки времени. Они заверили меня, что мне не нужно нанимать внешний доверенный сервер для метки времени, что метки времени сервера будет достаточно.

Я искал inte rnet и придумал следующий код, чтобы попытаться добавить отметка времени, но третья сторона, ответственная за проверку файлов, говорит, что проблема все еще возникает.

private byte[] Sign(byte[] content)
{
    CmsSigner cmsSigner = new CmsSigner(_cert);
    cmsSigner.UnsignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now));

    SignedCms signedCms = new SignedCms(new ContentInfo(content));
    signedCms.ComputeSignature(cmsSigner, true);

    return signedCms.Encode();
}

Это то, что я написал к цифровой подписи. Строка, добавленная для метки времени, будет второй:

    cmsSigner.UnsignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now));

У меня нет идей, и я не могу найти полезную документацию по этому вопросу.

Как я могу добавить метку времени к информации подписавшего ???

1 Ответ

0 голосов
/ 23 января 2020

Как и в комментарии @ barton js, проблема заключалась в том, что я добавлял время подписи в неподписанные атрибуты. Изменение кода для добавления времени подписи к подписанным атрибутам решило наши проблемы.

cmsSigner.SignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now));
...