Libgcrypt - извлечь зашифрованные данные RSA из объекта gcry_sexp_t - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь извлечь зашифрованные данные RSA из объекта gcry_sexp_t (который я предполагаю, что это MPI), чтобы я мог сохранить зашифрованные данные как зашифрованный файл (без других метаданных gcrypt в объекте sexp).

Я пытался использовать gcry_sexp_sprint, который сериализовал весь объект sexp и какие виды работ, но я предполагаю, что это не тот способ хранения зашифрованных байтов RSA на диске. Я также попытался извлечь данные, используя gcry_sexp_nth_buffer и gcry_sexp_nth_mpi, оба из которых просто возвращают строку enc-val.

Этот код является соответствующей частью:

    gcry_sexp_t ciph;
    err = gcry_pk_encrypt(&ciph, msgSexp, this->publicKey);

    if(err){
        throw std::runtime_error("gcry_pk_encrypt error:  " + std::string(gcry_strerror(err)));
    }

После этого у меня есть объект gcry_sexp_t, содержащий все соответствующие данные, из которых я хотел бы извлечь зашифрованные данные.

Спасибо!

РЕДАКТИРОВАТЬ: я закончил тем, что дважды вызвал gcry_sexp_nth для обхода вложенного объекта S-выражения, а затем использовал gcry_sexp_nth_data для получения необработанных зашифрованных данных. Я уверен, что есть лучший способ.

...