Неправильная длина сообщения при использовании C python api

Hanson Duan спросил: 03 февраля 2018 в 10:41 в: python

Я пытаюсь расширить libhydrogen (открытый исходный код, найденный здесь: https://github.com/jedisct1/libhydrogen/), чтобы поддерживать вызовы базовой библиотеки в Python. Тем не менее, у меня возникла странная проблема. В частности, у меня есть следующий код:

static PyObject* crypto_secretbox_encrypt(PyObject* self, PyObject* args){
    char* m;
    size_t mlen;
    uint64_t msg_id;
    char *ctx;
    size_t ctx_len;
    const uint8_t *key; //this shouldn't matter its secret
    size_t key_len;
    PyArg_ParseTuple(args, "s#|K|s#|s#", &m, &mlen, &msg_id, &ctx, &ctx_len, &key, &key_len); //only s# accepts null bytes, need to random pointers to store lengths
    //printf("Parsed \n");
    //printf("MSG: %s, MSG_ID: %" PRIu64 ", CTX: %s\n", m, msg_id, ctx);
    if(ctx_len != hydro_secretbox_CONTEXTBYTES){
        PyErr_Format(PyExc_ValueError, "Context not of correct size: Received %lu bytes", ctx_len);
        return NULL;
    }    if(key_len != hydro_secretbox_KEYBYTES){
        PyErr_Format(PyExc_ValueError, "Key not of correct size: Received %lu bytes", key_len);
        return NULL;
    }

Что может успешно проанализировать длину ctx, однако, когда он добирается до ключа получает ошибку,

  File "cryptotest.py", line 7, in <module>
    c1 = crypto.secretbox_encrypt("message1", 0, "\x00"*8, '\x00'*32);
ValueError: Key not of correct size: Received 140123308032032 bytes

Любые идеи о том, почему я не могу успешно проанализировать длину ключа?


0 ответов