VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Crypto/rdrand.c
blob: afed7cd1b32661c5cfe748caef1b048f45129c04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// rdrand.cpp - written and placed in public domain by Jeffrey Walton and Uri Blumenthal.

/* modified for VeraCrypt */

#include "chacha256.h"
#include "cpu.h"
#include "misc.h"

void CRYPTOPP_FASTCALL MASM_RDRAND_GenerateBlock(byte*, size_t);
void CRYPTOPP_FASTCALL MASM_RDSEED_GenerateBlock(byte*, size_t);

int RDRAND_getBytes(unsigned char* buf, size_t bufLen)
{
    if (!buf || !HasRDRAND())
		return 0;

	if (bufLen)
		MASM_RDRAND_GenerateBlock(buf, bufLen);

	return 1;
}

int RDSEED_getBytes(unsigned char* buf, size_t bufLen)
{
    if (!buf || !HasRDSEED())
		return 0;

	if (bufLen)
		MASM_RDSEED_GenerateBlock(buf, bufLen);

	return 1;
}