簡體   English   中英

Linux Kernel 加密 API

[英]Linux Kernel Crypto API

我正在嘗試使用 Linux Kernel Crypto ZDB974238714CA8DE634ACE.
我有來自https://www.kernel.org/doc/html/v4.17/crypto/api-samples.html的示例(代碼對稱密鑰操作示例)

我的問題是變量“暫存器”(輸入日期)在啟動它之前和之后的值相同。
也從未使用過 bracnh:

if (rc)
        pr_info("skcipher encrypt returned with result %d\n", rc);

我確定做錯了什么?

關於問題的第一部分:

我的問題是變量“scratchpad”(輸入日期)在啟動它之前和之后的值相同。

由於您試圖通過將相同的分散/收集列表作為目標傳遞來就地加密,因此這是一個問題。 它們不應該相同。

要調試,您可以:

  1. 嘗試其他算法。 我從您的/proc/crypto文件中看到您有__cbc-aes-aesni 您可能想嘗試其他方法來測試模塊的邏輯。
  2. 從用戶空間( /dev/crypto )嘗試 cryptodev。 通過使用 cryptodev測試和檢查dmesg ,它使調試變得更加容易。 enable_stats=1添加到模塊選項也有幫助。 當您的應用程序在用戶空間上穩定時,go 回到 kernel 取決於您。

對於第二部分:

也從未使用過 bracnh:

 if (rc) pr_info("skcipher encrypt returned with result %d\n", rc);

我會說這不是問題。

遵循代碼序列(引用相同的 kernel 版本 v4.17 作為您的文檔鏈接):

  1. crypto_wait_req采用錯誤代碼,在我們的例子中由crypto_skcipher_encrypt()傳遞。 除非錯誤是-EBUSY-EINPROGRESS ,否則此錯誤代碼將返回給rc ,零是完全正常的。
  2. 反過來,如果密碼操作成功, crypto_skcipher_encrypt返回 0; < 0 如果發生錯誤。 由於您已設置密鑰,因此應返回 0。
  3. 我將引用英特爾的__cbc-aes-aesni作為驅動程序。 檢查cbc_encrypt() ,您可以看到成功時的返回值為零,如成功 state 中skcipher_walk_done()的返回值所示。

因此,不調用分支是成功操作的預期行為。

暫無
暫無

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

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