2015-05-19 11 views
1

У меня есть структуру ASN.1 (зашифрованный сеансовый ключ):Импорт шифруется ключ сеанса

SEQUENCE(2 elem) 
    SEQUENCE(2 elem) 
    OCTET STRING(32 byte) 5E70735F3698B4355B45037FA7CE0097115E45C6585994726642063F723AB49E 
    OCTET STRING(4 byte) 8C860884 
    [0](3 elem) 
    OBJECT IDENTIFIER1.2.643.2.2.31.1 
    [0](2 elem) 
     SEQUENCE(2 elem) 
     OBJECT IDENTIFIER1.2.643.2.2.19 
     SEQUENCE(2 elem) 
      OBJECT IDENTIFIER1.2.643.2.2.36.0 
      OBJECT IDENTIFIER1.2.643.2.2.30.1 
     BIT STRING(1 elem) 
     OCTET STRING(64 byte) 2DC3FDF69C913DCCB653268E512F5EDDE41A5DB3583CDF6068F248A2B0B8DE7BC9AA20E3CF63DF5F395521E0A0DD853E0AAF44FA493CD54CA8048D1D9C4185FB 
    OCTET STRING(8 byte) 76EEB46B1B1036EB 

Как расшифровать эту структуру с помощью функции CryptImportKey?

ответ

1

Эта структура использует российские протоколы ГОСТ. Я почти уверен, что они не поддерживаются CryptImportKey из коробки. Вероятно, вам нужно извлечь информацию, а затем импортировать ее с помощью структуры, поддерживаемой CryptImportKey.

Например, OID 1.2.643.2.2.19 shows {iso(1) member-body(2) ru(643) 2 cryptopro(2) gostR3410-2001(19)}.

Кажется, вы можете использовать какой-то плагин, возможно, вы можете получить это от CryptoPro. Я не уверен, хотя, мой русский не так хорош (и мой друг Аня не в крипто :)).

+0

Я использую Crypto. Пример моего кода http://pastebin.com/WHXhbXHx. Ошибка возникает в строке 194 (Ошибка 0x80090005). Я думаю, что проблема в структуре SIMPLEBLOB. – shushlyakov

+1

И почему-то вы не думали, что информация должна быть включена в вопрос? –

+0

@shushlyakov Вы можете использовать OllyDbg, чтобы проверить свою гипотезу: просто установите точку останова на CryptImportKey и, как только она попадет, внимательно посмотрите; это будет не быстро, но в итоге вы столкнетесь с инструкцией, которая порождает ошибку. Чтобы сузить начальный поиск, вы также можете использовать * trace * mode вместо * step-in */* step-over *, условие настройки для EAX равно 0x80090005. –