private void SendRegister(Trunk trunk, int expires) { var writer = GetWriter(); int transationId = GetTransactionId(Methods.Registerm); writer.WriteRequestLine(Methods.Registerm, trunk.RequestUri); writer.WriteVia(trunk.Transport, trunk.LocalEndPoint, transationId); writer.WriteFrom(trunk.Uri, trunk.Id); writer.WriteTo(trunk.Uri); writer.WriteCallId(trunk.LocalEndPoint.Address, Interlocked.Increment(ref count)); writer.WriteCseq(trunk.GetCSeq(Methods.Registerm), Methods.Registerm); writer.WriteContact(trunk.LocalEndPoint, trunk.Transport); writer.WriteEventRegistration(); writer.WriteExpires(expires); if (trunk.Nonce.IsValid) { int nc = trunk.GetNextNonceCount(); int cnonce = Environment.TickCount; var response = SipDigestAuthentication.GetResponseHexChars(trunk.AuthenticationId, trunk.Realm, AuthAlgorithms.Md5, trunk.Nonce, cnonce, nc, trunk.Password, trunk.Qop, trunk.RequestUri, Methods.Registerm.ToByteArrayPart(), new ArraySegment <byte>()); writer.WriteDigestAuthorization(trunk.AuthHeader, trunk.AuthenticationId, trunk.Realm, trunk.Qop, AuthAlgorithms.Md5, trunk.RequestUri, trunk.Nonce, nc, cnonce, trunk.Opaque, response); } writer.WriteContentLength(0); writer.WriteCRLF(); registerProducer.SendRequest(trunk.ConnectionAddresses, writer, transationId, trunk.Id); }
/// Что с этой функцией делать?! Как отсюда убрать? Убрать в Helpers? private void WriteAuthorization(SipMessageWriter writer, Methods method, ArraySegment <byte> content) { if (trunk.Nonce.IsValid) { int nc = trunk.GetNextNonceCount(); int cnonce = Environment.TickCount; var response = SipDigestAuthentication.GetResponseHexChars(trunk.AuthenticationId, trunk.Realm, AuthAlgorithms.Md5, trunk.Nonce, cnonce, nc, trunk.Password, trunk.Qop, trunk.Uri, method.ToByteArrayPart(), content); writer.WriteDigestAuthorization(trunk.AuthHeader, trunk.AuthenticationId, trunk.Realm, trunk.Qop, AuthAlgorithms.Md5, trunk.Uri, trunk.Nonce, nc, cnonce, trunk.Opaque, response); } }
private void SendRegister(Trunk trunk, int expires) { var writer = GetWriter(); int transationId = GetTransactionId(Methods.Registerm); writer.WriteRequestLine(Methods.Registerm, trunk.RequestUri); writer.WriteVia(trunk.Transport, trunk.LocalEndPoint, transationId); writer.WriteFrom(trunk.Uri, trunk.Id); writer.WriteTo(trunk.Uri); writer.WriteCallId(trunk.LocalEndPoint.Address, Interlocked.Increment(ref count)); writer.WriteCseq(trunk.GetCSeq(Methods.Registerm), Methods.Registerm); writer.WriteContact(trunk.LocalEndPoint, trunk.Transport); writer.WriteEventRegistration(); writer.WriteExpires(expires); if (trunk.Nonce.IsValid) { int nc = trunk.GetNextNonceCount(); int cnonce = Environment.TickCount; var response = SipDigestAuthentication.GetResponseHexChars(trunk.AuthenticationId, trunk.Realm, AuthAlgorithms.Md5, trunk.Nonce, cnonce, nc, trunk.Password, trunk.Qop, trunk.RequestUri, Methods.Registerm.ToByteArrayPart(), new ArraySegment<byte>()); writer.WriteDigestAuthorization(trunk.AuthHeader, trunk.AuthenticationId, trunk.Realm, trunk.Qop, AuthAlgorithms.Md5, trunk.RequestUri, trunk.Nonce, nc, cnonce, trunk.Opaque, response); } writer.WriteContentLength(0); writer.WriteCRLF(); registerProducer.SendRequest(trunk.ConnectionAddresses, writer, transationId, trunk.Id); }