07.11.2007 20:28:54Алгоритмы хеширования Ответов: 4
Максим
Добрый день!
Не могли бы Вы подсказать, в Крипто ПРО реализованы алгоритмы хеширования CALG_TLS1PRF и CALG_TLS1_MASTER_HASH. У меня при в первом случае на попытке хеширования данных появляется ошибка NTE_BAD_ALGID, во втором случае - при создании объекта функции хеширования.
 
Ответы:
08.11.2007 2:07:31maxdm
Возникает первый вопрос - а зачем Вам эти алгоритмы? Указанные алгоритмы используются для реализации TLS и не являются алгоритмами хэширования в чистом виде.
08.11.2007 10:15:20Максим
Необходимо реализовать интерфейс, который бы поддерживал различные крипто провайдеры, поэтому дана задача реализовать максимум из возможностей Крипто Про.
09.11.2007 15:50:29maxdm
Примерный порядок использования:
1.
UniGenKey (hProv, CALG_TLS1_MASTER, CRYPT_EXPORTABLE, &hMasterSecret));
UniCreateHash (hProv, CALG_TLS1PRF, hMasterSecret, 0, &hFinishHash);
UniSetHashParam (hProv, hFinishHash, HP_TLS1PRF_LABEL, (PBYTE)&Data1, 0);
UniSetHashParam (hProv, hFinishHash, HP_TLS1PRF_SEED, (PBYTE)&Data2, 0);
UniGetHashParam (hProv, hFinishHash, HP_HASHVAL, md, &count, 0);
2.
CPGenRandom(hContainer,32,X_Buf);
CPGenRandom(hContainer,32,Y_Buf);
CPGenRandom(hContainer,8,InitVector);
CPGenKey(hContainer,CALG_TLS1_MASTER,CRYPT_EXPORTABLE ,&hMasterKey);
CPSetKeyParam(hContainer,hMasterKey,KP_CLIENT_RANDOM,X_Buf,0));
CPSetKeyParam(hContainer,hMasterKey,KP_SERVER_RANDOM,Y_Buf,0));
CPSetKeyParam (hContainer,hMasterKey, KP_PREHASH, NULL, 0));
CPCreateHash(hContainer,CALG_TLS1_MASTER_HASH,hMasterKey,0,&hMasterHash);
fWrite=1; Server=0;
Flags = (Server && !fWrite) || (!Server && fWrite) ? 0 : CRYPT_SERVER;
CPDeriveKey(hContainer,CALG_TLS1_ENC_KEY,hMasterHash,Flags,&hCryptKeyCl);
CPDeriveKey(hContainer,CALG_TLS1_MAC_KEY,hMasterHash,Flags,&hMACKeyCl);
fWrite=0; Server=1;
Flags = (Server && !fWrite) || (!Server && fWrite) ? 0 : CRYPT_SERVER;
CPDeriveKey(hContainer,CALG_TLS1_ENC_KEY,hMasterHash,Flags,&hCryptKeySr);
CPDeriveKey(hContainer,CALG_TLS1_MAC_KEY,hMasterHash,Flags,&hMACKeySr);
09.11.2007 17:22:19Максим
Спасибо