wrong digest value using scatterlist crypto API
Hi all, In order to test kernel crypto API, I tried different methods for computing a SHA1 digest. First, I tried sockets with AF_ALG. Then, I tried ioctl with /dev/crypto after loading cryptodev.ko module. These two methods returned the same hash value as the one computed by OpenSSL over the same input buffer. My input is simply a 5 bytes table where each byte is equal to 0x0a. The SHA1 output is the following: 31 78 9a ce 8f db 0f ae 29 76 e8 30 3b 61 4c 51 d0 a1 39 a9. Then, I tried scatterlist crypto API. So, I tested the following module: int init_module(void) { uint8_t i=0, buf[20]={0}, m[5]={0x0a,0x0a,0x0a,0x0a,0x0a}; struct scatterlist sg; struct hash_desc desc; MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("sha1 test with crypto API"); MODULE_AUTHOR("aymen<aymen.irt@gmail.com>"); MODULE_ALIAS("cryptoapi test"); printk(KERN_INFO "\nScatterlist crypto API test\n"); desc.flags = 0; desc.tfm = crypto_alloc_hash("sha1", 0, CRYPTO_ALG_ASYNC); if(!desc.tfm){ printk(KERN_INFO "Error\n"); } sg_init_one(&sg, m, 5); crypto_hash_init(&desc); crypto_hash_update(&desc, &sg, 1); crypto_hash_final(&desc, buf); crypto_free_hash(desc.tfm); printk("\n"); for (i=0; i<20; i++) printk("%02x ", buf[i]); printk("\n"); return 0; } void cleanup_module(void) { printk(KERN_INFO "\nScatterlist crypto API test end...\n"); } My problem is when I insmod my test_cryptoapi.ko, i get a wrong SHA1 output. In fact, I get the following SHA1 digest: ad c8 3b 19 e7 93 49 1b 1c 6e a0 fd 8b 46 cd 9f 32 e5 92 fc. I would be grateful for any hint about this problem. Best regards, Aymen
participants (1)
-
aymen irt