簡體   English   中英

函數'BN_init'的隱式聲明錯誤

[英]Implicit declaration of function 'BN_init' error

我正在檢查如何從私人比特幣地址生成公共密鑰。
我找到以下頁面:
如何從OpenSSL中的ECDSA私鑰獲取公鑰?

但是,當我嘗試使用gcc -Wall -Werror -O3 -o public_key public_key.c -lcrypto進行編譯時,出現以下錯誤:

public_key.c: In function 'generate_pubic_key':
public_key.c:26:13: error: storage size of 'start' isn't known
      BIGNUM start;
             ^~~~~
public_key.c:32:6: error: implicit declaration of function 'BN_init' [-Werror=implicit-function-declaration]
      BN_init(&start);
      ^~~~~~~
public_key.c:26:13: error: unused variable 'start' [-Werror=unused-variable]
      BIGNUM start;
             ^~~~~
cc1: all warnings being treated as errors

我已經安裝了OpenSSL,到目前為止還沒有任何與它相關的編程錯誤。 有人可以指出我做錯了什么嗎?

您正在使用 不推薦 使用的 刪除API。

根據BN_new(3)手冊頁:

刪除功能void BN_init(BIGNUM *);

從OpenSSL 1.1.0開始,BN_init()不再可用。 它用於初始化現有的未初始化的BIGNUM。 通常,此操作如下:

  BIGNUM a; BN_init(&a); 

應用程序應將BN_init的使用替換為BN_new:

  BIGNUM *a; a = BN_new(); if(!a) /* Handle error */ ... BN_free(a); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM