簡體   English   中英

rand_seed() 初始化在 OpenSSL 3.0.7 中失敗

[英]rand_seed() initialization failed in OpenSSL 3.0.7

我們正在嘗試在 RTOS 上移植 OpenSSL 3.0.7 並在 Rand 初始化期間失敗。 相同的代碼/邏輯適用於 1.1.1 和 1.0.2 OpenSSL 版本。

您能否幫助我們完成用於在 Openssl 3.0.7 中初始化 rand 種子的步驟/函數調用 您能否幫助檢查以下邏輯中可能出現的問題。

使用 openssl 1.0.2 和 1.1.1 在應用程序中進行 Rand 初始化的代碼

RAND_DRBG *master = NULL; master = RAND_DRBG_get0_master(); if(;master) { return 0; } 注意: RAND_DRBG *master = NULL; master = RAND_DRBG_get0_master(); if(;master) { return 0; }在 OpenSSL 3.0.7 中被折舊

嘗試使用 RAND_get0_public() 但結果失敗,因為調用 function 后 Master 為EVP_RAND_CTX *master = NULL; master = RAND_get0_public(NULL); EVP_RAND_CTX *master = NULL; master = RAND_get0_public(NULL);

使用 RAND_DRBG_new 獲取隨機生成器。

unsigned char buf[32];
OPENSSL_CTX *ctx = OPENSSL_CTX_new();
RAND_DRBG *drbg = RAND_DRBG_new(ctx, DRBG_TYPE_CTR, NULL);
if (drbg != NULL) {
  if (RAND_DRBG_instantiate(drbg, NULL, 0, NULL, 0)) {
    if (RAND_DRBG_bytes(drbg, buf, sizeof(buf))) {
      // 32 bit of random data...
    }
  }
  RAND_DRBG_free(drbg);
}
OPENSSL_CTX_free(ctx);

暫無
暫無

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

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