Использую cryptcp для генерации контейнера электронной подписи. У сертификата есть описание keyUsage. По умолчанию cryptcp добавляет туда keyEncryption и dataEncryption (Шифрование ключей, Шифрование данных).
Но мне необходимо добавить ещё digitalSignature и nonRepudation (Цифровая подпись, Неотрекаемость).
Для генерации используем команду:
cryptcp.x64.exe -creatrqst -provtype 80 -provname "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -ex -dn "CN=Иванов Иван,C=RU,O=ООО Компания,E=test@mail.ru,СНИЛС=11223344556,ИНН=123456789012,ОГРН=1234567890123" -hashAlg 1.2.643.7.1.1.2.2 -certusage "1.3.6.1.5.5.7.3.2" -both req-ru-12.req
Для того чтобы добавить keyUsage,
на форуме предлагается добавить расширение, флаг -ext, и передать туда файл asn1 в base64. Но на данный момент не могу сформировать такой файл.
Пробовал формировать такой файл:
asn1=SEQUENCE:exts
[exts]
keyUsage=SEQUENCE:usage
[usage]
digitalSignature=BOOL:TRUE
А затем
openssl asn1parse -genconf exts.in -out exts.out
и
cryptcp.x64.exe ... -ext exts.out
, но получаю ошибку Ошибка: Встречено неверное значение тега ASN1. [ErrorCode: 0x8009310b]
Кроме того, пробовал вытянуть блок с помощью dumpasn1 и кодировать в base64, но также безрезультатно:
SEQUENCE {
OID_EXTENSION_KEY_USAGE,
BOOLEAN TRUE,
OCTET STRING, encapsulates {
BIT STRING 1 unused bit
'1100'B
}
}
Сталкивался ли кто-то с подобным? Получалось ли решить? Как добавляли нужное назначение подписи? Благодарю за внимание к вопросу!