I started to implement some MAC since last week with the specifications given here. I'm currently testing the OMAC (one-key CBC) with test vectors. In the OMAC specifications at page 4, they explain how the padding works. Just below that, they said :
[...] Where the empty string counts as one block.
This is strange, because the block is empty and that cause me a problem. How could I use M[i]
and Xor it with Y[i-1]
if M[i]
is empty ? (see the algorithm definition at page 8)
Following this question, should I pad the message to get a full block before working with M
even if the padding is applied after the for-loop ? I think this would be logic but am I right with this logic ?
A clear explanation of that will be very appreciated. Thanks for all help I'll got.