| #include "Python.h" | |
| #include "../_ssl.h" | |
| #include "openssl/bio.h" | |
| /* BIO_s_mem() to PyBytes | |
| */ | |
| static PyObject * | |
| _PySSL_BytesFromBIO(_sslmodulestate *state, BIO *bio) | |
| { | |
| long size; | |
| char *data = NULL; | |
| size = BIO_get_mem_data(bio, &data); | |
| if (data == NULL || size < 0) { | |
| PyErr_SetString(PyExc_ValueError, "Not a memory BIO"); | |
| return NULL; | |
| } | |
| return PyBytes_FromStringAndSize(data, size); | |
| } | |
| /* BIO_s_mem() to PyUnicode | |
| */ | |
| static PyObject * | |
| _PySSL_UnicodeFromBIO(_sslmodulestate *state, BIO *bio, const char *error) | |
| { | |
| long size; | |
| char *data = NULL; | |
| size = BIO_get_mem_data(bio, &data); | |
| if (data == NULL || size < 0) { | |
| PyErr_SetString(PyExc_ValueError, "Not a memory BIO"); | |
| return NULL; | |
| } | |
| return PyUnicode_DecodeUTF8(data, size, error); | |
| } |