- if (mac && GM_CLASS(mac) == master->algs.m && oseq < 0x07ffffff) return;
- if (mac) GM_DESTROY(mac);
- assert(master->algs.mksz < sizeof(buf_t));
- rand_get(RAND_GLOBAL, buf_t, master->algs.mksz);
- mac = GM_KEY(master->algs.m, buf_t, master->algs.mksz);
+ if (bchal && bchal->ops == master->algs.bulk->ops && oseq < 0x07ffffff)
+ return;
+ if (bchal) bchal->ops->freechal(bchal);
+ bchal = master->algs.bulk->ops->genchal(master->algs.bulk);
+ bchal->ops = master->algs.bulk->ops;