Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        /// Что с этой функцией делать?! Как отсюда убрать? Убрать в 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);
            }
        }