Крипто-Про CSP

CPGenRandom

Функция CPGenRandom() заполняет буфер случайными байтами.

BOOL WINAPI CPGenRandom(
  HCRYPTPROV hProv,
  DWORD dwLen,
  BYTE * pbBuffer
);

Аргументы

hProv
[in] Дескриптор криптопровайдера. Получается при помощи функции CPAcquireContext().
dwLen
[in] Число байтов случайных данных, которые будут произведены.
pbBuffer
[in/out] Указатель на буфер, в который копируются случайные данные. Длина этого буфера в байтах передаётся параметром dwLen .

Возвращаемые значения:

При успешном завершении функция возвращает TRUE, в противном случае возвращается FALSE. Если возвращается FALSE, соответствующий код ошибки (см. таблицу) может быть получен через функцию GetLastError().
Коды возврата Описание
NTE_FAIL RPE_FAIL_STATBUFFER Неудовлетворительная статистика датчика случайных чисел, контролируемая при открытии контейнера. Эта ошибка носит вероятностный характер. Для корректно работающей программы вероятность возникновения ошибки не превышает 10^(-16).
NTE_FAIL RPE_FAIL_TESTBUFFER Неудовлетворительная постоянно действующая статистика датчика случайных чисел. Эта ошибка носит вероятностный характер. Для корректно работающей программы вероятность возникновения ошибки не превышает 10^(-16).
NTE_KEYSET_ENTRY_BAD Данные неверно считаны из системного реестра.

Примечания

Функция CPGenRandom() получает случайные числа с програмного ДСЧ контекста криптопровайдера hProv , который инициализируется при выполнении функции CPAcquireContext() c накопленного в контейнере ключевого носителя состояния ДСЧ и установленного в системе физического ДСЧ.

В случае, если контекст криптопровайдера открыт в режиме CRYPT_VERIFYCONTEXT и в системе не установлено физического ДСЧ, программный ДСЧ инициализируется с накапливаемого в реестре общесистемного состояния ДСЧ и накопленных состояний ДСЧ всех открытх ранее контейнеров ключевых носителей в рамках времени жизни разделяемой библиотеки КриптоПро CSP. Для гарантированной инициализации ДСЧ с физического или БиоДСЧ, в случае если ранее могли не открываться контейнеры ключевых носителей, следует использовать функцию CPSetProvParam() с флагом PP_USE_HARDWARE_RNG.

Требования:

Windows 2000/XP/2003: Необходимо Windows 2000 SP4 или старше с Internet Explorer 6.0 или старше.
Windows NT/95/98/ME: CSP 3.0 не поддерживает (см. КриптоПро CSP 2.0 World Wide Web link ).
Solaris: 9 Update 4 или выше.
FreeBSD: FreeBSD 5.2 или выше
Linux: RedHat 7.3, RedHad 9.0.
Файл описания: Прототип описан в файле wincsp.h.
Ядро Windows NT: IRQL < DISPATCH_LEVEL
Ядро ОС: Перед получением случайных чисел требуется инициализировать ДСЧ контекста криптопровайдера hProv с помощью параметра PP_RANDOM функции CPSetProvParam().

См. также:

CPSetProvParam() ,CPGenRandom в MS CSP World Wide Web link ,CryptGenRandom в MS CryptoAPI 2.0 World Wide Web link

Крипто-Про CSP Версия: 3.0 Сборка 3293
Что Вы думаете по поводу данной статьи?
Закажите CD c Крипто-Про CSP