Soon to be a library for parsing linux' /proc/crypto file
Now collecting /proc/crypto files from the wild to analyze them and search for
common patterns.
For now, you can help by running ./collect.sh on your Linux machine. It should
be run from the project root directory and it will save a copy of your
/proc/crypto file into the samples/ subdirectory. You may run
cryptsetup benchmark to load additional common ciphers/modes.
Below is a table of relationships between cipher type and which fields it may contain. A ✔ means the field is always present, a ✕ means that field is never present, a . means the field may or may not be present. It may also happen that a whole row is just empty, this happens if the supplied crypto file lacks a cipher of that type.
This table is generated by the ./parse.py script, which takes paths to crypto
files as command line arguments. So you can run ./parse.py /proc/crypto to
genarate this table for your system, running ./parse.py samples/*/* should
yield the table below.
| type/field | async | blocksize | chunksize | digestsize | driver | geniv | internal | ivsize | maxauthsize | max keysize | min keysize | module | name | priority | refcnt | seedsize | selftest | type | walksize |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cipher | ✕ | ✔ | ✕ | ✕ | ✔ | ✕ | . | ✕ | ✕ | ✔ | ✔ | ✔ | ✔ | ✔ | . | ✕ | . | ✔ | ✕ |
| ablkcipher | ✔ | ✔ | ✕ | ✕ | ✔ | ✔ | . | ✔ | ✕ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✕ | ✔ | ✔ | ✕ |
| akcipher | ✕ | ✕ | ✕ | ✕ | ✔ | ✕ | . | ✕ | ✕ | ✕ | ✕ | ✔ | ✔ | ✔ | ✔ | ✕ | ✔ | ✔ | ✕ |
| blkcipher | ✕ | ✔ | ✕ | ✕ | ✔ | ✔ | . | ✔ | ✕ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✕ | ✔ | ✔ | ✕ |
| givcipher | ✔ | ✔ | ✕ | ✕ | ✔ | ✔ | ✕ | ✔ | ✕ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✕ | ✔ | ✔ | ✕ |
| skcipher | ✔ | ✔ | ✔ | ✕ | ✔ | ✕ | ✔ | ✔ | ✕ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✕ | ✔ | ✔ | ✔ |
| aead | ✔ | ✔ | ✕ | ✕ | ✔ | ✔ | . | ✔ | ✔ | ✕ | ✕ | ✔ | ✔ | ✔ | ✔ | ✕ | ✔ | ✔ | ✕ |
| nivaead | ✔ | ✔ | ✕ | ✕ | ✔ | ✔ | ✕ | ✔ | ✔ | ✕ | ✕ | ✔ | ✔ | ✔ | ✔ | ✕ | ✔ | ✔ | ✕ |
| ahash | ✔ | ✔ | ✕ | ✔ | ✔ | ✕ | . | ✕ | ✕ | ✕ | ✕ | ✔ | ✔ | ✔ | ✔ | ✕ | ✔ | ✔ | ✕ |
| shash | ✕ | ✔ | ✕ | ✔ | ✔ | ✕ | . | ✕ | ✕ | ✕ | ✕ | ✔ | ✔ | ✔ | ✔ | ✕ | ✔ | ✔ | ✕ |
| compression | ✕ | ✕ | ✕ | ✕ | ✔ | ✕ | . | ✕ | ✕ | ✕ | ✕ | ✔ | ✔ | ✔ | . | ✕ | . | ✔ | ✕ |
| digest | ✕ | ✔ | ✕ | ✔ | ✔ | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✔ | ✔ | ✔ | . | ✕ | ✕ | ✔ | ✕ |
| kpp | ✕ | ✕ | ✕ | ✕ | ✔ | ✕ | . | ✕ | ✕ | ✕ | ✕ | ✔ | ✔ | ✔ | ✔ | ✕ | ✔ | ✔ | ✕ |
| pcomp | ✕ | ✕ | ✕ | ✕ | ✔ | ✕ | . | ✕ | ✕ | ✕ | ✕ | ✔ | ✔ | ✔ | ✔ | ✕ | ✔ | ✔ | ✕ |
| scomp | ✕ | ✕ | ✕ | ✕ | ✔ | ✕ | . | ✕ | ✕ | ✕ | ✕ | ✔ | ✔ | ✔ | ✔ | ✕ | ✔ | ✔ | ✕ |
| rng | ✕ | ✕ | ✕ | ✕ | ✔ | ✕ | . | ✕ | ✕ | ✕ | ✕ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✕ |