Files
bootloader/apps/elftosb/common/Random.h
László Monda e6c1fce5b4 Add KBOOT.
2016-08-10 01:45:15 +02:00

57 lines
1.2 KiB
C++

/*
* File: Random.h
*
* Copyright (c) Freescale Semiconductor, Inc. All rights reserved.
* See included license file for license details.
*/
#if !defined(_Random_h_)
#define _Random_h_
#include "stdafx.h"
#ifdef WIN32
/*!
* This class is from the crypto++ library.
*/
class MicrosoftCryptoProvider
{
public:
MicrosoftCryptoProvider();
~MicrosoftCryptoProvider();
#if defined(_WIN64)
typedef unsigned __int64 ProviderHandle; // type HCRYPTPROV, avoid #include <windows.h>
#else
typedef unsigned long ProviderHandle;
#endif
ProviderHandle GetProviderHandle() const { return m_hProvider; }
private:
ProviderHandle m_hProvider;
};
#pragma comment(lib, "advapi32.lib")
#endif // WIN32
/*!
* Encapsulates the Windows CryptoAPI's CryptGenRandom or /dev/urandom on Unix systems.
*/
class RandomNumberGenerator
{
public:
RandomNumberGenerator();
~RandomNumberGenerator();
uint8_t generateByte();
void generateBlock(uint8_t *output, unsigned count);
protected:
#ifdef WIN32
#ifndef WORKAROUND_MS_BUG_Q258000
MicrosoftCryptoProvider m_provider;
#endif
#else // WIN32
int m_fd;
#endif // WIN32
};
#endif // _Random_h_