* 2.6.32: padlock_sha1 and hmac broken? @ 2010-01-29 23:44 Wolfgang Walter 2010-01-30 2:27 ` Herbert Xu 0 siblings, 1 reply; 8+ messages in thread From: Wolfgang Walter @ 2010-01-29 23:44 UTC (permalink / raw) To: Herbert Xu; +Cc: netdev, linux-kernel Hello, I upgraded some machines with VIA processors from (vanilla) 2.6.31 to 2.6.32.7. If I build the kernel 2.6.32.7 with CONFIG_CRYPTO_DEV_PADLOCK_SHA=y and padlock supports sha, hmac(sha1) is missing and IPSEC with hmac(sha1) no longer is possible. If padlock does not support sha hmac(sha1) works. If I build the kernel CONFIG_CRYPTO_DEV_PADLOCK_SHA=n hmac(sha1) works on all padlocks (using sha1_generic). **** Here is the /proc/cpuinfo and /proc/crypto for the case CONFIG_CRYPTO_DEV_PADLOCK_SHA=y, padlock supports sha =================================================================== processor : 0 vendor_id : CentaurHauls cpu family : 6 model : 13 model name : VIA C7 Processor 1000MHz stepping : 0 cpu MHz : 1000.021 cache size : 128 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge cmov pat clflush acpi mmx fxsr sse sse2 tm nx pni est tm2 xtpr rng rng_en ace ace_en ace2 ace2_en phe phe_en pmm pmm_en bogomips : 2000.37 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 32 bits virtual power management: =========== name : rfc3686(ctr(aes)) driver : rfc3686(ctr(aes-padlock)) module : kernel priority : 300 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 20 max keysize : 36 ivsize : 8 geniv : seqiv name : ctr(aes) driver : ctr(aes-padlock) module : kernel priority : 300 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 16 max keysize : 32 ivsize : 16 geniv : chainiv name : cbc(twofish) driver : cbc(twofish-asm) module : kernel priority : 200 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : cbc(camellia) driver : cbc(camellia-generic) module : kernel priority : 100 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : cbc(serpent) driver : cbc(serpent-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 0 max keysize : 32 ivsize : 16 geniv : <default> name : cbc(blowfish) driver : cbc(blowfish-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 8 min keysize : 4 max keysize : 56 ivsize : 8 geniv : <default> name : cbc(cast5) driver : cbc(cast5-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 8 min keysize : 5 max keysize : 16 ivsize : 8 geniv : <default> name : cbc(des3_ede) driver : cbc(des3_ede-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 8 min keysize : 24 max keysize : 24 ivsize : 8 geniv : <default> name : cbc(des) driver : cbc(des-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 8 min keysize : 8 max keysize : 8 ivsize : 8 geniv : <default> name : xcbc(aes) driver : xcbc(aes-padlock) module : kernel priority : 300 refcnt : 1 selftest : passed type : shash blocksize : 16 digestsize : 16 name : hmac(rmd160) driver : hmac(rmd160-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 20 name : hmac(md5) driver : hmac(md5-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : sha256 driver : sha256-padlock module : kernel priority : 300 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 32 name : sha1 driver : sha1-padlock module : kernel priority : 300 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 20 name : cbc(aes) driver : cbc-aes-padlock module : kernel priority : 400 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : ecb(aes) driver : ecb-aes-padlock module : kernel priority : 400 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 0 geniv : <default> name : aes driver : aes-padlock module : kernel priority : 300 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : ghash driver : ghash-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : shash blocksize : 16 digestsize : 16 name : stdrng driver : ansi_cprng module : kernel priority : 100 refcnt : 1 selftest : passed type : rng seedsize : 48 name : stdrng driver : krng module : kernel priority : 200 refcnt : 1 selftest : passed type : rng seedsize : 0 name : lzo driver : lzo-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : compression name : crc32c driver : crc32c-generic module : kernel priority : 100 refcnt : 2 selftest : passed type : shash blocksize : 1 digestsize : 4 name : michael_mic driver : michael_mic-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 8 digestsize : 8 name : zlib driver : zlib-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : pcomp name : deflate driver : deflate-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : compression name : salsa20 driver : salsa20-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 16 max keysize : 32 ivsize : 8 geniv : <default> name : seed driver : seed-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 16 name : anubis driver : anubis-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 40 name : khazad driver : khazad-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 16 max keysize : 16 name : xeta driver : xeta-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 16 max keysize : 16 name : xtea driver : xtea-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 16 max keysize : 16 name : tea driver : tea-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 16 max keysize : 16 name : arc4 driver : arc4-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 1 min keysize : 1 max keysize : 256 name : cast6 driver : cast6-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : cast5 driver : cast5-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 5 max keysize : 16 name : camellia driver : camellia-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : aes driver : aes-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : tnepres driver : tnepres-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 0 max keysize : 32 name : serpent driver : serpent-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 0 max keysize : 32 name : twofish driver : twofish-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : blowfish driver : blowfish-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 4 max keysize : 56 name : fcrypt driver : fcrypt-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 8 max keysize : 8 name : des3_ede driver : des3_ede-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 24 max keysize : 24 name : des driver : des-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 8 max keysize : 8 name : tgr128 driver : tgr128-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : tgr160 driver : tgr160-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 20 name : tgr192 driver : tgr192-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 24 name : wp256 driver : wp256-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 32 name : wp384 driver : wp384-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 48 name : wp512 driver : wp512-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 64 name : sha512 driver : sha512-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 128 digestsize : 64 name : sha384 driver : sha384-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 128 digestsize : 48 name : sha256 driver : sha256-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 32 name : sha224 driver : sha224-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 28 name : sha1 driver : sha1-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 20 name : rmd320 driver : rmd320-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 40 name : rmd256 driver : rmd256-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 32 name : rmd160 driver : rmd160-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 20 name : rmd128 driver : rmd128-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : md5 driver : md5-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : md4 driver : md4-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : compress_null driver : compress_null-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : compression name : digest_null driver : digest_null-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 1 digestsize : 0 name : ecb(cipher_null) driver : ecb-cipher_null module : kernel priority : 100 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 0 max keysize : 0 ivsize : 0 geniv : <default> name : cipher_null driver : cipher_null-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 1 min keysize : 0 max keysize : 0 name : salsa20 driver : salsa20-asm module : kernel priority : 200 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 16 max keysize : 32 ivsize : 8 geniv : <default> name : twofish driver : twofish-asm module : kernel priority : 200 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : aes driver : aes-asm module : kernel priority : 200 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 =================================================================== **** Here is the /proc/crypto for the case CONFIG_CRYPTO_DEV_PADLOCK_SHA=n, padlock supports sha name : authenc(hmac(sha1),cbc(aes)) driver : authenc(hmac(sha1-generic),cbc-aes-padlock) module : kernel priority : 4000 refcnt : 89 selftest : passed type : aead async : yes blocksize : 16 ivsize : 16 maxauthsize : 20 geniv : <built-in> name : cbc(aes) driver : cbc-aes-padlock module : kernel priority : 400 refcnt : 89 selftest : passed type : givcipher async : yes blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : chainiv name : rfc3686(ctr(aes)) driver : rfc3686(ctr(aes-padlock)) module : kernel priority : 300 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 20 max keysize : 36 ivsize : 8 geniv : seqiv name : ctr(aes) driver : ctr(aes-padlock) module : kernel priority : 300 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 16 max keysize : 32 ivsize : 16 geniv : chainiv name : cbc(twofish) driver : cbc(twofish-asm) module : kernel priority : 200 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : cbc(camellia) driver : cbc(camellia-generic) module : kernel priority : 100 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : cbc(serpent) driver : cbc(serpent-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 0 max keysize : 32 ivsize : 16 geniv : <default> name : cbc(blowfish) driver : cbc(blowfish-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 8 min keysize : 4 max keysize : 56 ivsize : 8 geniv : <default> name : cbc(cast5) driver : cbc(cast5-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 8 min keysize : 5 max keysize : 16 ivsize : 8 geniv : <default> name : cbc(des3_ede) driver : cbc(des3_ede-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 8 min keysize : 24 max keysize : 24 ivsize : 8 geniv : <default> name : cbc(des) driver : cbc(des-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 8 min keysize : 8 max keysize : 8 ivsize : 8 geniv : <default> name : xcbc(aes) driver : xcbc(aes-padlock) module : kernel priority : 300 refcnt : 1 selftest : passed type : shash blocksize : 16 digestsize : 16 name : hmac(rmd160) driver : hmac(rmd160-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 20 name : hmac(sha256) driver : hmac(sha256-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 32 name : hmac(sha1) driver : hmac(sha1-generic) module : kernel priority : 0 refcnt : 177 selftest : passed type : shash blocksize : 64 digestsize : 20 name : hmac(md5) driver : hmac(md5-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : cbc(aes) driver : cbc-aes-padlock module : kernel priority : 400 refcnt : 89 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : ecb(aes) driver : ecb-aes-padlock module : kernel priority : 400 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 0 geniv : <default> name : aes driver : aes-padlock module : kernel priority : 300 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : ghash driver : ghash-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : shash blocksize : 16 digestsize : 16 name : stdrng driver : ansi_cprng module : kernel priority : 100 refcnt : 1 selftest : passed type : rng seedsize : 48 name : stdrng driver : krng module : kernel priority : 200 refcnt : 2 selftest : passed type : rng seedsize : 0 name : lzo driver : lzo-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : compression name : crc32c driver : crc32c-generic module : kernel priority : 100 refcnt : 2 selftest : passed type : shash blocksize : 1 digestsize : 4 name : michael_mic driver : michael_mic-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 8 digestsize : 8 name : zlib driver : zlib-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : pcomp name : deflate driver : deflate-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : compression name : salsa20 driver : salsa20-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 16 max keysize : 32 ivsize : 8 geniv : <default> name : seed driver : seed-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 16 name : anubis driver : anubis-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 40 name : khazad driver : khazad-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 16 max keysize : 16 name : xeta driver : xeta-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 16 max keysize : 16 name : xtea driver : xtea-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 16 max keysize : 16 name : tea driver : tea-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 16 max keysize : 16 name : arc4 driver : arc4-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 1 min keysize : 1 max keysize : 256 name : cast6 driver : cast6-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : cast5 driver : cast5-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 5 max keysize : 16 name : camellia driver : camellia-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : aes driver : aes-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : tnepres driver : tnepres-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 0 max keysize : 32 name : serpent driver : serpent-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 0 max keysize : 32 name : twofish driver : twofish-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : blowfish driver : blowfish-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 4 max keysize : 56 name : fcrypt driver : fcrypt-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 8 max keysize : 8 name : des3_ede driver : des3_ede-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 24 max keysize : 24 name : des driver : des-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 8 max keysize : 8 name : tgr128 driver : tgr128-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : tgr160 driver : tgr160-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 20 name : tgr192 driver : tgr192-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 24 name : wp256 driver : wp256-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 32 name : wp384 driver : wp384-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 48 name : wp512 driver : wp512-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 64 name : sha512 driver : sha512-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 128 digestsize : 64 name : sha384 driver : sha384-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 128 digestsize : 48 name : sha256 driver : sha256-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 32 name : sha224 driver : sha224-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 28 name : sha1 driver : sha1-generic module : kernel priority : 0 refcnt : 89 selftest : passed type : shash blocksize : 64 digestsize : 20 name : rmd320 driver : rmd320-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 40 name : rmd256 driver : rmd256-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 32 name : rmd160 driver : rmd160-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 20 name : rmd128 driver : rmd128-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : md5 driver : md5-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : md4 driver : md4-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : compress_null driver : compress_null-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : compression name : digest_null driver : digest_null-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 1 digestsize : 0 name : ecb(cipher_null) driver : ecb-cipher_null module : kernel priority : 100 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 0 max keysize : 0 ivsize : 0 geniv : <default> name : cipher_null driver : cipher_null-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 1 min keysize : 0 max keysize : 0 name : salsa20 driver : salsa20-asm module : kernel priority : 200 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 16 max keysize : 32 ivsize : 8 geniv : <default> name : twofish driver : twofish-asm module : kernel priority : 200 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : aes driver : aes-asm module : kernel priority : 200 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 =================================================================== **** Here is the /proc/cpuinfo and /proc/crypto for the case CONFIG_CRYPTO_DEV_PADLOCK_SHA=y, padlock does not support sha =================================================================== processor : 0 vendor_id : CentaurHauls cpu family : 6 model : 9 model name : VIA Nehemiah stepping : 8 cpu MHz : 1002.228 cache size : 64 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr cx8 sep mtrr pge cmov pat mmx fxsr sse rng rng_en ace ace_en bogomips : 2005.97 clflush size : 32 cache_alignment : 32 address sizes : 32 bits physical, 32 bits virtual power management: =================================================================== name : authenc(hmac(sha1),cbc(aes)) driver : authenc(hmac(sha1-generic),cbc-aes-padlock) module : kernel priority : 4000 refcnt : 231 selftest : passed type : aead async : yes blocksize : 16 ivsize : 16 maxauthsize : 20 geniv : <built-in> name : cbc(aes) driver : cbc-aes-padlock module : kernel priority : 400 refcnt : 231 selftest : passed type : givcipher async : yes blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : chainiv name : rfc3686(ctr(aes)) driver : rfc3686(ctr(aes-padlock)) module : kernel priority : 300 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 20 max keysize : 36 ivsize : 8 geniv : seqiv name : ctr(aes) driver : ctr(aes-padlock) module : kernel priority : 300 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 16 max keysize : 32 ivsize : 16 geniv : chainiv name : cbc(twofish) driver : cbc(twofish-asm) module : kernel priority : 200 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : cbc(camellia) driver : cbc(camellia-generic) module : kernel priority : 100 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : cbc(serpent) driver : cbc(serpent-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 0 max keysize : 32 ivsize : 16 geniv : <default> name : cbc(blowfish) driver : cbc(blowfish-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 8 min keysize : 4 max keysize : 56 ivsize : 8 geniv : <default> name : cbc(cast5) driver : cbc(cast5-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 8 min keysize : 5 max keysize : 16 ivsize : 8 geniv : <default> name : cbc(des3_ede) driver : cbc(des3_ede-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 8 min keysize : 24 max keysize : 24 ivsize : 8 geniv : <default> name : cbc(des) driver : cbc(des-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 8 min keysize : 8 max keysize : 8 ivsize : 8 geniv : <default> name : xcbc(aes) driver : xcbc(aes-padlock) module : kernel priority : 300 refcnt : 1 selftest : passed type : shash blocksize : 16 digestsize : 16 name : hmac(rmd160) driver : hmac(rmd160-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 20 name : hmac(sha256) driver : hmac(sha256-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 32 name : hmac(sha1) driver : hmac(sha1-generic) module : kernel priority : 0 refcnt : 461 selftest : passed type : shash blocksize : 64 digestsize : 20 name : hmac(md5) driver : hmac(md5-generic) module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : cbc(aes) driver : cbc-aes-padlock module : kernel priority : 400 refcnt : 231 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : ecb(aes) driver : ecb-aes-padlock module : kernel priority : 400 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 0 geniv : <default> name : aes driver : aes-padlock module : kernel priority : 300 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : ghash driver : ghash-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : shash blocksize : 16 digestsize : 16 name : stdrng driver : ansi_cprng module : kernel priority : 100 refcnt : 1 selftest : passed type : rng seedsize : 48 name : stdrng driver : krng module : kernel priority : 200 refcnt : 2 selftest : passed type : rng seedsize : 0 name : lzo driver : lzo-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : compression name : crc32c driver : crc32c-generic module : kernel priority : 100 refcnt : 2 selftest : passed type : shash blocksize : 1 digestsize : 4 name : michael_mic driver : michael_mic-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 8 digestsize : 8 name : zlib driver : zlib-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : pcomp name : deflate driver : deflate-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : compression name : salsa20 driver : salsa20-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 16 max keysize : 32 ivsize : 8 geniv : <default> name : seed driver : seed-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 16 name : anubis driver : anubis-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 40 name : khazad driver : khazad-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 16 max keysize : 16 name : xeta driver : xeta-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 16 max keysize : 16 name : xtea driver : xtea-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 16 max keysize : 16 name : tea driver : tea-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 16 max keysize : 16 name : arc4 driver : arc4-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 1 min keysize : 1 max keysize : 256 name : cast6 driver : cast6-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : cast5 driver : cast5-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 5 max keysize : 16 name : camellia driver : camellia-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : aes driver : aes-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : tnepres driver : tnepres-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 0 max keysize : 32 name : serpent driver : serpent-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 0 max keysize : 32 name : twofish driver : twofish-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : blowfish driver : blowfish-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 4 max keysize : 56 name : fcrypt driver : fcrypt-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 8 max keysize : 8 name : des3_ede driver : des3_ede-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 24 max keysize : 24 name : des driver : des-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 8 min keysize : 8 max keysize : 8 name : tgr128 driver : tgr128-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : tgr160 driver : tgr160-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 20 name : tgr192 driver : tgr192-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 24 name : wp256 driver : wp256-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 32 name : wp384 driver : wp384-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 48 name : wp512 driver : wp512-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 64 name : sha512 driver : sha512-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 128 digestsize : 64 name : sha384 driver : sha384-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 128 digestsize : 48 name : sha256 driver : sha256-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 32 name : sha224 driver : sha224-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 28 name : sha1 driver : sha1-generic module : kernel priority : 0 refcnt : 231 selftest : passed type : shash blocksize : 64 digestsize : 20 name : rmd320 driver : rmd320-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 40 name : rmd256 driver : rmd256-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 32 name : rmd160 driver : rmd160-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 20 name : rmd128 driver : rmd128-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : md5 driver : md5-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : md4 driver : md4-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : compress_null driver : compress_null-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : compression name : digest_null driver : digest_null-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 1 digestsize : 0 name : ecb(cipher_null) driver : ecb-cipher_null module : kernel priority : 100 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 0 max keysize : 0 ivsize : 0 geniv : <default> name : cipher_null driver : cipher_null-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 1 min keysize : 0 max keysize : 0 name : salsa20 driver : salsa20-asm module : kernel priority : 200 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 16 max keysize : 32 ivsize : 8 geniv : <default> name : twofish driver : twofish-asm module : kernel priority : 200 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : aes driver : aes-asm module : kernel priority : 200 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 ============================ Regards -- Wolfgang Walter Studentenwerk München Anstalt des öffentlichen Rechts ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 2.6.32: padlock_sha1 and hmac broken? 2010-01-29 23:44 2.6.32: padlock_sha1 and hmac broken? Wolfgang Walter @ 2010-01-30 2:27 ` Herbert Xu 2010-01-30 16:34 ` Wolfgang Walter 0 siblings, 1 reply; 8+ messages in thread From: Herbert Xu @ 2010-01-30 2:27 UTC (permalink / raw) To: Wolfgang Walter; +Cc: netdev, linux-kernel On Sat, Jan 30, 2010 at 12:44:15AM +0100, Wolfgang Walter wrote: > Hello, > > I upgraded some machines with VIA processors from (vanilla) 2.6.31 to > 2.6.32.7. > > If I build the kernel 2.6.32.7 with CONFIG_CRYPTO_DEV_PADLOCK_SHA=y and > padlock supports sha, hmac(sha1) is missing and IPSEC with hmac(sha1) no > longer is possible. Can you please attach the dmesg output so we can see if there were any error messages? Please also try "modprobe tcrypt mode=101". Thanks, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 2.6.32: padlock_sha1 and hmac broken? 2010-01-30 2:27 ` Herbert Xu @ 2010-01-30 16:34 ` Wolfgang Walter 2010-01-30 22:17 ` Herbert Xu 0 siblings, 1 reply; 8+ messages in thread From: Wolfgang Walter @ 2010-01-30 16:34 UTC (permalink / raw) To: Herbert Xu; +Cc: linux-kernel, netdev Am Samstag, 30. Januar 2010 schrieben Sie: > On Sat, Jan 30, 2010 at 12:44:15AM +0100, Wolfgang Walter wrote: > > Hello, > > > > I upgraded some machines with VIA processors from (vanilla) 2.6.31 to > > 2.6.32.7. > > > > If I build the kernel 2.6.32.7 with CONFIG_CRYPTO_DEV_PADLOCK_SHA=y and > > padlock supports sha, hmac(sha1) is missing and IPSEC with hmac(sha1) no > > longer is possible. > > Can you please attach the dmesg output so we can see if there > were any error messages? ============= E# disabled [ 0.144494] HPET not enabled in BIOS. You might try hpet=force boot option [ 0.144634] pci 0000:00:11.5: reg 10 io port: [0xec00-0xecff] [ 0.144698] pci 0000:00:11.5: supports D1 D2 [ 0.144787] pci 0000:01:00.0: reg 10 32bit mmio pref: [0xf4000000-0xf7ffffff] [ 0.144803] pci 0000:01:00.0: reg 14 32bit mmio: [0xfb000000-0xfbffffff] [ 0.144835] pci 0000:01:00.0: reg 30 32bit mmio pref: [0x000000-0x00ffff] [ 0.144865] pci 0000:01:00.0: supports D1 D2 [ 0.144921] pci 0000:00:01.0: bridge io port: [0xd000-0xdfff] [ 0.144933] pci 0000:00:01.0: bridge 32bit mmio: [0xfb000000-0xfcffffff] [ 0.144946] pci 0000:00:01.0: bridge 32bit mmio pref: [0xf4000000-0xf7ffffff] [ 0.144965] pci_bus 0000:00: on NUMA node 0 [ 0.144985] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.327624] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 6 7 10 11 12) *5 [ 0.328584] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 6 7 10 *11 12) [ 0.329501] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 6 7 *10 11 12) [ 0.330402] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 6 7 10 11 12) *0, disabled. [ 0.331336] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 6 7 10 11 12) *0, disabled. [ 0.332247] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 6 7 10 11 12) *0, disabled. [ 0.333159] ACPI: PCI Interrupt Link [LNK0] (IRQs 3 4 6 7 10 11 12) *0, disabled. [ 0.334095] ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 6 7 10 11 12) *0, disabled. [ 0.335140] ACPI: PCI Interrupt Link [ALKA] (IRQs *20) [ 0.335828] ACPI: PCI Interrupt Link [ALKB] (IRQs *21) [ 0.336519] ACPI: PCI Interrupt Link [ALKC] (IRQs *22) [ 0.337280] ACPI: PCI Interrupt Link [ALKD] (IRQs *23), disabled. [ 0.337998] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none [ 0.338080] vgaarb: loaded [ 0.338528] SCSI subsystem initialized [ 0.338658] libata version 3.00 loaded. [ 0.339062] usbcore: registered new interface driver usbfs [ 0.339205] usbcore: registered new interface driver hub [ 0.339364] usbcore: registered new device driver usb [ 0.339798] PCI: Using ACPI for IRQ routing [ 0.340410] Switching to clocksource tsc [ 0.340531] pnp: PnP ACPI init [ 0.340606] ACPI: bus type pnp registered [ 0.354181] pnp: PnP ACPI: found 11 devices [ 0.354252] ACPI: ACPI bus type pnp unregistered [ 0.354343] system 00:00: iomem range 0xf0000-0xfffff could not be reserved [ 0.354415] system 00:00: iomem range 0x1eee0000-0x1eefffff could not be reserved [ 0.354496] system 00:00: iomem range 0xffff0000-0xffffffff has been reserved [ 0.354568] system 00:00: iomem range 0x0-0x9ffff could not be reserved [ 0.354638] system 00:00: iomem range 0x100000-0x1eedffff could not be reserved [ 0.354717] system 00:00: iomem range 0xfec00000-0xfec00fff could not be reserved [ 0.354797] system 00:00: iomem range 0xfee00000-0xfee00fff has been reserved [ 0.354869] system 00:00: iomem range 0xfff80000-0xfffeffff has been reserved [ 0.354951] system 00:02: ioport range 0x400-0x47f has been reserved [ 0.355020] system 00:02: ioport range 0x500-0x50f has been reserved [ 0.355131] system 00:03: ioport range 0x4d0-0x4d1 has been reserved [ 0.355200] system 00:03: ioport range 0x800-0x87f has been reserved [ 0.355269] system 00:03: ioport range 0x880-0x8ff has been reserved [ 0.391005] pci 0000:00:01.0: PCI bridge, secondary bus 0000:01 [ 0.391081] pci 0000:00:01.0: IO window: 0xd000-0xdfff [ 0.391151] pci 0000:00:01.0: MEM window: 0xfb000000-0xfcffffff [ 0.391222] pci 0000:00:01.0: PREFETCH window: 0xf4000000-0xf7ffffff [ 0.391311] pci 0000:00:01.0: setting latency timer to 64 [ 0.391326] pci_bus 0000:00: resource 0 io: [0x00-0xffff] [ 0.391337] pci_bus 0000:00: resource 1 mem: [0x000000-0xffffffff] [ 0.391348] pci_bus 0000:01: resource 0 io: [0xd000-0xdfff] [ 0.391359] pci_bus 0000:01: resource 1 mem: [0xfb000000-0xfcffffff] [ 0.391370] pci_bus 0000:01: resource 2 pref mem [0xf4000000-0xf7ffffff] [ 0.391471] NET: Registered protocol family 2 [ 0.391849] IP route cache hash table entries: 4096 (order: 2, 16384 bytes) [ 0.392765] TCP established hash table entries: 16384 (order: 5, 131072 bytes) [ 0.393170] TCP bind hash table entries: 16384 (order: 4, 65536 bytes) [ 0.394127] TCP: Hash tables configured (established 16384 bind 16384) [ 0.394195] TCP reno registered [ 0.394459] NET: Registered protocol family 1 [ 0.394579] pci 0000:00:01.0: disabling DAC on VIA PCI bridge [ 0.394773] pci 0000:00:11.0: Bypassing VIA 8237 APIC De-Assert Message [ 0.394853] pci 0000:01:00.0: Boot video device [ 0.394985] Trying to unpack rootfs image as initramfs... [ 0.397158] rootfs image is not initramfs (no cpio magic); looks like an initrd [ 0.583043] Freeing initrd memory: 42677k freed [ 0.657473] cpufreq-nforce2: No nForce2 chipset. [ 0.667097] msgmni has been set to 970 [ 0.667379] alg: No test for cipher_null (cipher_null-generic) [ 0.667498] alg: No test for ecb(cipher_null) (ecb-cipher_null) [ 0.667610] alg: No test for digest_null (digest_null-generic) [ 0.667718] alg: No test for compress_null (compress_null-generic) [ 0.670760] alg: No test for fcrypt (fcrypt-generic) [ 0.679058] alg: No test for stdrng (krng) [ 0.716094] alg: No test for ghash (ghash-generic) [ 0.716212] io scheduler noop registered [ 0.716272] io scheduler anticipatory registered [ 0.716334] io scheduler deadline registered [ 0.716680] io scheduler cfq registered (default) [ 0.717179] fan PNP0C0B:00: registered as cooling_device0 [ 0.717255] ACPI: Fan [FAN] (on) [ 0.717565] processor LNXCPU:00: registered as cooling_device1 [ 0.719182] thermal LNXTHERM:01: registered as thermal_zone0 [ 0.719267] ACPI: Thermal Zone [THRM] (-248 C) [ 0.727205] Real Time Clock Driver v1.12b [ 0.727761] VIA RNG detected [ 0.727936] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled [ 0.728201] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.728473] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A [ 0.729423] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.729847] 00:09: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A [ 0.734418] brd: module loaded [ 0.736455] loop: module loaded [ 0.737003] sata_via 0000:00:0f.0: version 2.4 [ 0.737729] ACPI: PCI Interrupt Link [ALKA] enabled at IRQ 20 [ 0.737818] sata_via 0000:00:0f.0: PCI INT B -> Link[ALKA] -> GSI 20 (level, low) -> IRQ 20 [ 0.737980] sata_via 0000:00:0f.0: routed to hard irq line 11 [ 0.738200] scsi0 : sata_via [ 0.738633] scsi1 : sata_via [ 0.743265] ata1: SATA max UDMA/133 cmd 0xff00 ctl 0xfe00 bmdma 0xfb00 irq 20 [ 0.743344] ata2: SATA max UDMA/133 cmd 0xfd00 ctl 0xfc00 bmdma 0xfb08 irq 20 [ 0.744718] pata_via 0000:00:0f.1: version 0.3.4 [ 0.744767] pata_via 0000:00:0f.1: PCI INT A -> Link[ALKA] -> GSI 20 (level, low) -> IRQ 20 [ 0.745103] scsi2 : pata_via [ 0.745412] scsi3 : pata_via [ 0.749245] ata3: PATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xfa00 irq 14 [ 0.749322] ata4: PATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0xfa08 irq 15 [ 0.751538] Intel(R) PRO/1000 Network Driver - version 7.3.21-k5-NAPI [ 0.751614] Copyright (c) 1999-2006 Intel Corporation. [ 0.751788] e1000e: Intel(R) PRO/1000 Network Driver - 1.0.2-k2 [ 0.751854] e1000e: Copyright (c) 1999-2008 Intel Corporation. [ 0.752023] Intel(R) Gigabit Ethernet Network Driver - version 1.3.16-k2 [ 0.752091] Copyright (c) 2007-2009 Intel Corporation. [ 0.752247] Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008) [ 0.752318] bonding: Warning: either miimon or arp_interval and arp_ip_target module parameters must be specified, otherwise bonding will not detect link failures! see bonding.txt for details. [ 0.753414] Atheros(R) L2 Ethernet Driver - version 2.2.3 [ 0.753481] Copyright (c) 2007 Atheros Corporation. [ 0.753651] e100: Intel(R) PRO/100 Network Driver, 3.5.24-k2-NAPI [ 0.753717] e100: Copyright(c) 1999-2006 Intel Corporation [ 0.754053] via-rhine: Broken BIOS detected, avoid_D3 enabled. [ 0.754409] PPP generic driver version 2.4.2 [ 0.754714] PPP Deflate Compression module registered [ 0.754779] NET: Registered protocol family 24 [ 0.754865] PPPoL2TP kernel driver, V1.0 [ 0.755766] 8139too Fast Ethernet driver 0.9.28 [ 0.755863] 8139too 0000:00:05.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.757379] eth0: RealTek RTL8139 at 0xdf7d2000, 00:30:18:4c:69:5f, IRQ 16 [ 0.757495] 8139too 0000:00:06.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.758684] eth1: RealTek RTL8139 at 0xdf7d6000, 00:30:18:4c:69:5e, IRQ 17 [ 0.758785] 8139too 0000:00:07.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.760026] eth2: RealTek RTL8139 at 0xdf7da000, 00:30:18:4c:69:5d, IRQ 18 [ 0.760197] tun: Universal TUN/TAP device driver, 1.6 [ 0.760260] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> [ 0.761031] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.761857] ACPI: PCI Interrupt Link [ALKB] enabled at IRQ 21 [ 0.761940] ehci_hcd 0000:00:10.4: PCI INT C -> Link[ALKB] -> GSI 21 (level, low) -> IRQ 21 [ 0.762052] ehci_hcd 0000:00:10.4: EHCI Host Controller [ 0.762355] ehci_hcd 0000:00:10.4: new USB bus registered, assigned bus number 1 [ 0.762532] ehci_hcd 0000:00:10.4: irq 21, io mem 0xfdffc000 [ 0.769490] ehci_hcd 0000:00:10.4: USB 2.0 started, EHCI 1.00 [ 0.769830] usb usb1: configuration #1 chosen from 1 choice [ 0.770025] hub 1-0:1.0: USB hub found [ 0.770103] hub 1-0:1.0: 8 ports detected [ 0.770359] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.770533] uhci_hcd: USB Universal Host Controller Interface driver [ 0.770727] uhci_hcd 0000:00:10.0: PCI INT A -> Link[ALKB] -> GSI 21 (level, low) -> IRQ 21 [ 0.770820] uhci_hcd 0000:00:10.0: UHCI Host Controller [ 0.771050] uhci_hcd 0000:00:10.0: new USB bus registered, assigned bus number 2 [ 0.771162] uhci_hcd 0000:00:10.0: irq 21, io base 0x0000f900 [ 0.771537] usb usb2: configuration #1 chosen from 1 choice [ 0.771724] hub 2-0:1.0: USB hub found [ 0.771802] hub 2-0:1.0: 2 ports detected [ 0.771986] uhci_hcd 0000:00:10.1: PCI INT A -> Link[ALKB] -> GSI 21 (level, low) -> IRQ 21 [ 0.772076] uhci_hcd 0000:00:10.1: UHCI Host Controller [ 0.772300] uhci_hcd 0000:00:10.1: new USB bus registered, assigned bus number 3 [ 0.772412] uhci_hcd 0000:00:10.1: irq 21, io base 0x0000f800 [ 0.772780] usb usb3: configuration #1 chosen from 1 choice [ 0.773014] hub 3-0:1.0: USB hub found [ 0.773090] hub 3-0:1.0: 2 ports detected [ 0.773289] uhci_hcd 0000:00:10.2: PCI INT B -> Link[ALKB] -> GSI 21 (level, low) -> IRQ 21 [ 0.773381] uhci_hcd 0000:00:10.2: UHCI Host Controller [ 0.773597] uhci_hcd 0000:00:10.2: new USB bus registered, assigned bus number 4 [ 0.773709] uhci_hcd 0000:00:10.2: irq 21, io base 0x0000f700 [ 0.774087] usb usb4: configuration #1 chosen from 1 choice [ 0.774286] hub 4-0:1.0: USB hub found [ 0.774362] hub 4-0:1.0: 2 ports detected [ 0.774543] uhci_hcd 0000:00:10.3: PCI INT B -> Link[ALKB] -> GSI 21 (level, low) -> IRQ 21 [ 0.774632] uhci_hcd 0000:00:10.3: UHCI Host Controller [ 0.774849] uhci_hcd 0000:00:10.3: new USB bus registered, assigned bus number 5 [ 0.774961] uhci_hcd 0000:00:10.3: irq 21, io base 0x0000f600 [ 0.775332] usb usb5: configuration #1 chosen from 1 choice [ 0.775528] hub 5-0:1.0: USB hub found [ 0.775605] hub 5-0:1.0: 2 ports detected [ 0.775847] Initializing USB Mass Storage driver... [ 0.776082] usbcore: registered new interface driver usb-storage [ 0.776240] USB Mass Storage support registered. [ 0.776614] PNP: No PS/2 controller found. Probing ports directly. [ 0.952805] ata1: SATA link down 1.5 Gbps (SStatus 0 SControl 300) [ 1.039562] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 1.040107] mice: PS/2 mouse device common for all mice [ 1.040511] vt1211: Found VT1211 chip at 0x6000, revision 2 [ 1.040751] hwmon-vid: Unknown VRM version of your x86 CPU [ 1.041244] EDAC MC: Ver: 2.1.0 Jan 29 2010 [ 1.041624] cpuidle: using governor ladder [ 1.041985] padlock: Using VIA PadLock ACE for AES algorithm. [ 1.042208] padlock: Using VIA PadLock ACE for SHA1/SHA256 algorithms. [ 1.044696] usbcore: registered new interface driver hiddev [ 1.044855] usbcore: registered new interface driver usbhid [ 1.044921] usbhid: v2.6:USB HID core driver [ 1.045210] GACT probability on [ 1.045269] Mirror/redirect action on [ 1.045329] Simple TC action Loaded [ 1.046549] netem: version 1.2 [ 1.046610] u32 classifier [ 1.046664] Performance counters on [ 1.046722] input device check on [ 1.046779] Actions configured [ 1.046842] Netfilter messages via NETLINK v0.30. [ 1.047083] xt_time: kernel timezone is -0000 [ 1.048522] IPv4 over IPv4 tunneling driver [ 1.050009] GRE over IPv4 tunneling driver [ 1.051417] ip_tables: (C) 2000-2006 Netfilter Core Team [ 1.051547] arp_tables: (C) 2002 David S. Miller [ 1.051695] TCP cubic registered [ 1.051752] Initializing XFRM netlink socket [ 1.051816] IPv6: Loaded, but administratively disabled, reboot required to enable [ 1.051892] ipv6 ah init: can't add xfrm type [ 1.051952] ipv6 esp init: can't add xfrm type [ 1.052012] ipcomp6 init: can't add xfrm type [ 1.052089] ip6_tables: (C) 2000-2006 Netfilter Core Team [ 1.052212] IPv6 over IPv4 tunneling driver [ 1.054635] NET: Registered protocol family 17 [ 1.054715] NET: Registered protocol family 15 [ 1.055004] Bridge firewalling registered [ 1.055071] Ebtables v2.0 registered [ 1.055189] 802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com> [ 1.055256] All bugs added by David S. Miller <davem@redhat.com> [ 1.055363] Using IPI Shortcut mode [ 1.166687] ata2: SATA link down 1.5 Gbps (SStatus 0 SControl 300) [ 1.357068] ata4.00: ATA-0: TRANSCEND, 20070312, max MWDMA2 [ 1.357136] ata4.00: 996912 sectors, multi 0: LBA [ 1.370307] ata4.00: configured for PIO4 [ 1.390304] ata4.00: configured for PIO4 [ 1.390365] ata4: EH complete [ 1.403538] scsi 3:0:0:0: Direct-Access ATA TRANSCEND 2007 PQ: 0 ANSI: 5 [ 1.404179] sd 3:0:0:0: [sda] 996912 512-byte logical blocks: (510 MB/486 MiB) [ 1.404337] sd 3:0:0:0: [sda] Write Protect is off [ 1.404403] sd 3:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.404450] sd 3:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [ 1.404811] sda: sda1 [ 1.406838] sd 3:0:0:0: Attached scsi generic sg0 type 0 [ 1.407324] sd 3:0:0:0: [sda] Attached SCSI disk [ 1.426851] RAMDISK: gzip image found at block 0 [ 8.951329] VFS: Mounted root (ext2 filesystem) readonly on device 1:0. [ 8.951452] devtmpfs: mounted [ 8.951542] Freeing unused kernel memory: 316k freed [ 10.473262] IPv4 FIB: Using LC-trie version 0.409 [ 10.917146] eth2: link up, 100Mbps, full-duplex, lpa 0x41E1 [ 10.917722] eth1: link up, 100Mbps, full-duplex, lpa 0xC5E1 [ 10.918198] eth0: link up, 100Mbps, full-duplex, lpa 0x41E1 [ 11.885269] nf_conntrack version 0.5.0 (7766 buckets, 31064 max) [ 11.885768] CONFIG_NF_CT_ACCT is deprecated and will be removed soon. Please use [ 11.885778] nf_conntrack.acct=1 kernel parameter, acct=1 nf_conntrack module option or [ 11.885786] sysctl net.netfilter.nf_conntrack_acct=1 to enable it. ============= > > Please also try "modprobe tcrypt mode=101". > [ 474.947508] alg: hash: Failed to load transform for hmac(sha1): -2 [ 474.952660] alg: hash: Failed to load transform for hmac(sha1): -2 [ 474.952737] tcrypt: one or more tests failed! Regards, -- Wolfgang Walter Studentenwerk München Anstalt des öffentlichen Rechts ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 2.6.32: padlock_sha1 and hmac broken? 2010-01-30 16:34 ` Wolfgang Walter @ 2010-01-30 22:17 ` Herbert Xu 2010-01-31 2:11 ` Wolfgang Walter 0 siblings, 1 reply; 8+ messages in thread From: Herbert Xu @ 2010-01-30 22:17 UTC (permalink / raw) To: Wolfgang Walter; +Cc: linux-kernel, netdev, Linux Crypto Mailing List On Sat, Jan 30, 2010 at 05:34:45PM +0100, Wolfgang Walter wrote: > > > Please also try "modprobe tcrypt mode=101". > > [ 474.947508] alg: hash: Failed to load transform for hmac(sha1): -2 > [ 474.952660] alg: hash: Failed to load transform for hmac(sha1): -2 > [ 474.952737] tcrypt: one or more tests failed! Oops, it looks like this has been broken ever since we added prehashing to hmac. Please try this patch and let me know whether it makes it work again. diff --git a/drivers/crypto/padlock-sha.c b/drivers/crypto/padlock-sha.c index 0af8057..a1180ca 100644 --- a/drivers/crypto/padlock-sha.c +++ b/drivers/crypto/padlock-sha.c @@ -57,6 +57,20 @@ static int padlock_sha_update(struct shash_desc *desc, return crypto_shash_update(&dctx->fallback, data, length); } +static int padlock_sha_export(struct shash_desc *desc, void *out) +{ + struct padlock_sha_desc *dctx = shash_desc_ctx(desc); + + return crypto_shash_export(&dctx->fallback, out); +} + +static int padlock_sha_import(struct shash_desc *desc, const void *in) +{ + struct padlock_sha_desc *dctx = shash_desc_ctx(desc); + + return crypto_shash_import(&dctx->fallback, in); +} + static inline void padlock_output_block(uint32_t *src, uint32_t *dst, size_t count) { @@ -235,7 +249,10 @@ static struct shash_alg sha1_alg = { .update = padlock_sha_update, .finup = padlock_sha1_finup, .final = padlock_sha1_final, + .export = padlock_sha_export, + .import = padlock_sha_import, .descsize = sizeof(struct padlock_sha_desc), + .statesize = sizeof(struct sha1_state), .base = { .cra_name = "sha1", .cra_driver_name = "sha1-padlock", @@ -256,7 +273,10 @@ static struct shash_alg sha256_alg = { .update = padlock_sha_update, .finup = padlock_sha256_finup, .final = padlock_sha256_final, + .export = padlock_sha_export, + .import = padlock_sha_import, .descsize = sizeof(struct padlock_sha_desc), + .statesize = sizeof(struct sha256_state), .base = { .cra_name = "sha256", .cra_driver_name = "sha256-padlock", Thanks, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 2.6.32: padlock_sha1 and hmac broken? 2010-01-30 22:17 ` Herbert Xu @ 2010-01-31 2:11 ` Wolfgang Walter 2010-01-31 9:22 ` Herbert Xu 0 siblings, 1 reply; 8+ messages in thread From: Wolfgang Walter @ 2010-01-31 2:11 UTC (permalink / raw) To: Herbert Xu; +Cc: linux-kernel, netdev, Linux Crypto Mailing List Am Samstag, 30. Januar 2010 schrieb Herbert Xu: > On Sat, Jan 30, 2010 at 05:34:45PM +0100, Wolfgang Walter wrote: > > > Please also try "modprobe tcrypt mode=101". > > > > [ 474.947508] alg: hash: Failed to load transform for hmac(sha1): -2 > > [ 474.952660] alg: hash: Failed to load transform for hmac(sha1): -2 > > [ 474.952737] tcrypt: one or more tests failed! > > Oops, it looks like this has been broken ever since we added > prehashing to hmac. > > Please try this patch and let me know whether it makes it work > again. > > diff --git a/drivers/crypto/padlock-sha.c b/drivers/crypto/padlock-sha.c > index 0af8057..a1180ca 100644 > --- a/drivers/crypto/padlock-sha.c > +++ b/drivers/crypto/padlock-sha.c > @@ -57,6 +57,20 @@ static int padlock_sha_update(struct shash_desc *desc, > return crypto_shash_update(&dctx->fallback, data, length); > } > > +static int padlock_sha_export(struct shash_desc *desc, void *out) > +{ > + struct padlock_sha_desc *dctx = shash_desc_ctx(desc); > + > + return crypto_shash_export(&dctx->fallback, out); > +} > + > +static int padlock_sha_import(struct shash_desc *desc, const void *in) > +{ > + struct padlock_sha_desc *dctx = shash_desc_ctx(desc); > + > + return crypto_shash_import(&dctx->fallback, in); > +} > + > static inline void padlock_output_block(uint32_t *src, > uint32_t *dst, size_t count) > { > @@ -235,7 +249,10 @@ static struct shash_alg sha1_alg = { > .update = padlock_sha_update, > .finup = padlock_sha1_finup, > .final = padlock_sha1_final, > + .export = padlock_sha_export, > + .import = padlock_sha_import, > .descsize = sizeof(struct padlock_sha_desc), > + .statesize = sizeof(struct sha1_state), > .base = { > .cra_name = "sha1", > .cra_driver_name = "sha1-padlock", > @@ -256,7 +273,10 @@ static struct shash_alg sha256_alg = { > .update = padlock_sha_update, > .finup = padlock_sha256_finup, > .final = padlock_sha256_final, > + .export = padlock_sha_export, > + .import = padlock_sha_import, > .descsize = sizeof(struct padlock_sha_desc), > + .statesize = sizeof(struct sha256_state), > .base = { > .cra_name = "sha256", > .cra_driver_name = "sha256-padlock", > > Thanks, Not sure. When I do modprobe tcrypt mode=101 I get a kernel oops: [ 113.074210] BUG: unable to handle kernel NULL pointer dereference at 00000034 [ 113.074375] IP: [<dfc92042>] padlock_sha_import+0xa/0x15 [padlock_sha] [ 113.074493] *pde = 00000000 [ 113.074590] Oops: 0000 [#1] PREEMPT [ 113.074727] last sysfs file: /sys/module/vt/parameters/default_utf8 [ 113.074792] Modules linked in: tcrypt(+) padlock_sha nf_conntrack_tftp nf_conntrack_sip nf_conntrack_sane nf_conntrack_ftp xt_connlimit xt_connbytes xt_CONNMARK xt_connmark xt_helper xt_NOTRACK xt_conntrack nf_conntrack_ipv4 nf_conntrack nf_defrag_ipv4 [ 113.075595] [ 113.075653] Pid: 1701, comm: cryptomgr_test Not tainted (2.6.32.7 #1) [ 113.075722] EIP: 0060:[<dfc92042>] EFLAGS: 00010246 CPU: 0 [ 113.075789] EIP is at padlock_sha_import+0xa/0x15 [padlock_sha] [ 113.075855] EAX: 00000000 EBX: d74619f8 ECX: dfc925d4 EDX: cd280238 [ 113.075923] ESI: dc0d2a2c EDI: d74619f0 EBP: cdb77d80 ESP: cdb77d7c [ 113.075990] DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068 [ 113.076057] Process cryptomgr_test (pid: 1701, ti=cdb76000 task=d97d3b80 task.ti=cdb76000) [ 113.076133] Stack: [ 113.076187] cd280238 cdb77d94 c01ec148 00000000 d74619c0 d74619e8 cdb77d9c c01ec165 [ 113.076671] <0> cdb77db4 c01e9581 00000008 d74619c0 00000000 00000000 cdb77dbc c01e95b6 [ 113.076671] <0> cdb77dd4 c01e89c5 c01e959c c056fdd8 00000000 cd489008 cdb77ddc c01e89dd [ 113.076671] Call Trace: [ 113.076671] [<c01ec148>] ? hmac_import+0x3b/0x40 [ 113.076671] [<c01ec165>] ? hmac_init+0x18/0x1a [ 113.076671] [<c01e9581>] ? shash_ahash_digest+0x8c/0xa7 [ 113.076671] [<c01e95b6>] ? shash_async_digest+0x1a/0x1c [ 113.076671] [<c01e89c5>] ? crypto_ahash_op+0x8f/0x99 [ 113.076671] [<c01e959c>] ? shash_async_digest+0x0/0x1c [ 113.076671] [<c01e89dd>] ? crypto_ahash_digest+0xe/0x10 [ 113.076671] [<c01ea4cb>] ? test_hash+0x17c/0x4fd [ 113.076671] [<c01e4643>] ? crypto_larval_lookup+0x30/0xfe [ 113.076671] [<c01e4278>] ? crypto_alloc_tfm+0x3d/0x71 [ 113.076671] [<c01e9114>] ? crypto_alloc_shash+0x10/0x12 [ 113.076671] [<dfc92429>] ? padlock_cra_init+0x1c/0x4b [padlock_sha] [ 113.076671] [<c01e420c>] ? crypto_create_tfm+0x59/0x88 [ 113.076671] [<c01e4eb4>] ? crypto_spawn_tfm2+0x20/0x37 [ 113.076671] [<c01ec551>] ? hmac_init_tfm+0x1b/0x46 [ 113.076671] [<c01e420c>] ? crypto_create_tfm+0x59/0x88 [ 113.076671] [<c01ea88b>] ? alg_test_hash+0x3f/0x55 [ 113.076671] [<c01ec06b>] ? alg_test+0x168/0x1e9 [ 113.076671] [<c011c37e>] ? pick_next_task_fair+0x8b/0xb5 [ 113.076671] [<c0440b4e>] ? schedule+0x1db/0x382 [ 113.076671] [<c01e9a0e>] ? cryptomgr_test+0x0/0x3e [ 113.076671] [<c01e9a30>] ? cryptomgr_test+0x22/0x3e [ 113.076671] [<c01308ef>] ? kthread+0x60/0x65 [ 113.076671] [<c013088f>] ? kthread+0x0/0x65 [ 113.076671] [<c0103147>] ? kernel_thread_helper+0x7/0x10 [ 113.076671] Code: 41 04 89 c8 8b 52 34 ff 52 d4 5d c3 55 89 e5 53 8d 58 08 8b 40 08 8b 48 34 89 d8 ff 51 e8 5b 5d c3 55 89 e5 53 8d 58 08 8b 40 08 <8b> 48 34 89 d8 ff 51 ec 5b 5d c3 55 89 e5 53 8d 58 08 8b 40 04 [ 113.076671] EIP: [<dfc92042>] padlock_sha_import+0xa/0x15 [padlock_sha] SS:ESP 0068:cdb77d7c [ 113.076671] CR2: 0000000000000034 [ 113.092662] ---[ end trace d25b6d64215b111e ]--- [ 123.233370] alg: hash: Failed to load transform for hmac(sha1): -4 [ 123.233472] alg: hash: Failed to load transform for hmac(sha1): -4 [ 123.233538] tcrypt: one or more tests failed! Regards, -- Wolfgang Walter Studentenwerk München Anstalt des öffentlichen Rechts ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 2.6.32: padlock_sha1 and hmac broken? 2010-01-31 2:11 ` Wolfgang Walter @ 2010-01-31 9:22 ` Herbert Xu 2010-01-31 13:37 ` Wolfgang Walter 0 siblings, 1 reply; 8+ messages in thread From: Herbert Xu @ 2010-01-31 9:22 UTC (permalink / raw) To: Wolfgang Walter; +Cc: linux-kernel, netdev, Linux Crypto Mailing List On Sun, Jan 31, 2010 at 03:11:22AM +0100, Wolfgang Walter wrote: > > Not sure. > > When I do > > modprobe tcrypt mode=101 > > I get a kernel oops: Sorry, this one should have a better chance at working. diff --git a/drivers/crypto/padlock-sha.c b/drivers/crypto/padlock-sha.c index 0af8057..d3a27e0 100644 --- a/drivers/crypto/padlock-sha.c +++ b/drivers/crypto/padlock-sha.c @@ -57,6 +57,23 @@ static int padlock_sha_update(struct shash_desc *desc, return crypto_shash_update(&dctx->fallback, data, length); } +static int padlock_sha_export(struct shash_desc *desc, void *out) +{ + struct padlock_sha_desc *dctx = shash_desc_ctx(desc); + + return crypto_shash_export(&dctx->fallback, out); +} + +static int padlock_sha_import(struct shash_desc *desc, const void *in) +{ + struct padlock_sha_desc *dctx = shash_desc_ctx(desc); + struct padlock_sha_ctx *ctx = crypto_shash_ctx(desc->tfm); + + dctx->fallback.tfm = ctx->fallback; + dctx->fallback.flags = desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP; + return crypto_shash_import(&dctx->fallback, in); +} + static inline void padlock_output_block(uint32_t *src, uint32_t *dst, size_t count) { @@ -235,7 +252,10 @@ static struct shash_alg sha1_alg = { .update = padlock_sha_update, .finup = padlock_sha1_finup, .final = padlock_sha1_final, + .export = padlock_sha_export, + .import = padlock_sha_import, .descsize = sizeof(struct padlock_sha_desc), + .statesize = sizeof(struct sha1_state), .base = { .cra_name = "sha1", .cra_driver_name = "sha1-padlock", @@ -256,7 +276,10 @@ static struct shash_alg sha256_alg = { .update = padlock_sha_update, .finup = padlock_sha256_finup, .final = padlock_sha256_final, + .export = padlock_sha_export, + .import = padlock_sha_import, .descsize = sizeof(struct padlock_sha_desc), + .statesize = sizeof(struct sha256_state), .base = { .cra_name = "sha256", .cra_driver_name = "sha256-padlock", Thanks, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 2.6.32: padlock_sha1 and hmac broken? 2010-01-31 9:22 ` Herbert Xu @ 2010-01-31 13:37 ` Wolfgang Walter 2010-01-31 23:18 ` Herbert Xu 0 siblings, 1 reply; 8+ messages in thread From: Wolfgang Walter @ 2010-01-31 13:37 UTC (permalink / raw) To: Herbert Xu; +Cc: linux-kernel, netdev, Linux Crypto Mailing List Am Sonntag, 31. Januar 2010 schrieb Herbert Xu: > On Sun, Jan 31, 2010 at 03:11:22AM +0100, Wolfgang Walter wrote: > > Not sure. > > > > When I do > > > > modprobe tcrypt mode=101 > > > > I get a kernel oops: > > Sorry, this one should have a better chance at working. > > diff --git a/drivers/crypto/padlock-sha.c b/drivers/crypto/padlock-sha.c > index 0af8057..d3a27e0 100644 > --- a/drivers/crypto/padlock-sha.c > +++ b/drivers/crypto/padlock-sha.c > @@ -57,6 +57,23 @@ static int padlock_sha_update(struct shash_desc *desc, > return crypto_shash_update(&dctx->fallback, data, length); > } > > +static int padlock_sha_export(struct shash_desc *desc, void *out) > +{ > + struct padlock_sha_desc *dctx = shash_desc_ctx(desc); > + > + return crypto_shash_export(&dctx->fallback, out); > +} > + > +static int padlock_sha_import(struct shash_desc *desc, const void *in) > +{ > + struct padlock_sha_desc *dctx = shash_desc_ctx(desc); > + struct padlock_sha_ctx *ctx = crypto_shash_ctx(desc->tfm); > + > + dctx->fallback.tfm = ctx->fallback; > + dctx->fallback.flags = desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP; > + return crypto_shash_import(&dctx->fallback, in); > +} > + > static inline void padlock_output_block(uint32_t *src, > uint32_t *dst, size_t count) > { > @@ -235,7 +252,10 @@ static struct shash_alg sha1_alg = { > .update = padlock_sha_update, > .finup = padlock_sha1_finup, > .final = padlock_sha1_final, > + .export = padlock_sha_export, > + .import = padlock_sha_import, > .descsize = sizeof(struct padlock_sha_desc), > + .statesize = sizeof(struct sha1_state), > .base = { > .cra_name = "sha1", > .cra_driver_name = "sha1-padlock", > @@ -256,7 +276,10 @@ static struct shash_alg sha256_alg = { > .update = padlock_sha_update, > .finup = padlock_sha256_finup, > .final = padlock_sha256_final, > + .export = padlock_sha_export, > + .import = padlock_sha_import, > .descsize = sizeof(struct padlock_sha_desc), > + .statesize = sizeof(struct sha256_state), > .base = { > .cra_name = "sha256", > .cra_driver_name = "sha256-padlock", > > Thanks, This patch works. /proc/crypto shows name : authenc(hmac(sha1),cbc(aes)) driver : authenc(hmac(sha1-padlock),cbc-aes-padlock) module : kernel priority : 4300 refcnt : 85 selftest : passed type : aead async : yes blocksize : 16 ivsize : 16 maxauthsize : 20 geniv : <built-in> .... .... and modprobe tcrypt mode=101 logs nothing. Thanks a lot, -- Wolfgang Walter Studentenwerk München Anstalt des öffentlichen Rechts ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 2.6.32: padlock_sha1 and hmac broken? 2010-01-31 13:37 ` Wolfgang Walter @ 2010-01-31 23:18 ` Herbert Xu 0 siblings, 0 replies; 8+ messages in thread From: Herbert Xu @ 2010-01-31 23:18 UTC (permalink / raw) To: Wolfgang Walter; +Cc: linux-kernel, netdev, Linux Crypto Mailing List On Sun, Jan 31, 2010 at 02:37:55PM +0100, Wolfgang Walter wrote: > > This patch works. /proc/crypto shows > > name : authenc(hmac(sha1),cbc(aes)) > driver : authenc(hmac(sha1-padlock),cbc-aes-padlock) > module : kernel > priority : 4300 > refcnt : 85 > selftest : passed > type : aead > async : yes > blocksize : 16 > ivsize : 16 > maxauthsize : 20 > geniv : <built-in> Thank you for checking! I've added this patch into crypto-2.6 and will push to stable when it is merged upstream. commit 137bb21e8f03758eeffb464a5033338f34446b4e Author: Herbert Xu <herbert@gondor.apana.org.au> Date: Mon Feb 1 09:17:56 2010 +1100 crypto: padlock-sha - Add import/export support As the padlock driver for SHA uses a software fallback to perform partial hashing, it must implement custom import/export functions. Otherwise hmac which depends on import/export for prehashing will not work with padlock-sha. Reported-by: Wolfgang Walter <wolfgang.walter@stwm.de> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> diff --git a/drivers/crypto/padlock-sha.c b/drivers/crypto/padlock-sha.c index 0af8057..d3a27e0 100644 --- a/drivers/crypto/padlock-sha.c +++ b/drivers/crypto/padlock-sha.c @@ -57,6 +57,23 @@ static int padlock_sha_update(struct shash_desc *desc, return crypto_shash_update(&dctx->fallback, data, length); } +static int padlock_sha_export(struct shash_desc *desc, void *out) +{ + struct padlock_sha_desc *dctx = shash_desc_ctx(desc); + + return crypto_shash_export(&dctx->fallback, out); +} + +static int padlock_sha_import(struct shash_desc *desc, const void *in) +{ + struct padlock_sha_desc *dctx = shash_desc_ctx(desc); + struct padlock_sha_ctx *ctx = crypto_shash_ctx(desc->tfm); + + dctx->fallback.tfm = ctx->fallback; + dctx->fallback.flags = desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP; + return crypto_shash_import(&dctx->fallback, in); +} + static inline void padlock_output_block(uint32_t *src, uint32_t *dst, size_t count) { @@ -235,7 +252,10 @@ static struct shash_alg sha1_alg = { .update = padlock_sha_update, .finup = padlock_sha1_finup, .final = padlock_sha1_final, + .export = padlock_sha_export, + .import = padlock_sha_import, .descsize = sizeof(struct padlock_sha_desc), + .statesize = sizeof(struct sha1_state), .base = { .cra_name = "sha1", .cra_driver_name = "sha1-padlock", @@ -256,7 +276,10 @@ static struct shash_alg sha256_alg = { .update = padlock_sha_update, .finup = padlock_sha256_finup, .final = padlock_sha256_final, + .export = padlock_sha_export, + .import = padlock_sha_import, .descsize = sizeof(struct padlock_sha_desc), + .statesize = sizeof(struct sha256_state), .base = { .cra_name = "sha256", .cra_driver_name = "sha256-padlock", Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2010-01-31 23:18 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2010-01-29 23:44 2.6.32: padlock_sha1 and hmac broken? Wolfgang Walter 2010-01-30 2:27 ` Herbert Xu 2010-01-30 16:34 ` Wolfgang Walter 2010-01-30 22:17 ` Herbert Xu 2010-01-31 2:11 ` Wolfgang Walter 2010-01-31 9:22 ` Herbert Xu 2010-01-31 13:37 ` Wolfgang Walter 2010-01-31 23:18 ` Herbert Xu
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®