2017-11-22 4 views
0

Ich habe meinen Crypto-Algorithmus im Kernel-Treiber mit dem Namen my-cbc (aes) registriert. Es ist in der/proc/crypto aufgelistet. Aber wenn ich versuche, es über AF_ALG zu verwenden, bekomme ich ENOENT auf Bindung, obwohl, wenn ich meinen Algorithmus sowohl im Kernraum als auch im Benutzerraum zu nur cbc (aes) umbenenne, funktioniert alles wie beabsichtigt und mein Algorithmus wird aufgerufen.Linux AF_ALG Crypto API: Algorithmus Name

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

in/proc/crypto:

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> 

Aber ich will nicht mit meinem vorhandenen AES-Implementierung mit dem gleichen Namen verstecken. Gibt es Einschränkungen bei der Benennung von Algorithmen in AF_ALG?

Antwort

0

Scheint wie Kernel findet meine Algorithmus-Implementierung, aber dann versucht, ein anderes mit dem gleichen Namen zu finden, obwohl ich CRYPTO_ALG_NEED_FALLBACK Flag in Registrierung Meta-Info entfernt. Aber während der Inspektion der Kernelquelle habe ich herausgefunden, dass ich den Treibernamen (my-cbc-aes-dcp) für salg_name angeben kann, anstatt nur name, also habe ich meinen Algorithmus zurück zu cbc (aes) benannt, seine Priorität gesenkt und ihn ausgewählt über den Treibernamen.