summaryrefslogtreecommitdiff
path: root/cryptopp/crypto/osrng.cpp
diff options
context:
space:
mode:
authorwatcherhd <watcherhd@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb>2011-11-26 14:19:43 +0000
committerwatcherhd <watcherhd@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb>2011-11-26 14:19:43 +0000
commit7aff1e4cb053394db57c2814d5fe1e6493e0cc75 (patch)
treec8585e44049b37e4da152495c954242204c2c38d /cryptopp/crypto/osrng.cpp
parent6f3d69266933ef120d229e0daf2da164b77214d0 (diff)
Project folders rename part 2
git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@214 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb
Diffstat (limited to 'cryptopp/crypto/osrng.cpp')
-rw-r--r--cryptopp/crypto/osrng.cpp171
1 files changed, 0 insertions, 171 deletions
diff --git a/cryptopp/crypto/osrng.cpp b/cryptopp/crypto/osrng.cpp
deleted file mode 100644
index 6ad488c..0000000
--- a/cryptopp/crypto/osrng.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-// osrng.cpp - written and placed in the public domain by Wei Dai
-
-// Thanks to Leonard Janke for the suggestion for AutoSeededRandomPool.
-
-#include "pch.h"
-
-#ifndef CRYPTOPP_IMPORTS
-
-#include "osrng.h"
-
-#ifdef OS_RNG_AVAILABLE
-
-#include "rng.h"
-
-#ifdef CRYPTOPP_WIN32_AVAILABLE
-#ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x0400
-#endif
-#include <windows.h>
-#include <wincrypt.h>
-#endif
-
-#ifdef CRYPTOPP_UNIX_AVAILABLE
-#include <errno.h>
-#include <fcntl.h>
-#include <unistd.h>
-#endif
-
-NAMESPACE_BEGIN(CryptoPP)
-
-#if defined(NONBLOCKING_RNG_AVAILABLE) || defined(BLOCKING_RNG_AVAILABLE)
-OS_RNG_Err::OS_RNG_Err(const std::string &operation)
- : Exception(OTHER_ERROR, "OS_Rng: " + operation + " operation failed with error " +
-#ifdef CRYPTOPP_WIN32_AVAILABLE
- "0x" + IntToString(GetLastError(), 16)
-#else
- IntToString(errno)
-#endif
- )
-{
-}
-#endif
-
-#ifdef NONBLOCKING_RNG_AVAILABLE
-
-#ifdef CRYPTOPP_WIN32_AVAILABLE
-
-MicrosoftCryptoProvider::MicrosoftCryptoProvider()
-{
- if(!CryptAcquireContext(&m_hProvider, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
- throw OS_RNG_Err("CryptAcquireContext");
-}
-
-MicrosoftCryptoProvider::~MicrosoftCryptoProvider()
-{
- CryptReleaseContext(m_hProvider, 0);
-}
-
-#endif
-
-NonblockingRng::NonblockingRng()
-{
-#ifndef CRYPTOPP_WIN32_AVAILABLE
- m_fd = open("/dev/urandom",O_RDONLY);
- if (m_fd == -1)
- throw OS_RNG_Err("open /dev/urandom");
-#endif
-}
-
-NonblockingRng::~NonblockingRng()
-{
-#ifndef CRYPTOPP_WIN32_AVAILABLE
- close(m_fd);
-#endif
-}
-
-void NonblockingRng::GenerateBlock(byte *output, size_t size)
-{
-#ifdef CRYPTOPP_WIN32_AVAILABLE
-# ifdef WORKAROUND_MS_BUG_Q258000
- const MicrosoftCryptoProvider &m_Provider = Singleton<MicrosoftCryptoProvider>().Ref();
-# endif
- if (!CryptGenRandom(m_Provider.GetProviderHandle(), (DWORD)size, output))
- throw OS_RNG_Err("CryptGenRandom");
-#else
- if (read(m_fd, output, size) != size)
- throw OS_RNG_Err("read /dev/urandom");
-#endif
-}
-
-#endif
-
-// *************************************************************
-
-#ifdef BLOCKING_RNG_AVAILABLE
-
-#ifndef CRYPTOPP_BLOCKING_RNG_FILENAME
-#ifdef __OpenBSD__
-#define CRYPTOPP_BLOCKING_RNG_FILENAME "/dev/srandom"
-#else
-#define CRYPTOPP_BLOCKING_RNG_FILENAME "/dev/random"
-#endif
-#endif
-
-BlockingRng::BlockingRng()
-{
- m_fd = open(CRYPTOPP_BLOCKING_RNG_FILENAME,O_RDONLY);
- if (m_fd == -1)
- throw OS_RNG_Err("open " CRYPTOPP_BLOCKING_RNG_FILENAME);
-}
-
-BlockingRng::~BlockingRng()
-{
- close(m_fd);
-}
-
-void BlockingRng::GenerateBlock(byte *output, size_t size)
-{
- while (size)
- {
- // on some systems /dev/random will block until all bytes
- // are available, on others it will returns immediately
- ssize_t len = read(m_fd, output, size);
- if (len < 0)
- throw OS_RNG_Err("read " CRYPTOPP_BLOCKING_RNG_FILENAME);
- size -= len;
- output += len;
- if (size)
- sleep(1);
- }
-}
-
-#endif
-
-// *************************************************************
-
-void OS_GenerateRandomBlock(bool blocking, byte *output, size_t size)
-{
-#ifdef NONBLOCKING_RNG_AVAILABLE
- if (blocking)
-#endif
- {
-#ifdef BLOCKING_RNG_AVAILABLE
- BlockingRng rng;
- rng.GenerateBlock(output, size);
-#endif
- }
-
-#ifdef BLOCKING_RNG_AVAILABLE
- if (!blocking)
-#endif
- {
-#ifdef NONBLOCKING_RNG_AVAILABLE
- NonblockingRng rng;
- rng.GenerateBlock(output, size);
-#endif
- }
-}
-
-void AutoSeededRandomPool::Reseed(bool blocking, unsigned int seedSize)
-{
- SecByteBlock seed(seedSize);
- OS_GenerateRandomBlock(blocking, seed, seedSize);
- IncorporateEntropy(seed, seedSize);
-}
-
-NAMESPACE_END
-
-#endif
-
-#endif