logo
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline arte-tkolomiets  
#1 Оставлено : 3 июля 2018 г. 15:52:26(UTC)
arte-tkolomiets

Статус: Участник

Группы: Участники
Зарегистрирован: 27.09.2016(UTC)
Сообщений: 15
Российская Федерация
Откуда: Краснодар

Модераторы, перенес тему в ветку 3.9.
Но на эту тему кинул пару ссылок в личке, если можно,не удаляйте сразу.

Получена ASN-структура следующего вида
UserPostedImage

Далее пробую импортировать сессионный ключ следующим образом:

Код:

 Win32Check(CryptAcquireContext(@hProv, 'KeyContainer', '', 75, CRYPT_SILENT));

  Win32Check(CryptGetUserKey(hProv, AT_KEYEXCHANGE, @FPrivateKey));

  // сборка PublicKey BLOB из статической части и открытого ключа
  abPublicKeyBlob :=
    [
     $06,       // bType = PUBLICKEYBLOB
     $20,       // bVersion = 0x20
     $00, $00,
     $23, $2E, $00, $00, // KeyAlg = ALG_SID_GR3410EL
     $4D, $41, $47, $31, //Magic = GR3410_1_MAGIC
     $00, $02, $00, $00, // BitLen = 512
     // bASN1GostR3410_94_PublicKeyParameters
     $30, $12,
     $06, $07 ,
     $2A, $85, $03, $02, $02, $24, $00,
     $06, $07,
     $2A, $85, $03, $02, $02, $1E, $01,
     // APublicKey;
     $13, $1D, $94, $D3, $35, $01, $D3, $15,
     $18, $10, $63, $7F, $D1, $CD, $AE, $8E,
     $91, $A6, $DF, $60, $29, $64, $27, $9B,
     $A1, $2E, $8D, $33, $61, $DF, $68, $AE,
     $32, $B6, $87, $64, $2C, $8C, $97, $34,
     $85, $94, $15, $5F, $7C, $D2, $3A, $84,
     $21, $D4, $04, $3C, $99, $7A, $CF, $1A,
     $99, $3A, $64, $21, $31, $7E, $F9, $77
    ];

  // получение ключа согласования импортом открытого ключа отправителя
  // на закрытом ключе
  Win32Check(CryptImportKey(hProv, @abPublicKeyBlob[0], Length(abPublicKeyBlob), FPrivateKey, 0, @FAgreeKey));

  // установление PRO_EXPORT алгоритма ключа согласования
  algProExport := CALG_PRO_EXPORT;
  Win32Check(CryptSetKeyParam(FAgreeKey, KP_ALGID, @algProExport, 0));

  // сборка SessionKey BLOB из статической части и параметров сессионного ключа
  abSessionKeyBlob :=
  [
   $01, // bType = SIMPLEBLOB
   $20, // bVersion = 0x20
   $00,$00 ,
   $1E,$66 ,$00 ,$00, // KeyAlg = CALG_G28147
   $FD,$51 ,$4A ,$37, // Magic = G28147_MAGIC
   $1E,$66 ,$00 ,$00, // EncryptKeyAlgId = CALG_G28147
   //ASessionSV
   $CE, $F5, $56, $67, $BF, $BB, $15, $D2,
   //ASessionKey ,
   $31, $FD, $E9, $C5, $D3, $9A, $27, $46,
   $FF, $EB, $87, $9C, $B4, $7D, $68, $D4,
   $14, $77, $E6, $78, $DE, $D6, $E5, $FD,
   $FF, $08, $9A, $86, $82, $72, $E7, $2D,
   //ASessionMAC ,
   $9A, $5B, $67, $B7,
   // ASN.1 Sequence + OID Header
   $30 ,$09 ,$06 ,$07,
   // OID_GOST_R28147_89_CryptoPro_A_ParamSet 1.2.643.2.2.31.1
   $2A ,$85 ,$03 ,$02 ,$02 ,$1F ,$01
  ];

  // получение сессионного ключа импортом зашифрованного сессионного ключа
  // на ключе согласования
  Win32Check(CryptImportKey(hProv, @abSessionKeyBlob[0], Length(FSessionKeyBlob), FAgreeKey, CRYPT_EXPORTABLE, @FSessionKey));


На последнем вызове возникает ошибка "Плохие данные".
В чем может быть проблема?

Отредактировано пользователем 3 июля 2018 г. 16:06:52(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#2 Оставлено : 3 июля 2018 г. 16:06:37(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 5,249
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 11 раз
Поблагодарили: 475 раз в 434 постах
На первый взгляд, всё нормально. А точно это верный ключ отправителя и ключ экспортирован в адрес вашего контейнера? Ошибка говорит о том, что не сошлась имитовставка.

Знания в базе знаний, поддержка в техподдержке
Offline arte-tkolomiets  
#3 Оставлено : 3 июля 2018 г. 16:21:40(UTC)
arte-tkolomiets

Статус: Участник

Группы: Участники
Зарегистрирован: 27.09.2016(UTC)
Сообщений: 15
Российская Федерация
Откуда: Краснодар

Автор: Максим Коллегин Перейти к цитате
А точно это верный ключ отправителя и ключ экспортирован в адрес вашего контейнера? Ошибка говорит о том, что не сошлась имитовставка.

У меня получается так, что я сохраняю сообщение в файл, программа отправки ждет в точке останова -
потом через SOAPUI его отправляю - получаю ответ, вставлю в файл base64 ASN, - вывжу программу из останова, читаю из файла ASN и парсю его.
Выходит, что MAC не совпадает, это - неверно?

Offline arte-tkolomiets  
#4 Оставлено : 3 июля 2018 г. 16:31:02(UTC)
arte-tkolomiets

Статус: Участник

Группы: Участники
Зарегистрирован: 27.09.2016(UTC)
Сообщений: 15
Российская Федерация
Откуда: Краснодар

Не получается загрузить файлы аттачем, кидаю текстом:

Запрос


Ответ

Offline Илья Харченко  
#5 Оставлено : 20 октября 2018 г. 5:58:42(UTC)
Илья Харченко

Статус: Сотрудник

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

Поблагодарили: 1 раз в 1 постах
Добрый день, вопрос ещё актуален?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.