OpenSSL EVP_PKEY_verify () возвращает -1 - PullRequest
1 голос
/ 21 июня 2020

Я написал функцию, которая должна проверять подпись, открывая файл и проверяя подпись на unsigned char buff[]= "data";. Эта функция возвращает -1, что

указывает на ошибку, отличную от ошибки проверки подписи

согласно evp_pkey_verify .

Что это какая ошибка? Почему там нет дополнительной документации? Я считаю бесполезным, если функция возвращает значения, не описанные в описании функции.

bool verify_sig_of_buff(const string & pub_key_file_path, const unsigned char * buff, size_t buff_len, const string & sig){
    FILE * f = fopen(pub_key_file_path.c_str(), "r");
    EC_KEY *ec_key = PEM_read_EC_PUBKEY(f, NULL, NULL, NULL);
    fclose(f);


    EVP_PKEY * key = EVP_PKEY_new();
    assert(1==EVP_PKEY_assign_EC_KEY(key, ec_key));

    EVP_PKEY_CTX * key_ctx = EVP_PKEY_CTX_new(key,NULL);

    assert(1==EVP_PKEY_verify_init(key_ctx));
    assert(1==EVP_PKEY_CTX_set_signature_md(key_ctx, EVP_sha256()) );
    size_t sig_len=0;

    const int ret=EVP_PKEY_verify(key_ctx, (unsigned char * )&sig[0],sig.size(), buff , buff_len);

    EVP_PKEY_CTX_free(key_ctx);
    EVP_PKEY_free(key);

    cout<<ret<<endl;
    return ret;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...