Lines Matching refs:keypair

215 			WG_KEYPAIR *keypair;  in WgsProcessDatagrams()  local
228 keypair = WgsProcessHandshakeInit(server, data, ephemeral_remote); in WgsProcessDatagrams()
229 if (keypair == NULL) in WgsProcessDatagrams()
236 reply = WgsCreateHandshakeReply(server, keypair, ephemeral_remote); in WgsProcessDatagrams()
243 Zero(keypair, sizeof(WG_KEYPAIR)); in WgsProcessDatagrams()
244 Free(keypair); in WgsProcessDatagrams()
256 AddInterrupt(server->InterruptManager, keypair->CreationTime + WG_REJECT_AFTER_TIME); in WgsProcessDatagrams()
502 WG_KEYPAIR *keypair = NULL; in WgsProcessHandshakeInit() local
573 keypair = ZeroMalloc(sizeof(WG_KEYPAIR)); in WgsProcessHandshakeInit()
574 keypair->State = WG_KEYPAIR_INITIATED; in WgsProcessHandshakeInit()
575 keypair->CreationTime = server->Now; in WgsProcessHandshakeInit()
576 keypair->IndexLocal = Rand32(); in WgsProcessHandshakeInit()
577 keypair->IndexRemote = init->SenderIndex; in WgsProcessHandshakeInit()
584 return keypair; in WgsProcessHandshakeInit()
587 WG_HANDSHAKE_REPLY *WgsCreateHandshakeReply(WG_SERVER *server, WG_KEYPAIR *keypair, const BYTE *eph… in WgsCreateHandshakeReply() argument
596 if (server == NULL || keypair == NULL || ephemeral_remote == NULL) in WgsCreateHandshakeReply()
601 if (keypair->State != WG_KEYPAIR_INITIATED) in WgsCreateHandshakeReply()
603 Debug("WgsCreateHandshakeReply(): unexpected keypair state %u!\n", keypair->State); in WgsCreateHandshakeReply()
611 ret->SenderIndex = keypair->IndexLocal; in WgsCreateHandshakeReply()
612 ret->ReceiverIndex = keypair->IndexRemote; in WgsCreateHandshakeReply()
659 WgsHKDF(keypair->KeyRemote, keypair->KeyLocal, NULL, NULL, 0, session->ChainingKey); in WgsCreateHandshakeReply()
660 keypair->State = WG_KEYPAIR_CONFIRMED; in WgsCreateHandshakeReply()
662 …gsCreateHandshakeReply(): new keypair available: %x -> %x\n", keypair->IndexRemote, keypair->Index… in WgsCreateHandshakeReply()
674 …"WgsCreateHandshakeReply(): switched to keypair: %x -> %x\n", keypair->IndexRemote, keypair->Index… in WgsCreateHandshakeReply()
675 keypairs->Current = keypair; in WgsCreateHandshakeReply()
680 keypairs->Next = keypair; in WgsCreateHandshakeReply()
694 WG_KEYPAIR *keypair; in WgsProcessTransportData() local
709 keypair = keypairs->Current; in WgsProcessTransportData()
711 if (data->ReceiverIndex != keypair->IndexLocal) in WgsProcessTransportData()
724 keypairs->Previous = keypair; in WgsProcessTransportData()
725 keypairs->Current = keypair = keypairs->Next; in WgsProcessTransportData()
727 …"WgsProcessTransportData(): switched to keypair: %x -> %x\n", keypair->IndexRemote, keypair->Index… in WgsProcessTransportData()
731 keypair = previous; in WgsProcessTransportData()
740 if (WgsIsInReplayWindow(keypair, data->Counter)) in WgsProcessTransportData()
746 …written = WgsDecryptData(keypair->KeyRemote, data->Counter, data->EncapsulatedPacket, data->Encaps… in WgsProcessTransportData()
755 WgsLog(server, "LW_KEYPAIR_EXPIRED", keypair->IndexRemote, keypair->IndexLocal); in WgsProcessTransportData()
759 WgsUpdateReplayWindow(keypair, data->Counter); in WgsProcessTransportData()
803 WG_KEYPAIR *keypair; in WgsCreateTransportData() local
811 keypair = server->Session.Keypairs.Current; in WgsCreateTransportData()
812 if (keypair == NULL) in WgsCreateTransportData()
818 if (keypair->CounterLocal > WG_REJECT_AFTER_MESSAGES) in WgsCreateTransportData()
820 WgsLog(server, "LW_KEYPAIR_EXPIRED", keypair->IndexRemote, keypair->IndexLocal); in WgsCreateTransportData()
831 ret->ReceiverIndex = keypair->IndexRemote; in WgsCreateTransportData()
832 ret->Counter = keypair->CounterLocal; in WgsCreateTransportData()
836 …if (WgsEncryptData(keypair->KeyLocal, ret->Counter, ret->EncapsulatedPacket, ret->EncapsulatedPack… in WgsCreateTransportData()
843 ++keypair->CounterLocal; in WgsCreateTransportData()
849 bool WgsIsInReplayWindow(const WG_KEYPAIR *keypair, const UINT64 counter) in WgsIsInReplayWindow() argument
854 if (keypair == NULL || counter == 0) in WgsIsInReplayWindow()
859 if (counter > keypair->CounterRemote) in WgsIsInReplayWindow()
864 if (counter + sizeof(keypair->ReplayWindow) < keypair->CounterRemote) in WgsIsInReplayWindow()
872 if (keypair->ReplayWindow[index] & (1 << bit_location)) in WgsIsInReplayWindow()
881 void WgsUpdateReplayWindow(WG_KEYPAIR *keypair, const UINT64 counter) in WgsUpdateReplayWindow() argument
886 if (keypair == NULL || counter == 0) in WgsUpdateReplayWindow()
891 if (counter + sizeof(keypair->ReplayWindow) < keypair->CounterRemote) in WgsUpdateReplayWindow()
898 if (counter > keypair->CounterRemote) in WgsUpdateReplayWindow()
900 const int index_cur = keypair->CounterRemote >> WG_REPLAY_REDUNDANT_BIT_SHIFTS; in WgsUpdateReplayWindow()
911 keypair->ReplayWindow[(id + index_cur + 1) & WG_REPLAY_BITMAP_INDEX_MASK] = 0; in WgsUpdateReplayWindow()
914 keypair->CounterRemote = counter; in WgsUpdateReplayWindow()
920 if (keypair->ReplayWindow[index] & 1 << bit_location) in WgsUpdateReplayWindow()
925 keypair->ReplayWindow[index] |= 1 << bit_location; in WgsUpdateReplayWindow()