[openssl-dev] AF_ALG engine support and kernel versions

Jeffrey Walton noloader at gmail.com
Sat Mar 26 18:56:13 UTC 2016


On Thu, Mar 17, 2016 at 11:38 PM, Jeffrey Walton <noloader at gmail.com> wrote:
> Hi Everyone,
>
> Looking at the code in engines/afalg/e_afalg.c, there is the following:
>
>   ...
>   #define K_MAJ   4
>   #define K_MIN1  1
>   #define K_MIN2  0
>   #if LINUX_VERSION_CODE <= KERNEL_VERSION(K_MAJ, K_MIN1, K_MIN2)
>   # warning "AFALG ENGINE requires Kernel Headers >= 4.1.0"
>   # warning "Skipping Compilation of AFALG engine"
>   #else
>   ...
>
> It appears AF_ALG was added to the kernel at 2.6.38. Asynchronous I/O
> support appears to have surfaced in the kernel at 2.5.23.
>
> Where is the requirement for 4.1 coming from?

This requirement does not look quite right. I've got a Ubuntu
3.19.0-56-generic kernel running on a 5th gen i7 that provides some
async drivers for the ciphers. I've also got a Ubuntu 4.2.0-34-generic
kernel running on an old VIA C7 that does not provide any async
ciphers.

I'm also building out-of-tree crypto kernel modules that have the
latest patches. In this case, the kernel version has nothing to do
with availability of async ciphers.

Does anyone know where the requirement is coming from?

Thanks in advance.

**********

# Newer, Intel 5th gen Core-i7

$ uname -r
3.19.0-56-generic

$ sudo cat /proc/crypto | egrep '^(name|driver|async|$)'
name         : crct10dif
driver       : crct10dif-pclmul

name         : crc32
driver       : crc32-pclmul

name         : xts(aes)
driver       : xts-aes-aesni
async        : yes

name         : lrw(aes)
driver       : lrw-aes-aesni
async        : yes

name         : __xts-aes-aesni
driver       : __driver-xts-aes-aesni

name         : __lrw-aes-aesni
driver       : __driver-lrw-aes-aesni

name         : pcbc(aes)
driver       : pcbc-aes-aesni
async        : yes

name         : rfc4106(gcm(aes))
driver       : rfc4106-gcm-aesni
async        : yes

name         : __gcm-aes-aesni
driver       : __driver-gcm-aes-aesni
async        : no

name         : ctr(aes)
driver       : ctr-aes-aesni
async        : yes

name         : __ctr-aes-aesni
driver       : __driver-ctr-aes-aesni

name         : cbc(aes)
driver       : cbc-aes-aesni
async        : yes

name         : ecb(aes)
driver       : ecb-aes-aesni
async        : yes

name         : __cbc-aes-aesni
driver       : __driver-cbc-aes-aesni

name         : __ecb-aes-aesni
driver       : __driver-ecb-aes-aesni

name         : __aes-aesni
driver       : __driver-aes-aesni

name         : aes
driver       : aes-aesni

name         : aes
driver       : aes-asm

name         : hmac(sha256)
driver       : hmac(sha256-generic)

name         : hmac(sha1)
driver       : hmac(sha1-generic)

name         : skein1024
driver       : skein

name         : skein512
driver       : skein

name         : skein256
driver       : skein

name         : stdrng
driver       : krng

name         : lzo
driver       : lzo-generic

name         : crct10dif
driver       : crct10dif-generic

name         : crc32c
driver       : crc32c-generic

name         : aes
driver       : aes-generic

name         : sha384
driver       : sha384-generic

name         : sha512
driver       : sha512-generic

name         : sha224
driver       : sha224-generic

name         : sha256
driver       : sha256-generic

name         : sha1
driver       : sha1-generic

name         : md5
driver       : md5-generic

name         : crc32c
driver       : crc32c-intel

*****

# Older, VIA C7 machine

$ uname -r
4.2.0-34-generic

$ sudo cat /proc/crypto | egrep '^(name|driver|async|$)'
name         : sha256
driver       : sha256-padlock

name         : sha1
driver       : sha1-padlock

name         : cbc(aes)
driver       : cbc-aes-padlock

name         : ecb(aes)
driver       : ecb-aes-padlock

name         : aes
driver       : aes-padlock

name         : lzo
driver       : lzo-generic

name         : crct10dif
driver       : crct10dif-generic

name         : crc32c
driver       : crc32c-generic

name         : aes
driver       : aes-generic

name         : sha384
driver       : sha384-generic

name         : sha512
driver       : sha512-generic

name         : sha224
driver       : sha224-generic

name         : sha256
driver       : sha256-generic

name         : sha1
driver       : sha1-generic

name         : md5
driver       : md5-generic

via:linux$


More information about the openssl-dev mailing list