КриптоПро 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().
Коды возвратаОписание
ERROR_INVALID_PARAMETERОдин из параметров содержит некорректное значение. Чаще всего это некорректный указатель.
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 5.0". Для гарантированной инициализации ДСЧ с физического или БиоДСЧ, в случае если ранее могли не открываться контейнеры ключевых носителей, следует использовать функцию CPSetProvParam() с флагом PP_USE_HARDWARE_RNG.

Требования:

AIX: 5/6/7 или выше.
FreeBSD: 7/8/9 или выше.
Linux: LSB 3.1 (RHEL 4, SuSE 10) или выше.
Solaris: 10 или выше.
Mac OSX: 10.7/8 или выше.
iOS: 6/7 или выше.
Windows 2000 или выше: Необходимо Windows 2000 SP4 или старше с Internet Explorer 6.0 или старше.
Файл описания: Прототип описан в файле wincsp.h.
Ядро ОС: Вместо неё используется аналогичная функция CPCGenRandom .

См. также

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