On Wed, Nov 23, 2011 at 8:08 AM, Steffen Klassert <steffen.klassert@xxxxxxxxxxx> wrote: > Hi. > > On Wed, Nov 23, 2011 at 12:00:29AM +0200, Kasatkin, Dmitry wrote: >> Hi, >> >> I have noticed very odd behavior with hmac calculation on my dual >> core, 4 HTs PC. >> I am using async hash API to to calculate hmac over the page. >> I am using "hmac(sha1)" and the same key to calculate different pages. >> >> I have a work queue, which calculates the hmac like... >> >> int() >> { >> tfm = crypto_alloc_ahash(...); >> } >> >> work_task() >> { >> crypto_ahash_setkey(tfm, key, keylen); >> crypto_ahash_digest(req); >> } >> >> HMAC result "sometimes" is incorrect. > > Looks like a race. HMAC precalculates the hash of the ipaded/opaded key > and saves this hash on the transform. So the setkey method should be used > just once in the initialization path. > >> >> But when I move crypto_ahash_setkey() do the initialization code then >> HMAC result is always correct... >> (key is the same, so I can initialize it only once) >> >> int() >> { >> tfm = crypto_alloc_ahash(...); >> crypto_ahash_setkey(tfm, key, keylen); >> } > > That's how it should be. And in this case it works, as you > already noticed :) > > Thanks... See my another reply... -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html