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