|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
CryptHashSessionKey
[New - Windows NT]
[New - Windows 95, OEM Service Release 2] The CryptHashSessionKey function is used to compute the cryptographic hash on a key object. This function can be called multiple times with the same hash handle to compute the hash on multiple keys. Calls to CryptHashSessionKey can be interspersed with calls to CryptHashData. Before calling this function the CryptCreateHash function must be called to get a handle to a hash object.
BOOL CRYPTFUNC CryptHashSessionKey(
HCRYPTHASH hHash, HCRYPTKEY hKey, DWORD dwFlags );
Parameters
hHash
[in] A handle to the hash object. An application obtains this handle using the CryptCreateHash function.
hKey
[in] A handle to the key object to be hashed.
dwFlags
[in] The flag values. This parameter is reserved for future use and should always be zero.
Return Values
If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To retrieve extended error information, use the GetLastError function. The following table lists the error codes most commonly returned by the GetLastError function. The error codes prefaced by "NTE" are generated by the particular CSP you are using.
Error Description ERROR_INVALID_HANDLE One of the parameters specifies an invalid handle. ERROR_INVALID_PARAMETER One of the parameters contains an invalid value. This is most often an illegal pointer. NTE_BAD_ALGID The hHash handle specifies an algorithm that this CSP does not support. NTE_BAD_FLAGS The dwFlags parameter is nonzero. NTE_BAD_HASH The hash object specified by the hHash parameter is invalid. NTE_BAD_HASH_STATE An attempt was made to add data to a hash object that is already marked "finished." NTE_BAD_KEY A keyed hash algorithm is being used, but the session key is no longer valid. This error will be generated if the session key is destroyed before the hashing operating is complete. NTE_BAD_UID The CSP context that was specified when the hash object was created cannot be found. NTE_FAIL The function failed in some unexpected way.
Example
#include HCRYPTPROV hProv = 0; HCRYPTHASH hHash = 0; HCRYPTKEY hKey = 0;
// Get handle to the default provider. if(!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0)) { printf("Error %x during CryptAcquireContext!\n", GetLastError()); goto done; }
// Create hash object. if(!CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash)) { printf("Error %x during CryptBeginHash!\n", GetLastError()); goto done; }
// Create random session key.
if(!CryptGenKey(hProv, CALG_RC2, CRYPT_EXPORTABLE, &hKey)) { printf("Error %x during CryptGenKey!\n", GetLastError()); goto done; }
// Hash session key. if(!CryptHashSessionKey(hHash, hKey, 0)) { printf("Error %x during CryptHashSessionKey!\n", GetLastError()); goto done; }
// Use the hash object for something. ...
done:
// Destroy hash object. if(hHash) CryptDestroyHash(hHash);
// Destroy session key. if(hKey) CryptDestroyKey(hKey);
// Release CSP handle. if(hProv) CryptReleaseContext(hProv,0);
See Also
CryptCreateHash, CryptGenKey, CryptHashData
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
CryptHashSessionKey
[Новый - Windows NT]
[Новый - Окно 95, Выпуск Услуги OEM 2] Функция CryptHashSessionKey использована, чтобы вычислять шифровальный мусор на ключевом объекте. Эта функция может быть названа многочисленное время с той же ручкой мусора, чтобы вычислять мусор во многочисленных ключах. Вызовы на CryptHashSessionKey могут быть interspersed с вызовами на CryptHashData. Прежде, чем вызов этой функции функция CryptCreateHash должна быть названа, чтобы получать ручку на объект мусора.
BOOL CRYPTFUNC CryptHashSessionKey(
HCRYPTHASH hHash, HCRYPTKEY hKey, DWORD dwFlags );
Параметры
hHash
[in] ручка на объект мусора. Приложение получает эту ручку, использовавшую функцию CryptCreateHash.
hKey
[in] ручка на ключевой объект против обсужден.
dwFlags
[in] величины флага. Этот параметр зарезервирован для будущего использования и должно всегда - нулевым.
Обратные Величины
Если функция добивается успеха, обратная величина ненулевая. Если функция терпит неудачу, обратная величина нулевая. Для того, чтобы извлекать расширенную информацию ошибки, используйте функцию GetLastError. Следующая таблица включает коды наиболее общей ошибки возвращанные функцией GetLastError. Ошибка кодирует prefaced "NTE" сгенерированы конкретным CSP, которое Вы используете.
Описание Ошибки ERROR_INVALID_HANDLE Один из параметров определяет неправильную ручку. ERROR_INVALID_PARAMETER Один из параметров содержит неправильную величину. Это - чаще всего незаконный указатель. NTE_BAD_ALGID ручка hHash определяет алгоритм, что это CSP не поддерживается. NTE_BAD_FLAGS параметр dwFlags ненулевой. NTE_BAD_HASH объект хэша определенный параметром hHash недействителен. NTE_BAD_HASH_STATE попытка была сделана, чтобы добавлять данные к объекту хэша, который уже выделен "завершенное." NTE_BAD_KEY алгоритм хэша по ключу используется, но сеансовая клавиша больше правильная. Эта ошибка будет сгенерирована если сеансовая клавиша уничтожена прежде, чем обсуждающее обслуживать будет завершенно. NTE_BAD_UID контекст CSP, который был определен когда объект хэша был создан, не мочь быть обнаружено. NTE_FAIL функция терпела неудачу в немного неожиданном пути.
Пример
#include HCRYPTPROV hProv = 0; HCRYPTHASH hHash = 0; HCRYPTKEY hKey = 0;
// Получите ручку по умолчанию поставщику. если(!CryptAcquireContext(&hProv, НЕДЕЙСТВИТЕЛЬНЫЙ, НЕДЕЙСТВИТЕЛЬНЫЙ, PROV_RSA_FULL, 0)) { printf("Error %x в течение CryptAcquireContext!\n", GetLastError()); goto сделанным; }
// Создайте объект хэша. если(!CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash)) { printf("Error %x В ТЕЧЕНИЕ CryptBeginHash!\n", GetLastError()); goto сделанным; }
// Создайте произвольную сеансовую клавишу.
если(!CryptGenKey(hProv, CALG_RC2, CRYPT_EXPORTABLE, &hKey)) { printf("Error %x В ТЕЧЕНИЕ CryptGenKey!\n", GetLastError()); goto сделанным; }
// Сеансовая клавиша Хэша. если(!CryptHashSessionKey(hHash, hKey, 0)) { printf("Error %x В ТЕЧЕНИЕ CryptHashSessionKey!\n", GetLastError()); goto сделанным; }
// Использование объект хэша для чего-то. ...
сделанным:
// Уничтожьте объект хэша. если(hHash) CryptDestroyHash(hHash);
// Уничтожьте сеансовую клавишу. если(hKey) CryptDestroyKey(hKey);
// Выпустите ручку CSP. если(hProv) CryptReleaseContext(hProv,0);
Смотри Также
CryptCreateHash, CryptGenKey, CryptHashData
|
|
|
|
| |