getSenderKey method
SenderMessageKey
getSenderKey(
- SenderKeyState senderKeyState,
- int iteration
)
Implementation
SenderMessageKey getSenderKey(SenderKeyState senderKeyState, int iteration) {
var senderChainKey = senderKeyState.senderChainKey;
if (senderChainKey.iteration > iteration) {
if (senderKeyState.hasSenderMessageKey(iteration)) {
return senderKeyState.removeSenderMessageKey(iteration)!;
} else {
throw DuplicateMessageException('Received message with old counter: '
'${senderChainKey.iteration} , $iteration');
}
}
if (iteration - senderChainKey.iteration > 2000) {
throw InvalidMessageException('Over 2000 messages into the future!');
}
while (senderChainKey.iteration < iteration) {
senderKeyState.addSenderMessageKey(senderChainKey.senderMessageKey);
senderChainKey = senderChainKey.next;
}
senderKeyState.senderChainKey = senderChainKey.next;
return senderChainKey.senderMessageKey;
}