GH_HASH(h, t, sizeof(t));
GH_HASH(h, pseq, SEQSZ + ivsz + sz);
mac = GH_DONE(h, 0);
- eq = !memcmp(mac, pmac, tagsz);
+ eq = ct_memeq(mac, pmac, tagsz);
IF_TRACING(T_KEYSET, {
trace_block(T_CRYPTO, "crypto: computed MAC", mac, tagsz);
})
keyset *ks = CREATE(keyset);
time_t now = time(0);
const octet *pp = k;
+ const algswitch *algs = &p->kx.kpriv->algs;
T( static unsigned seq = 0; )
T( trace(T_KEYSET, "keyset: adding new keyset %u", seq); )
#define HASH_in MINE; YOURS; OURS
#define HASH_out YOURS; MINE; OURS
-#define INIT_c(k) GC_INIT(algs.c, (k), algs.cksz)
-#define INIT_m(k) GM_KEY(algs.m, (k), algs.mksz)
+#define INIT_c(k) GC_INIT(algs->c, (k), algs->cksz)
+#define INIT_m(k) GM_KEY(algs->m, (k), algs->mksz)
#define STR_c "encryption"
#define STR_m "integrity"
#define STR_in "incoming"
#define STR_out "outgoing"
#define SETKEY(a, dir) do { \
- h = GH_INIT(algs.h); \
+ h = GH_INIT(algs->h); \
HASH_STRING(h, "tripe-" STR_##a); \
HASH_##dir; \
hh = GH_DONE(h, 0); \
IF_TRACING(T_KEYSET, { \
trace_block(T_CRYPTO, "crypto: " STR_##dir " key " STR_##a, \
- hh, algs.a##ksz); \
+ hh, algs->a##ksz); \
}) \
ks->a##dir = INIT_##a(hh); \
GH_DESTROY(h); \
T( ks->seq = seq++; )
ks->ref = 1;
ks->t_exp = now + T_EXP;
- ks->sz_exp = algs.expsz;
- ks->sz_regen = algs.expsz/2;
+ ks->sz_exp = algs->expsz;
+ ks->sz_regen = algs->expsz/2;
ks->oseq = 0;
seq_reset(&ks->iseq);
ks->next = 0;
ks->p = p;
ks->f = KSF_LISTEN;
- ks->tagsz = algs.tagsz;
+ ks->tagsz = algs->tagsz;
return (ks);
}
-/* --- @ks_tregen@ --- *
- *
- * Arguments: @keyset *ks@ = pointer to a keyset
- *
- * Returns: The time at which moves ought to be made to replace this key.
- */
-
-time_t ks_tregen(keyset *ks) { return (ks->t_exp - T_EXP + T_REGEN); }
-
/* --- @ks_activate@ --- *
*
* Arguments: @keyset *ks@ = pointer to a keyset