Am Mittwoch, 22. November 2017, 11:44:51 CET schrieb Dmitry Vyukov:
Hi Dmitry,
>
> Thanks! I think we can incorporate this into syzkaller.
>
> One question: what's the relation between alg names and type ("aead",
> "hash", "rng", "skcipher")?
If you refer to AF_ALG, then the following applies:
AF_ALG type of aead -> kernel crypto API: crypto_aead_*, aead_request_*
AF_ALG type of skcipher -> kernel crypto API: crypto_skcipher_*,
skcipher_request_*
AF_ALG type of hash -> kernel crypto API: crypto_ahash_*, ahash_request_*
AF_ALG type of rng -> kernel crypto API: crypto_rng_*
> I remember I already looked at it before
> and could not figure it out. Are all algorithms and templates
> partitioned between types? Or they are orthogonal?
If you refer to the cipher names, there are two types: templates and cipher
implementations. See [1] for details. [2] gives you some ideas of the
interrelationships between the templates and the ciphers.
The relationship between the names and the AF_ALG names mentioned above is
defined with the .cra_flags in the cipher specification of each cipher
implementation. See [3] for details.
Note, I started some fuzzing work in my libkcapi test application. See [4] for
the implementation.
[1]
http://www.chronox.de/crypto-API/crypto/architecture.html#crypto-api-cipher-references-and-priority
[2]
http://www.chronox.de/crypto-API/crypto/architecture.html#internal-structure-of-kernel-crypto-api
[3]
http://www.chronox.de/crypto-API/crypto/architecture.html#cipher-allocation-type-and-masks
[4] https://github.com/smuellerDD/libkcapi/blob/master/test/kcapi-main.c line
522
Ciao
Stephan