Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline alekseys  
#1 Оставлено : 8 декабря 2010 г. 17:41:38(UTC)
alekseys

Статус: Новичок

Группы: Участники
Зарегистрирован: 02.12.2010(UTC)
Сообщений: 4

Хочу собрать PKCS#7 EnvelopedData, не пользуясь для этого высокоуровневыми функциями CAPI 2.0.
При этом у меня возникли вопросы по правильности заполнения следующих элементов ASN.1 структуры (поскольку остальные данные у меня не вызывают сомнений):

GostR3410-KeyTransport ::= SEQUENCE {
sessionEncryptedKey Gost28147-89-EncryptedKey,
transportParameters
[0] IMPLICIT GostR3410-TransportParameters OPTIONAL
}

Gost28147-89-EncryptedKey ::= SEQUENCE {
encryptedKey Gost28147-89-Key,
macKey Gost28147-89-MAC
}

GostR3410-94-TransportParameters ::= SEQUENCE {
encryptionParamSet OBJECT IDENTIFIER,
ephemeralPublicKey SubjectPublicKeyInfo OPTIONAL,
ukm OCTET STRING
}

EncryptedContentInfo ::= SEQUENCE {
contentType ContentType,
contentEncryptionAlgorithm GOST28147-89-AlgorithmIdentifier,
encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL
}

Поля выше приведенных структур заполняю следующим образом:

Для Gost28147-89-EncryptedKey
encryptedKey = CRYPT_SIMPLEBLOB.bEncryptedKey;
macKey = CRYPT_SIMPLEBLOB.bMacKey;

Для GostR3410-94-TransportParameters
encryptionParamSet = “1.2.643.2.2.31.1”; // соответствует CRYPT_SIMPLEBLOB.encryptionParamSet
SubjectPublicKeyInfo.AlgorithmIdentifier.algorithmOID = “1.2.643.2.2.19”;
SubjectPublicKeyInfo.AlgorithmIdentifier.Parameters[1] = “1.2.643.2.2.36.0”;
SubjectPublicKeyInfo.AlgorithmIdentifier.Parameters[2] = “1.2.643.2.2.30.1”;
SubjectPublicKeyInfo.PublicKey = [массив байт эфемерного ключа]; // 64 байт
ukm = CRYPT_SIMPLEBLOB.bSV;

Для EncryptedContentInfo
EncryptedContentInfo.contentType=”1.2.840.113549.1.7.1”;
EncryptedContentInfo.GOST28147-89-AlgorithmIdentifier.identifier=”1.2.643.2.2.21”;
EncryptedContentInfo.GOST28147-89-AlgorithmIdentifier.Parameters.iv=[ вектор инициализации, массив байт, который возвращает функция
CryptGetKeyParam(hSessionKey,KP_IV,pbIV,&cbIV,0) ]
EncryptedContentInfo.GOST28147-89-AlgorithmIdentifier.Parameters.oid=”1.2.643.2.2.31.1”;
EncryptedContentInfo = [зашифрованный контент, CryptEncrypt]

После формирования файла со структурой PKCS#7, я его пробую расшифровать функцией CryptDecryptMessage, которая возвращает мне ошибку ERROR_INVALID_PARAMETER.
Если же для расшифрования я использую функцию CryptDecrypt, то сообщение расшифровывается нормально. Подозрение падает на следующие данные: encryptedKey, macKey, ukm, iv. Пробовал менять последовательность байт, но результат все равно отрицательный. Может ли кто-нибудь разъяснить, как правильно сохранять данные для указанных полей: encryptedKey, macKey, ukm, iv?
Спасибо.


Вложение(я):
example.p7 (1kb) загружен 25 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.