if (!f->hmac_running)
return 0;
- log_debug("Writing tag for epoch %llu\n", (unsigned long long) FSPRG_GetEpoch(f->fsprg_state));
-
assert(f->hmac);
r = journal_file_append_object(f, OBJECT_TAG, sizeof(struct TagObject), &o, &p);
o->tag.seqnum = htole64(journal_file_tag_seqnum(f));
o->tag.epoch = htole64(FSPRG_GetEpoch(f->fsprg_state));
+ log_debug("Writing tag %llu for epoch %llu\n",
+ (unsigned long long) le64toh(o->tag.seqnum),
+ (unsigned long long) FSPRG_GetEpoch(f->fsprg_state));
+
/* Add the tag object itself, so that we can protect its
* header. This will exclude the actual hash value in it */
r = journal_file_hmac_put_object(f, OBJECT_TAG, p);
if (r < 0)
return r;
- r = journal_file_hmac_start(f);
- if (r < 0)
- return r;
-
return 0;
}
/* FIXME:
*
- * - write tag only if non-tag objects have been written
* - write bit mucking test
* - tag timestamps should be between entry timestamps
* - output validated time ranges
goto fail;
}
+ log_debug("Checking tag %llu..", (unsigned long long) le64toh(o->tag.seqnum));
+
if (le64toh(o->tag.seqnum) != n_tags + 1) {
log_error("Tag sequence number out of synchronization at %llu", (unsigned long long) p);
r = -EBADMSG;