Я пытаюсь извлечь зашифрованные данные 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
для получения необработанных зашифрованных данных. Я уверен, что есть лучший способ.