/// <summary>
        /// <see cref="ChallengeResponse.Generate(RtspRequest.RtspMethod, Uri)"/>
        /// </summary>
        public override string Generate(RtspRequest.RtspMethod method, Uri uri)
        {
            // Generate digets response value.
            var ha1      = ToMd5HexString($"{Credentials.Username}:{Realm}:{Credentials.Password}");
            var ha2      = ToMd5HexString($"{method}:{uri}");
            var response = ToMd5HexString($"{ha1}:{Nonce}:{ha2}");

            var sb = new StringBuilder("Digest").Append(" username=\"")
                     .Append(Credentials.Username)
                     .Append("\"")
                     .Append(", realm=\"")
                     .Append(Realm)
                     .Append("\"")
                     .Append(", nonce=\"")
                     .Append(Nonce)
                     .Append("\"");

            if (!string.IsNullOrEmpty(Domain))
            {
                sb.Append(", domain=\"").Append(Domain).Append("\"");
            }

            if (!string.IsNullOrEmpty(Opaque))
            {
                sb.Append(", opaque=\"").Append(Opaque).Append("\"");
            }

            sb.Append(", uri=\"").Append(uri).Append("\"");
            sb.Append(", response=\"").Append(response).Append("\"");

            return(sb.ToString());
        }
Ejemplo n.º 2
0
        private RtspResponse CheckResponse(RtspResponse response, RtspRequest.RtspMethod method)
        {
            var status = response.ResponseStatus;

            if (status.Code >= RtspResponse.Status.BadRequest.Code)
            {
                throw new RtspClientException($"{method} received response status {status.Code} {status.ReasonPhrase}");
            }

            return(response);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Generate the RTSP Authorization header value based on the WWW-Authenticate
 /// challenge type
 /// </summary>
 /// <param name="method">The RTSP method used to generate header value</param>
 /// <param name="uri">The uri used to generate the header value</param>
 /// <returns></returns>
 public abstract string Generate(RtspRequest.RtspMethod method, Uri uri);
        /// <summary>
        /// <see cref="ChallengeResponse.Generate(RtspRequest.RtspMethod, Uri)"/>
        /// </summary>
        public override string Generate(RtspRequest.RtspMethod method, Uri uri)
        {
            string auth = $"{Credentials.Username}:{Credentials.Password}";

            return($"Basic {Convert.ToBase64String(Encoding.UTF8.GetBytes(auth))}");
        }