Фикс обмена ключами

This commit is contained in:
RoyceDa
2026-04-04 18:01:09 +02:00
parent 5979c31120
commit 04dd23dd5c

View File

@@ -296,16 +296,19 @@ export function CallProvider(props : CallProviderProps) {
* теперь мы получили ее публичную часть и можем создать общую * теперь мы получили ее публичную часть и можем создать общую
* секретную сессию для шифрования звонка * секретную сессию для шифрования звонка
*/ */
const keys = generateSessionKeys();
const sharedPublic = packet.getSharedPublic(); const sharedPublic = packet.getSharedPublic();
if(!sharedPublic){ if(!sharedPublic){
info("Received key exchange signal without shared public key"); info("Received key exchange signal without shared public key");
return; return;
} }
if(!sessionKeys){ const signalPacket = new PacketSignalPeer();
info("Received key exchange signal but session keys are not generated"); signalPacket.setSrc(publicKey);
return; signalPacket.setDst(activeCall);
} signalPacket.setSignalType(SignalType.KEY_EXCHANGE);
const computedSharedSecret = nacl.box.before(Buffer.from(sharedPublic, 'hex'), sessionKeys.secretKey); signalPacket.setSharedPublic(Buffer.from(keys.publicKey).toString('hex'));
send(signalPacket);
const computedSharedSecret = nacl.box.before(Buffer.from(sharedPublic, 'hex'), keys.secretKey);
sharedSecretRef.current = Buffer.from(computedSharedSecret).toString('hex'); sharedSecretRef.current = Buffer.from(computedSharedSecret).toString('hex');
info("Generated shared secret for call session: " + sharedSecretRef.current); info("Generated shared secret for call session: " + sharedSecretRef.current);
setCallState(CallState.WEB_RTC_EXCHANGE); setCallState(CallState.WEB_RTC_EXCHANGE);