| Index: third_party/tlslite/tlslite/utils/entropy.c
|
| diff --git a/third_party/tlslite/tlslite/utils/entropy.c b/third_party/tlslite/tlslite/utils/entropy.c
|
| deleted file mode 100644
|
| index c627794d2da21f10aae56046c3cf584193d46769..0000000000000000000000000000000000000000
|
| --- a/third_party/tlslite/tlslite/utils/entropy.c
|
| +++ /dev/null
|
| @@ -1,173 +0,0 @@
|
| -
|
| -#include "Python.h"
|
| -
|
| -
|
| -#ifdef MS_WINDOWS
|
| -
|
| -/* The following #define is not needed on VC6 with the Platform SDK, and it
|
| -may not be needed on VC7, I'm not sure. I don't think it hurts anything.*/
|
| -#define _WIN32_WINNT 0x0400
|
| -
|
| -#include <windows.h>
|
| -
|
| -
|
| -typedef BOOL (WINAPI *CRYPTACQUIRECONTEXTA)(HCRYPTPROV *phProv,\
|
| - LPCSTR pszContainer, LPCSTR pszProvider, DWORD dwProvType,\
|
| - DWORD dwFlags );
|
| -typedef BOOL (WINAPI *CRYPTGENRANDOM)(HCRYPTPROV hProv, DWORD dwLen,\
|
| - BYTE *pbBuffer );
|
| -typedef BOOL (WINAPI *CRYPTRELEASECONTEXT)(HCRYPTPROV hProv,\
|
| - DWORD dwFlags);
|
| -
|
| -
|
| -static PyObject* entropy(PyObject *self, PyObject *args)
|
| -{
|
| - int howMany = 0;
|
| - HINSTANCE hAdvAPI32 = NULL;
|
| - CRYPTACQUIRECONTEXTA pCryptAcquireContextA = NULL;
|
| - CRYPTGENRANDOM pCryptGenRandom = NULL;
|
| - CRYPTRELEASECONTEXT pCryptReleaseContext = NULL;
|
| - HCRYPTPROV hCryptProv = 0;
|
| - unsigned char* bytes = NULL;
|
| - PyObject* returnVal = NULL;
|
| -
|
| -
|
| - /* Read arguments */
|
| - if (!PyArg_ParseTuple(args, "i", &howMany))
|
| - return(NULL);
|
| -
|
| - /* Obtain handle to the DLL containing CryptoAPI
|
| - This should not fail */
|
| - if( (hAdvAPI32 = GetModuleHandle("advapi32.dll")) == NULL) {
|
| - PyErr_Format(PyExc_SystemError,
|
| - "Advapi32.dll not found");
|
| - return NULL;
|
| - }
|
| -
|
| - /* Obtain pointers to the CryptoAPI functions
|
| - This will fail on some early version of Win95 */
|
| - pCryptAcquireContextA = (CRYPTACQUIRECONTEXTA)GetProcAddress(hAdvAPI32,\
|
| - "CryptAcquireContextA");
|
| - pCryptGenRandom = (CRYPTGENRANDOM)GetProcAddress(hAdvAPI32,\
|
| - "CryptGenRandom");
|
| - pCryptReleaseContext = (CRYPTRELEASECONTEXT) GetProcAddress(hAdvAPI32,\
|
| - "CryptReleaseContext");
|
| - if (pCryptAcquireContextA == NULL || pCryptGenRandom == NULL ||
|
| - pCryptReleaseContext == NULL) {
|
| - PyErr_Format(PyExc_NotImplementedError,
|
| - "CryptoAPI not available on this version of Windows");
|
| - return NULL;
|
| - }
|
| -
|
| - /* Allocate bytes */
|
| - if ((bytes = (unsigned char*)PyMem_Malloc(howMany)) == NULL)
|
| - return PyErr_NoMemory();
|
| -
|
| -
|
| - /* Acquire context */
|
| - if(!pCryptAcquireContextA(&hCryptProv, NULL, NULL, PROV_RSA_FULL,
|
| - CRYPT_VERIFYCONTEXT)) {
|
| - PyErr_Format(PyExc_SystemError,
|
| - "CryptAcquireContext failed, error %d", GetLastError());
|
| - PyMem_Free(bytes);
|
| - return NULL;
|
| - }
|
| -
|
| - /* Get random data */
|
| - if(!pCryptGenRandom(hCryptProv, howMany, bytes)) {
|
| - PyErr_Format(PyExc_SystemError,
|
| - "CryptGenRandom failed, error %d", GetLastError());
|
| - PyMem_Free(bytes);
|
| - CryptReleaseContext(hCryptProv, 0);
|
| - return NULL;
|
| - }
|
| -
|
| - /* Build return value */
|
| - returnVal = Py_BuildValue("s#", bytes, howMany);
|
| - PyMem_Free(bytes);
|
| -
|
| - /* Release context */
|
| - if (!pCryptReleaseContext(hCryptProv, 0)) {
|
| - PyErr_Format(PyExc_SystemError,
|
| - "CryptReleaseContext failed, error %d", GetLastError());
|
| - return NULL;
|
| - }
|
| -
|
| - return returnVal;
|
| -}
|
| -
|
| -#elif defined(HAVE_UNISTD_H) && defined(HAVE_FCNTL_H)
|
| -
|
| -#include <unistd.h>
|
| -#include <fcntl.h>
|
| -
|
| -static PyObject* entropy(PyObject *self, PyObject *args)
|
| -{
|
| - int howMany;
|
| - int fd;
|
| - unsigned char* bytes = NULL;
|
| - PyObject* returnVal = NULL;
|
| -
|
| -
|
| - /* Read arguments */
|
| - if (!PyArg_ParseTuple(args, "i", &howMany))
|
| - return(NULL);
|
| -
|
| - /* Allocate bytes */
|
| - if ((bytes = (unsigned char*)PyMem_Malloc(howMany)) == NULL)
|
| - return PyErr_NoMemory();
|
| -
|
| - /* Open device */
|
| - if ((fd = open("/dev/urandom", O_RDONLY, 0)) == -1) {
|
| - PyErr_Format(PyExc_NotImplementedError,
|
| - "No entropy source found");
|
| - PyMem_Free(bytes);
|
| - return NULL;
|
| - }
|
| -
|
| - /* Get random data */
|
| - if (read(fd, bytes, howMany) < howMany) {
|
| - PyErr_Format(PyExc_SystemError,
|
| - "Reading from /dev/urandom failed");
|
| - PyMem_Free(bytes);
|
| - close(fd);
|
| - return NULL;
|
| - }
|
| -
|
| - /* Build return value */
|
| - returnVal = Py_BuildValue("s#", bytes, howMany);
|
| - PyMem_Free(bytes);
|
| -
|
| - /* Close device */
|
| - close(fd);
|
| -
|
| - return returnVal;
|
| -}
|
| -
|
| -#else
|
| -
|
| -static PyObject* entropy(PyObject *self, PyObject *args)
|
| -{
|
| - PyErr_Format(PyExc_NotImplementedError,
|
| - "Function not supported");
|
| - return NULL;
|
| -}
|
| -
|
| -#endif
|
| -
|
| -
|
| -
|
| -/* List of functions exported by this module */
|
| -
|
| -static struct PyMethodDef entropy_functions[] = {
|
| - {"entropy", (PyCFunction)entropy, METH_VARARGS, "Return a string of random bytes produced by a platform-specific\nentropy source."},
|
| - {NULL, NULL} /* Sentinel */
|
| -};
|
| -
|
| -
|
| -/* Initialize this module. */
|
| -
|
| -PyMODINIT_FUNC initentropy(void)
|
| -{
|
| - Py_InitModule("entropy", entropy_functions);
|
| -}
|
|
|