- rmd160_ctx h;
- rmd160_init(&h);
- rmd160_hash(&h, k->u.k.k, 4);
- rmd160_hash(&h, buf, strlen(buf));
- rmd160_done(&h, hash);
- BURN(h);
- BURN(buf);
+ rmd160_mackey mk;
+ rmd160_macctx mc;
+ rmd160_hmacinit(&mk, b + RMD160_HASHSZ, RMD160_HASHSZ);
+ rmd160_macinit(&mc, &mk);
+ rmd160_machash(&mc, k->u.k.k + RMD160_HASHSZ * 2, sz);
+ rmd160_macdone(&mc, b + RMD160_HASHSZ);
+ if (memcmp(b + RMD160_HASHSZ, k->u.k.k + RMD160_HASHSZ,
+ RMD160_HASHSZ) != 0) {
+ passphrase_cancel(tag);
+ goto fail;
+ }
+ BURN(mk);
+ BURN(mc);