diff --git a/include/wrapping_base64.h b/include/wrapping_base64.h index 2fcedda20b42c6404cf6035c368919d55ee66b66..4133504dd0edcaf5db7e0972146b8e5f64015c75 100644 --- a/include/wrapping_base64.h +++ b/include/wrapping_base64.h @@ -1,6 +1,15 @@ #include "Python.h" #include "dap_enc_base64.h" +#include "py_bytes_object_worker.h" + +#ifdef __cplusplus +extern "C" { +#endif PyObject *dap_encode_base64_py(PyObject *self, PyObject *args); -PyObject *dap_decode_base64_py(PyObject *self, PyObject *args); \ No newline at end of file +PyObject *dap_decode_base64_py(PyObject *self, PyObject *args); + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/src/wrapping_base64.c b/src/wrapping_base64.c index 7447a64a3187a5a13129551472c7845e4d708251..c2fe47658d04301abf8111762f7195e59dfbf007 100644 --- a/src/wrapping_base64.c +++ b/src/wrapping_base64.c @@ -1,22 +1,27 @@ #include "wrapping_base64.h" PyObject *dap_encode_base64_py(PyObject *self, PyObject *args){ - const char* data; - if (!PyArg_ParseTuple(args, "s", &data)){ - return NULL; - } - char res[DAP_ENC_BASE64_ENCODE_SIZE(strlen(data))]; - dap_enc_base64_encode(data, strlen(data),res, DAP_ENC_DATA_TYPE_B64); - return Py_BuildValue("s", res); + PyObject *in_data; + if (!PyArg_ParseTuple(args, "S", & in_data)){ + return NULL; + } + char* data = PyBytes_AsString(in_data); + size_t size_t_str = strlen(data); + char res[DAP_ENC_BASE64_ENCODE_SIZE(size_t_str)]; + dap_enc_base64_encode(data, size_t_str,res, DAP_ENC_DATA_TYPE_B64); + PyBytesObject *out_obj = (PyBytesObject *)PyBytes_FromFormat("%s",res); + return Py_BuildValue("Si", out_obj, size_t_str); } PyObject *dap_decode_base64_py(PyObject *self, PyObject *args){ - const char* data; - int size_source; - if (!PyArg_ParseTuple(args, "s|i", &data, &size_source)){ - return NULL; - } - char res[size_source]; - dap_enc_base64_decode(data, strlen(data), res, DAP_ENC_DATA_TYPE_B64); - return Py_BuildValue("s", res); + PyObject *data; + int size_t_str; + if (!PyArg_ParseTuple(args, "S|i", &data, &size_t_str)) { + return NULL; + } + char *in_data = PyBytes_AsString(data); + char res[size_t_str]; + dap_enc_base64_decode(in_data, strlen(in_data), res, DAP_ENC_DATA_TYPE_B64); + PyObject *pyBytesObject = PyBytes_FromFormat("%s", res); + return Py_BuildValue("O", pyBytesObject); } \ No newline at end of file