Could you emphasize - why exactly introducing private
header is such a disaster that
we have to waste time and efforts trying to not let it happen?
- It's a useless file that's used at exactly 1 place and not even for
code used in installed libs but just for the test. At that point you
might just as well just pre-declare them in the test source file
directly.
- It prevents making those function static
- It requires static linking for the test
- For the A5/[3/4] you bypass the osmo_a5 wrapper and thus don't cover
a breakage that would happen there.
The alternative solves all of the above and requires exactly 1 lines
changes in the original _a5_4 function :
uint32_t fn_count = (fn_correct) ? osmo_a5_fn_count(fn) : fn;
becomes
uint32_t fn_count = (fn & (1<<31)) ? (fn & ~(1<<31)) :
osmo_a5_fn_count(fn);
btw, in your test I also see
+ osmo_a5(4, key, osmo_a5_fn(count), dlout, NULL);
+ osmo_a5(4, key, osmo_a5_fn(count), NULL, ulout);
Why separate ? The case where both dlout and ulout are requested at
the same time should work as well.
Cheers,
Sylvain