From 6fef53aa9dc297394a4691e6c9ebe2806ae0647c Mon Sep 17 00:00:00 2001 From: Alexey Stratulat <alexey.stratulat@demlabs.net> Date: Thu, 25 Jul 2019 17:09:47 +0700 Subject: [PATCH] [*] Fix. --- include/key_list.h | 6 ++++++ src/key_list.c | 2 +- src/libdap-crypto-python.c | 1 + src/wrapping_dap_enc_key.c | 35 +++++++++++++++++++++-------------- 4 files changed, 29 insertions(+), 15 deletions(-) diff --git a/include/key_list.h b/include/key_list.h index fffa8638..2159cb9f 100644 --- a/include/key_list.h +++ b/include/key_list.h @@ -1,3 +1,7 @@ +#ifndef KEY_LIST_H +#define KEY_LIST_H + + #include "dap_common.h" #include "dap_enc_key.h" #include <stdint.h> @@ -24,3 +28,5 @@ dap_enc_key_t *key_list_get_key(key_list_t *list, uint8_t key); #ifdef __cplusplus } #endif + +#endif diff --git a/src/key_list.c b/src/key_list.c index 9f09de1a..83e35a9d 100644 --- a/src/key_list.c +++ b/src/key_list.c @@ -54,4 +54,4 @@ dap_enc_key_t *key_list_get_key(key_list_t *list, uint8_t key){ return NULL; } return list->keys[index]; -} \ No newline at end of file +} diff --git a/src/libdap-crypto-python.c b/src/libdap-crypto-python.c index 51d93c61..8baebb89 100644 --- a/src/libdap-crypto-python.c +++ b/src/libdap-crypto-python.c @@ -11,6 +11,7 @@ static PyObject* dap_crypto_init(PyObject *self, PyObject *args){ return PyLong_FromLong(-2); } keys = key_list_init(); + keys_iaes = keys; return PyLong_FromLong(0); } diff --git a/src/wrapping_dap_enc_key.c b/src/wrapping_dap_enc_key.c index a07892a4..5e608da7 100644 --- a/src/wrapping_dap_enc_key.c +++ b/src/wrapping_dap_enc_key.c @@ -32,11 +32,11 @@ PyObject* dap_enc_key_get_dec_size_py(PyObject *self, PyObject *args){ // allocate memory for key struct PyObject* dap_enc_key_new_py(PyObject *self, PyObject *args){ - int type_key; - if(!PyArg_ParseTuple(args, "i", &type_key)){ + uint8_t type_key; + if(!PyArg_ParseTuple(args, "h", &type_key)){ return NULL; } - if (type_key < 0 || type_key > 16){ + if (type_key > 16){ return PyLong_FromLong(-1); } dap_enc_key_t *new_key = dap_enc_key_new(type_key); @@ -45,18 +45,25 @@ PyObject* dap_enc_key_new_py(PyObject *self, PyObject *args){ } /// default gen key -PyObject *dap_enc_key_new_generate_py(PyObject *self, PyObject *args){ ///!!!!!!! ERR - /*int type_key; - PyObject *kex_buf; - size_t kex_size; - PyObject* seed, - size_t seed_size; - size_t key_size - if (PyArg_ParseTuple(args, "i|O|n|O|n|n", &type_key, &kex_buf, &kex_size, &seed, &seed_size, &key_size)){ +PyObject *dap_enc_key_new_generate_py(PyObject *self, PyObject *args){ + uint8_t in_type_key; + PyBytesObject *in_kex_buf; + size_t in_kex_size; + PyBytesObject *in_seed; + size_t in_seed_size; + size_t in_key_size; + if (!PyArg_ParseTuple(args, "h|S|n|S|n|n", &in_type_key, &in_kex_buf, &in_kex_size, &in_seed, + &in_seed_size, &in_key_size)){ return NULL; } - //dap_enc_key_new_generate - restart*/ - return PyLong_FromLong(0); + if (in_type_key > 16){ + return PyLong_FromLong(-1); + } + void *kex_buf = PyBytes_AsString((PyObject*)in_kex_buf); + void *seed = PyBytes_AsString((PyObject*)in_seed); + dap_enc_key_t *new_key = dap_enc_key_new_generate(in_type_key, kex_buf, in_kex_size, seed, in_seed_size, in_key_size); + uint8_t new_key_id = key_list_add_element(keys, new_key); + return PyLong_FromLong(new_key_id); } // update struct dap_enc_key_t after insert foreign keys @@ -134,4 +141,4 @@ PyObject *dap_enc_key_delete_py(PyObject *self, PyObject *args){ key_list_del_element(keys, key_id); dap_enc_key_delete(key); return PyLong_FromLong(0); -} \ No newline at end of file +} -- GitLab