| 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);
 | 
| -}
 | 
| 
 |