Как использовать методы ecx get_priv/pub_key из openssl?

Я пытаюсь перевести на Python pkey_ecx_derive25519 метод благодаря криптографической библиотеке python.

static int pkey_ecx_derive25519(EVP_PKEY_CTX *ctx, unsigned char *key,
                                size_t *keylen)
{
    const unsigned char *privkey, *pubkey;

    if (!validate_ecx_derive(ctx, key, keylen, &privkey, &pubkey)
            || (key != NULL
                && X25519(key, privkey, pubkey) == 0))
        return 0;
    *keylen = X25519_KEYLEN;
    return 1;
}

что приводит меня к validate_ecx_derive функция

static int validate_ecx_derive(EVP_PKEY_CTX *ctx, unsigned char *key,
                                          size_t *keylen,
                                          const unsigned char **privkey,
                                          const unsigned char **pubkey)
{
    const ECX_KEY *ecxkey, *peerkey;

    if (ctx->pkey == NULL || ctx->peerkey == NULL) {
        ECerr(EC_F_VALIDATE_ECX_DERIVE, EC_R_KEYS_NOT_SET);
        return 0;
    }
    ecxkey = ctx->pkey->pkey.ecx;
    peerkey = ctx->peerkey->pkey.ecx;
    if (ecxkey == NULL || ecxkey->privkey == NULL) {
        ECerr(EC_F_VALIDATE_ECX_DERIVE, EC_R_INVALID_PRIVATE_KEY);
        return 0;
    }
    if (peerkey == NULL) {
        ECerr(EC_F_VALIDATE_ECX_DERIVE, EC_R_INVALID_PEER_KEY);
        return 0;
    }
    *privkey = ecxkey->privkey;
    *pubkey = peerkey->pubkey;

    return 1;
}

где я могу видеть privkey а также pubkey заселены.

Я нашел эти две функции ecx_get_priv_key а также ecx_get_pub_key принадлежащий к ecx25519_asn1_meth которые помогают получить ключи pub/priv из EVP_PKEY.

Я бы хотел использовать их из библиотеки python для криптографии. Это вообще возможно?

Я пробовал использовать модифицированную версию криптографической библиотеки python, добавив сигнатуры методов в _cffi_src/openssl/evp.py файл, но он ломает библиотеку, поскольку эти методы сигнатур отсутствуют в ec_local.h файл.

Есть ли примеры или способ использовать эти методы из Python? Даже если они кажутся незащищенными.

0 ответов

Другие вопросы по тегам