diff --git a/src/wrapping_base64.c b/src/wrapping_base64.c index c2fe47658d04301abf8111762f7195e59dfbf007..df14bf844a88daaf919ec9e342f573b0f2e9c0a0 100644 --- a/src/wrapping_base64.c +++ b/src/wrapping_base64.c @@ -2,26 +2,34 @@ PyObject *dap_encode_base64_py(PyObject *self, PyObject *args){ PyObject *in_data; - if (!PyArg_ParseTuple(args, "S", & in_data)){ + short int l_dap_enc_data_type; + if (!PyArg_ParseTuple(args, "S|h", &in_data, &l_dap_enc_data_type)){ + return NULL; + } + if (l_dap_enc_data_type < 1 || l_dap_enc_data_type > 2){ 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); + dap_enc_base64_encode(data, size_t_str,res, l_dap_enc_data_type); + PyBytesObject *out_obj = (PyBytesObject *)PyBytes_FromFormat("%s", res); + return Py_BuildValue("S", out_obj); } PyObject *dap_decode_base64_py(PyObject *self, PyObject *args){ PyObject *data; - int size_t_str; - if (!PyArg_ParseTuple(args, "S|i", &data, &size_t_str)) { + short int l_dap_enc_data_type=1; + if (!PyArg_ParseTuple(args, "S|h", &data, &l_dap_enc_data_type)) { + return NULL; + } + if (l_dap_enc_data_type < 1 || l_dap_enc_data_type > 2){ 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); + char *res = NULL; + res = DAP_NEW_SIZE(void, DAP_ENC_BASE64_ENCODE_SIZE(strlen(in_data))); + dap_enc_base64_decode(in_data, strlen(in_data), res, l_dap_enc_data_type); + PyBytesObject *pyBytesObject = (PyBytesObject *)PyBytes_FromFormat("%s", res); + return Py_BuildValue("S", pyBytesObject); } \ No newline at end of file diff --git a/test/test.py b/test/test.py index 0449baa7f85fc797f9466c09363de0d3f9622c48..1221f48cbf4145be164c3c99de29930157552820 100644 --- a/test/test.py +++ b/test/test.py @@ -13,9 +13,9 @@ class TestLibdapCryptoPythonModule(unittest.TestCase): self.assertTrue(s == decrypt, "Encoding and decoded information using the base58 algorithm does not match the original") def test_b64(self): s = "LindyfekrngFHJFGR23356fer" - crypt = crypto.encodeBase64(s) - decrypt = crypto.decodeBase64(crypt, len(s)) - self.assertTrue(s == decrypt, "Encoding and decoded information using the base64 algorithm does not match the original") + crypt = crypto.encodeBase64(bytes(s, "utf-8"), 1) + decrypt = crypto.decodeBase64(crypt, 1) + self.assertTrue(bytes(s, "utf-8") == decrypt, "Encoding and decoded information using the base64 algorithm does not match the original") if __name__ == '__main__': unittest.main()