Skip to content
Snippets Groups Projects
wrapping_dap_enc_oaes.c 3.90 KiB
#include "wrapping_dap_enc_oaes.h"


PyObject *dap_enc_oaes_key_new_py(PyObject *self, PyObject *args){
    PyObject *in_key;
    if (PyArg_ParseTuple(args, "O", &in_key)){
        return NULL;
    }
//    dap_enc_key_t *key = key_list_get_key(keys_oaes, key_id);
//    if (key == NULL){
//        return NULL;
//    }
    dap_enc_oaes_key_new(((PyCryptoKeyObject*)in_key)->key);
    return  PyLong_FromLong(0);
}
PyObject *dap_enc_oaes_key_delete_py(PyObject *self, PyObject *args){
    PyObject *in_key;
    if (PyArg_ParseTuple(args, "O", &in_key)){
        return NULL;
    }
    dap_enc_oaes_key_delete(((PyCryptoKeyObject*)in_key)->key);
    return  PyLong_FromLong(0);
}
PyObject *dap_enc_oaes_key_generate_py(PyObject *self, PyObject *args){
    PyObject *in_key;
    PyBytesObject *in_kex_buf;
    size_t in_kex_size;
    PyBytesObject *in_seed;
    size_t in_seed_size;
    if (PyArg_ParseTuple(args, "O|S|n|S|n", &in_key, &in_kex_buf, &in_kex_size, &in_seed, &in_seed_size)){
        return NULL;
    }
//    dap_enc_key_t *key = key_list_get_key(keys_oaes, in_key_id);
//    if (key == NULL){
//        return NULL;
//    }
    size_t key_size = sizeof(((PyCryptoKeyObject*)in_key)->key);
    void* kex_buf = NULL;
    PyBytes_AsStringAndSize((PyObject*)in_kex_buf, kex_buf, (Py_ssize_t*)in_kex_size);
    void* seed_buf = NULL;
    PyBytes_AsStringAndSize((PyObject*)in_seed, seed_buf, (Py_ssize_t*)in_seed_size);
    dap_enc_oaes_key_generate(((PyCryptoKeyObject*)in_key)->key, kex_buf, in_kex_size, seed_buf, in_seed_size, key_size);
    return  PyLong_FromLong(0);
}

PyObject *dap_enc_oaes_calc_decode_size_py(PyObject *self, PyObject *args){
    size_t size;
    if (!PyArg_ParseTuple(args, "n", &size)){
        return NULL;
    }
    size_t new_size = dap_enc_oaes_calc_decode_size(size);
    return PyLong_FromSize_t(new_size);
}
PyObject *dap_enc_oaes_calc_encode_size_py(PyObject *self, PyObject *args){
    size_t size;
    if (!PyArg_ParseTuple(args, "n", &size)){
        return NULL;
    }
    size_t new_size = dap_enc_oaes_calc_encode_size(size);
    return PyLong_FromSize_t(new_size);
}

PyObject *dap_enc_oaes_decrypt_py(PyObject *self, PyObject *args){
    //TODO
    return PyLong_FromLong(0);
}
PyObject *dap_enc_oaes_encrypt_py(PyObject *self, PyObject *args){
    //TODO
    return PyLong_FromLong(0);
}

// Writes result ( out ) in already allocated buffer
PyObject *dap_enc_oaes_decrypt_fast_py(PyObject *self, PyObject *args){
    PyObject *in_key;
    PyBytesObject *a_in;
    size_t a_in_size;
    size_t buf_out_size;
    if (!PyArg_ParseTuple(args, "O|S|n|n", &in_key, &a_in, &a_in_size, &buf_out_size)){
        return NULL;
    }
//    dap_enc_key_t *key = key_list_get_key(keys_oaes, key_id);
//    if (key == NULL){
//        return NULL;
//    }
    void *in = PyBytes_AsString((PyObject*)a_in);
    void *out = DAP_NEW_SIZE(void*, buf_out_size);
    size_t res_denc_size = dap_enc_oaes_decrypt_fast(((PyCryptoKeyObject*)in_key)->key, in, a_in_size, out, buf_out_size);
    PyBytesObject *bytes_out = (PyBytesObject*)PyBytes_FromStringAndSize(out, (Py_ssize_t)res_denc_size);
    return Py_BuildValue("S", bytes_out);
}
// Writes result ( out ) in already allocated buffer
PyObject *dap_enc_oaes_encrypt_fast_py(PyObject *self, PyObject *args){
    PyObject *in_key;
    PyBytesObject *a_in;
    size_t a_in_size;
    size_t buf_out_size;
    if (!PyArg_ParseTuple(args, "O|S|n|n", &in_key, &a_in, &a_in_size, &buf_out_size)){
        return NULL;
    }
//    dap_enc_key_t *key = key_list_get_key(keys_oaes, key_id);
//    if (key == NULL){
//        return NULL;
//    }
    void *in = PyBytes_AsString((PyObject*)a_in);
    void *out = DAP_NEW_SIZE(void*, buf_out_size);
    size_t res_enc_size = dap_enc_oaes_encrypt_fast(((PyCryptoKeyObject*)in_key)->key, in, a_in_size, out, buf_out_size);
    PyBytesObject *bytes_out = (PyBytesObject*)PyBytes_FromStringAndSize(out, (Py_ssize_t)res_enc_size);
    return Py_BuildValue("S", bytes_out);
}