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

This commit is contained in:
RoyceDa
2026-04-04 18:01:52 +02:00
parent 04dd23dd5c
commit a9164c7087

View File

@@ -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);