我将以下 gcrypt 代码设置为首先签名,然后验证数据。但是,这已经返回 16777281 作为签名操作的结果。但我找不到任何与此匹配的错误消息。
编辑:附加信息:
通过 gcry_strerror 的错误代码导致“无效对象”
std::cout << gcry_check_version(nullptr) << std::endl;
gcry_control(GCRYCTL_SUSPEND_SECMEM_WARN);
gcry_control (GCRYCTL_INIT_SECMEM, 16384, 0);
gcry_control(GCRYCTL_RESUME_SECMEM_WARN);
gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
gcry_sexp_t keypair;
gcry_sexp_t params;
gcry_sexp_build(¶ms, nullptr, "(genkey (rsa (nbits 4:3072)))");
gcry_pk_genkey(&keypair, params);
assert(keypair != nullptr);
gcry_sexp_release(params);
gcry_sexp_t priv = gcry_sexp_find_token(keypair, "private-key", 0);
gcry_sexp_t pub = gcry_sexp_find_token(keypair, "public-key", 0);
assert(priv != nullptr);
assert(pub != nullptr);
gcry_sexp_t data;
gcry_sexp_t r_sig;
gcry_sexp_build(&data, nullptr, "(data (flags raw) (value (100, 2, 254, 88, 90, 45, 23))");
std::cout << gcry_pk_sign(&r_sig, data, priv) << std::endl;