2017-11-22 19 views
0

暗号アルゴリズムをカーネルドライバのmy-cbc(aes)という名前で登録しました。これは/ proc/cryptoにリストされています。 しかし、私はAF_ALG経由でそれを使用しようとすると、カーネルスペースとユーザースペースの両方のアルゴリズムの名前をcbc(aes)に変更すると、ENOENTがバインドされてしまい、アルゴリズムが呼び出されます。/procの/暗号でLinux AF_ALG暗号API:アルゴリズム名

struct sockaddr_alg sa = { 
    .salg_family = AF_ALG, 
    .salg_type = "skcipher", 
    .salg_name = "cbc(aes)" // works 
    .salg_name = "my-cbc(aes)" // does not work 
}; 

name   : my-cbc(aes) 
driver  : my-cbc-aes-dcp 
module  : mxs_dcp 
priority  : 400 
refcnt  : 1 
selftest  : passed 
internal  : no 
type   : ablkcipher 
async  : yes 
blocksize : 16 
min keysize : 16 
max keysize : 32 
ivsize  : 16 
geniv  : <default> 

しかし、私は私と同じ名前を持つ既存のAESの実装を非表示にする必要はありません。 AF_ALGでアルゴリズムの命名に制限はありますか?

答えて

0

私のアルゴリズムの実装がカーネルのように見えますが、同じ名前の別のものを探すようにしていますが、登録メタ情報でCRYPTO_ALG_NEED_FALLBACKフラグを削除しました。しかし、カーネルソースの検査中に、名前の代わりにsalg_nameにドライバ名(my-cbc-aes-dcp)を指定できるので、アルゴリズムをcbc(aes)に戻し、優先順位を下げて選択したドライバ名を使用します。

関連する問題