18.04.2006 13:29:28Solaris + Windows Ответов: 0
Сергей
Есть клиент-серверное приложение, используется КриптоПро 3. Сервер Sparc Solaris. В определенный момент на сервере формируется сессионный ключ, который затем шифруется и экспортируется, а затем расшифровывается клиентом. При работе Windows-Windows или Solaris-Solaris все в порядке. Но при работе Solaris-Windows возникает проблема.

Вот этот вызов завершается с ошибкой NTE_BAD_DATA:
CryptImportKey(hProv, RecivedKey, RecivedKeyLen, hExchKey, CRYPT_EXPORTABLE, &hSessionKey);

Блоб с сервера на клиент передается без изменений. При исследовании этой проблемы рассмотрел блобы с сервера на Win и на Solaris.

Solaris:
0x07974F48 01 20 00 00 00 00 66 1e 37 4a 51 fd 00 00 66 1e . ....f.7JQэ..f.
0x07974F58 13 05 0a 01 b9 b2 f3 60 d9 e0 93 e2 6b a2 d6 d4 .....Іу`Ща“вkўЦФ
0x07974F68 39 16 d3 7a 64 ad 13 b6 5f 59 06 6f a0 0a dc 78 9.Уzd­.¶_Y.o .Ьx
0x07974F78 88 06 6d 01 d2 b9 3c 49 34 a6 b2 13 30 09 06 07 €.m.Т.<I4¦І.0...
0x07974F88 2a 85 03 02 02 1f 01

Windows:
0x00806270 01 20 00 00 1e 66 00 00 fd 51 4a 37 1e 66 00 00 . ...f..эQJ7.f..
0x00806280 31 2d 3f cb c6 8e 99 c0 b3 66 77 f8 85 60 ca 81 1-?ЛЖЋ.Аіfwш…`КЃ
0x00806290 1b fe 5b cd 4c 1c 59 89 35 b4 5f 74 d2 a3 3a 17 .ю[НL.Y‰5ґ_tТЈ:.
0x008062A0 b2 2d 7b b4 b6 ae 9e 43 b2 be f2 a5 30 09 06 07 І-{ґ¶®ћCІѕтҐ0...
0x008062B0 2a 85 03 02 02 1f 01

Заметны одинаковые участки блобов в конце. Но вот в начале видно, что некоторые байты идут в обратном порядке, но вцелом являются одинаковыми 4-хбайтовыми последовательностями.

Собственно, думаю, что так не должно быть. Эта ошибка возникает в криптопровайдере? Удивляет, что изменен порядок только части байт. Как бороться?

С уважением, Сергей Ненашев.