CAdES подпись с помощью низкоуровневых сообщений Win32

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

Подпись должна быть в надлежащем формате PKCS # 7 вместе с четырьмя имеющимися подписанными атрибутами.

Первые два, type и hash, ставятся автоматически, кроме крипто-библиотеки.

Третий — это время сообщения. Я смог поставить это с помощью CryptEncodeObject и szOID_RSA_signingTime
«1.2.840.113549.1.9.5».

Четвертый сертификат — это подписывающий сертификат, OID которого не поддерживается крипто API, 1.2.840.113549.1.9.16.2.47.

Чтобы иметь возможность добавить это вручную, я должен знать, как CryptEncodeObject работает внутри, и какая структура для кодирования:

SigningCertificateV2 ::=  SEQUENCE {
certs        SEQUENCE OF ESSCertIDv2,
policies     SEQUENCE OF PolicyInformation OPTIONAL
}ESSCertIDv2 ::=  SEQUENCE {
hashAlgorithm           AlgorithmIdentifier
DEFAULT {algorithm id-sha256},
certHash                 Hash,
issuerSerial             IssuerSerial OPTIONAL
}

Hash ::= OCTET STRING

IssuerSerial ::= SEQUENCE {
issuer                   GeneralNames,
serialNumber             CertificateSerialNumber
}

И больше структур, которые должны быть включены до его завершения.

я мог попробуйте использовать компилятор ASN.1 для создания всего этого, а затем кодер DER для его кодирования, но есть ли более простой способ?

1

Решение

Я сделал это, вы должны использовать компилятор ASN.1, а затем кодировать подписанные атрибуты с CMS.

https://www.codeproject.com/Articles/1256991/AdES-An-implementation-of-CAdES-for-Windows-in-Cpl

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector