diff --git a/app/providers/CallProvider/CallProvider.tsx b/app/providers/CallProvider/CallProvider.tsx index e998021..860a343 100644 --- a/app/providers/CallProvider/CallProvider.tsx +++ b/app/providers/CallProvider/CallProvider.tsx @@ -292,9 +292,7 @@ export function CallProvider(props : CallProviderProps) { if(signalType == SignalType.KEY_EXCHANGE){ console.info("EXCHANGE SIGNAL RECEIVED, CALLEE ROLE"); /** - * Мы отправили свою публичную часть ключа другой стороне, - * теперь мы получили ее публичную часть и можем создать общую - * секретную сессию для шифрования звонка + * Другая сторона отправила нам ключи, теперь отправляем ей свои для генерации общего секрета */ const keys = generateSessionKeys(); const sharedPublic = packet.getSharedPublic(); @@ -302,12 +300,14 @@ export function CallProvider(props : CallProviderProps) { info("Received key exchange signal without shared public key"); return; } + const signalPacket = new PacketSignalPeer(); signalPacket.setSrc(publicKey); signalPacket.setDst(activeCall); signalPacket.setSignalType(SignalType.KEY_EXCHANGE); signalPacket.setSharedPublic(Buffer.from(keys.publicKey).toString('hex')); - send(signalPacket); + send(signalPacket); + const computedSharedSecret = nacl.box.before(Buffer.from(sharedPublic, 'hex'), keys.secretKey); sharedSecretRef.current = Buffer.from(computedSharedSecret).toString('hex'); info("Generated shared secret for call session: " + sharedSecretRef.current);