private async Task HandshakeOld(RTMPBinaryReader c1reader, CancellationToken cancel_token) { var s1vec = new byte[1528]; var rand = new Random(); rand.NextBytes(s1vec); await SendAsync(writer => { writer.Write(0); writer.Write(0); writer.Write(s1vec); }, cancel_token).ConfigureAwait(false); var c1time = c1reader.ReadInt32(); var c1ver = c1reader.ReadInt32(); var c1vec = c1reader.ReadBytes(1528); await SendAsync(writer => { writer.Write(c1time); writer.Write(c1ver); writer.Write(c1vec); }, cancel_token).ConfigureAwait(false); using (var reader = await RecvAsync(1536, cancel_token).ConfigureAwait(false)) { var c2time = reader.ReadInt32(); var c2zero = reader.ReadInt32(); var c2vec = reader.ReadBytes(1528); if (!s1vec.SequenceEqual(c2vec)) { throw new InvalidDataException("C2 random vector is not matched."); } } }
private bool Handshake() { Logger.Debug("Handshake start"); var rand = new Random(); var c0 = Recv(1); Send(new byte[] { 0x03 }); var s1vec = new byte[1528]; rand.NextBytes(s1vec); Send(s => { using (var writer = new RTMPBinaryWriter(s)) { writer.Write(0); writer.Write(0); writer.Write(s1vec); } }); using (var reader = new RTMPBinaryReader(new MemoryStream(Recv(1536)))) { Send(s => { using (var writer = new RTMPBinaryWriter(s)) { writer.Write(reader.ReadInt32()); writer.Write(reader.ReadInt32()); writer.Write(reader.ReadBytes(1528)); } }); } using (var reader = new RTMPBinaryReader(new MemoryStream(Recv(1536)))) { reader.ReadInt32(); reader.ReadInt32(); if (!s1vec.Equals(reader.ReadBytes(1528))) { Logger.Debug("Handshake failed"); return(false); } } timer.Reset(); timer.Start(); Logger.Debug("Handshake succeeded"); return(true); }
private async Task HandshakeOld(RTMPBinaryReader c1reader, CancellationToken cancel_token) { var s1vec = new byte[1528]; var rand = new Random(); rand.NextBytes(s1vec); await Send(writer => { writer.Write(0); writer.Write(0); writer.Write(s1vec); }, cancel_token); var c1time = c1reader.ReadInt32(); var c1ver = c1reader.ReadInt32(); var c1vec = c1reader.ReadBytes(1528); await Send(writer => { writer.Write(c1time); writer.Write(c1ver); writer.Write(c1vec); }, cancel_token); await Recv(1536, reader => { var c2time = reader.ReadInt32(); var c2zero = reader.ReadInt32(); var c2vec = reader.ReadBytes(1528); if (!s1vec.SequenceEqual(c2vec)) { throw new InvalidDataException("C2 random vector is not matched."); } }, cancel_token); }
private bool Handshake() { Logger.Debug("Handshake start"); var rand = new Random(); var c0 = Recv(1); Send(new byte[] { 0x03 }); var s1vec = new byte[1528]; rand.NextBytes(s1vec); Send(s => { using (var writer=new RTMPBinaryWriter(s)) { writer.Write(0); writer.Write(0); writer.Write(s1vec); } }); using (var reader=new RTMPBinaryReader(new MemoryStream(Recv(1536)))) { Send(s => { using (var writer=new RTMPBinaryWriter(s)) { writer.Write(reader.ReadInt32()); writer.Write(reader.ReadInt32()); writer.Write(reader.ReadBytes(1528)); } }); } using (var reader=new RTMPBinaryReader(new MemoryStream(Recv(1536)))) { reader.ReadInt32(); reader.ReadInt32(); if (!s1vec.Equals(reader.ReadBytes(1528))) { Logger.Debug("Handshake failed"); return false; } } timer.Reset(); timer.Start(); Logger.Debug("Handshake succeeded"); return true; }