Exemple #1
0
 private String getSignature()
 {
     if (signature == null)
     {
         signature = Rfc3986.Encode(getConsumerSecret()) + '&'
                     + Rfc3986.Encode(getTokenSecret());
     }
     return(signature);
 }
 public string ComputeSignature(string signatureBase, string consumerSecret, string tokenSecret)
 {
     using (HMACSHA1 crypto = new HMACSHA1()) {
         string key = Rfc3986.Encode(consumerSecret) + "&" + Rfc3986.Encode(tokenSecret);
         crypto.Key = Encoding.ASCII.GetBytes(key);
         string hash = Convert.ToBase64String(crypto.ComputeHash(Encoding.ASCII.GetBytes(signatureBase)));
         crypto.Clear();
         return(hash);
     }
 }
            public ComparableParameter(OAuth.Parameter value)
            {
                this.value = value;
                String n = ToString(value.Key);
                String v = ToString(value.Value);

                key = Rfc3986.Encode(n) + ' ' + Rfc3986.Encode(v);
                // ' ' is used because it comes before any character
                // that can appear in a percentEncoded string.
            }
Exemple #4
0
        public static string Serialize(OAuthToken token)
        {
            if (token == null)
            {
                throw new ArgumentNullException("token");
            }

            return("[" + Rfc3986.Encode(Enum.Format(typeof(TokenType), token.Type, "G"))
                   + "|" + Rfc3986.Encode(token.Token)
                   + "|" + Rfc3986.Encode(token.Secret)
                   + "|" + Rfc3986.Encode(token.ConsumerKey)
                   + "]");
        }
Exemple #5
0
        public void Test_AuthCore1_0_Section9_4_1_EmptyToken()
        {
            string sigBase        = string.Empty;
            string consumerSecret = "djr9rjt0jd78jf88";
            string tokenSecret    = string.Empty;

            PlaintextSigningProvider signingProvider = new PlaintextSigningProvider(false);

            Assert.That(signingProvider.SignatureMethod, Is.EqualTo("PLAINTEXT"));

            string hash = Rfc3986.Encode(signingProvider.ComputeSignature(sigBase, consumerSecret, tokenSecret));

            Assert.That(hash, Is.EqualTo("djr9rjt0jd78jf88%26"));
        }
        public string ToNormalizedString(params string[] excludedParameters)
        {
            List <KeyValuePair <string, string> > @params = new List <KeyValuePair <string, string> >();

            // Add OAuth parameters whose values are not null except excluded parameters
            foreach (string param in parameters.Keys)
            {
                if (parameters[param] != null && Array.IndexOf(excludedParameters, param) < 0)
                {
                    @params.Add(new KeyValuePair <string, string>(Rfc3986.Encode(param), Rfc3986.Encode(parameters[param])));
                }
            }

            // Add all additional parameters
            foreach (var param in additionalParameters.AllKeys)
            {
                foreach (var value in additionalParameters.GetValues(param) ?? new string[] { })
                {
                    @params.Add(new KeyValuePair <string, string>(Rfc3986.Encode(param), Rfc3986.Encode(value)));
                }
            }

            // Sort parameters into lexicographic order (by key and value)
            @params.Sort(CompareKeys);

            // Concatenate and encode
            string equals    = "=";
            string ampersand = "&";

            StringBuilder parms = new StringBuilder();
            bool          first = true;

            foreach (var pair in @params)
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    parms.Append(ampersand);
                }

                parms.Append(pair.Key).Append(equals).Append(pair.Value);
            }

            return(parms.ToString());
        }
            public string ComputeSignature(string signatureBase, string consumerSecret, string tokenSecret)
            {
                StringBuilder signature = new StringBuilder();

                if (!String.IsNullOrEmpty(consumerSecret))
                {
                    signature.Append(Rfc3986.Encode(consumerSecret));
                }

                signature.Append("&");

                if (!String.IsNullOrEmpty(tokenSecret))
                {
                    signature.Append(Rfc3986.Encode(tokenSecret));
                }

                return(signature.ToString());
            }
        private static void EncodeHeaderValue(StringBuilder buffer, string key, string value, string separator, bool quote)
        {
            buffer.Append(separator);
            buffer.Append(Rfc3986.Encode(key));
            buffer.Append("=");

            if (quote)
            {
                buffer.Append('"');
            }

            buffer.Append(Rfc3986.Encode(value));

            if (quote)
            {
                buffer.Append('"');
            }
        }
Exemple #9
0
        public ParametersAbsentException(string message, string[] parameters)
            : base(message, OAuthProblemTypes.ParameterAbsent)
        {
            this.parameters = parameters;

            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < parameters.Length; i++)
            {
                sb.Append(Rfc3986.Encode(parameters[i]));

                if (i < parameters.Length - 1)
                {
                    sb.Append("&");
                }
            }

            AddParameter(OAuthErrorParameterKeys.ParametersAbsent, sb.ToString());
        }
Exemple #10
0
 private byte[] computeSignature(String baseString)
 {
     byte[] _key;
     lock (this)
     {
         if (key == null)
         {
             String keyString = Rfc3986.Encode(getConsumerSecret())
                                + "&" + Rfc3986.Encode(getTokenSecret());
             key = Encoding.GetEncoding(ENCODING).GetBytes(keyString);
         }
         _key = key;
     }
     using (HMACSHA1 crypto = new HMACSHA1())
     {
         crypto.Key = _key;
         byte[] hash = crypto.ComputeHash(Encoding.GetEncoding(ENCODING).GetBytes(baseString));
         crypto.Clear();
         return(hash);
     }
 }
Exemple #11
0
        /**
         * Builds the URL the client needs to visit to approve access.
         */
        private void buildAznUrl()
        {
            // At some point we can be clever and use a callback URL to improve
            // the user experience, but that's too complex for now.
            OAuthAccessor accessor = accessorInfo.getAccessor();
            StringBuilder azn      = new StringBuilder(
                accessor.consumer.serviceProvider.userAuthorizationURL);

            if (azn.ToString().IndexOf("?") == -1)
            {
                azn.Append('?');
            }
            else
            {
                azn.Append('&');
            }
            azn.Append(OAuth.OAUTH_TOKEN);
            azn.Append('=');
            azn.Append(Rfc3986.Encode(accessor.requestToken));
            responseParams.setAznUrl(azn.ToString());
        }
Exemple #12
0
        public static string Create(string httpMethod, Uri requestUrl, OAuthParameters parameters)
        {
            StringBuilder sigbase = new StringBuilder();

            // Http header
            sigbase.Append(Rfc3986.Encode(httpMethod)).Append("&");

            // Normalized request URL
            sigbase.Append(Rfc3986.Encode(requestUrl.Scheme));
            sigbase.Append(Rfc3986.Encode("://"));
            sigbase.Append(Rfc3986.Encode(requestUrl.Authority.ToLowerInvariant()));
            sigbase.Append(Rfc3986.Encode(requestUrl.AbsolutePath));
            sigbase.Append("&");

            // Normalized parameters
            sigbase.Append(
                Rfc3986.Encode(parameters.ToNormalizedString(OAuthParameterKeys.Realm, OAuthParameterKeys.Signature,
                                                             OAuthParameterKeys.TokenSecret)));

            return(sigbase.ToString());
        }
        public static String getBaseString(OAuthMessage message)
        {
            List <OAuth.Parameter> parameters;
            String url = message.URL;
            int    q   = url.IndexOf('?');

            if (q < 0)
            {
                parameters = message.getParameters();
            }
            else
            {
                // Combine the URL query string with the other parameters:
                parameters = new List <OAuth.Parameter>();
                parameters.AddRange(OAuth.decodeForm(url.Substring(q + 1)));
                parameters.AddRange(message.getParameters());
                url = url.Substring(0, q);
            }
            return(Rfc3986.Encode(message.method.ToUpper()) + '&'
                   + Rfc3986.Encode(normalizeUrl(url)) + '&'
                   + Rfc3986.Encode(normalizeParameters(parameters)));
        }
Exemple #14
0
        private static String getAuthorizationHeader(IEnumerable <OAuth.Parameter> oauthParams)
        {
            StringBuilder result = new StringBuilder("OAuth ");
            bool          first  = true;

            foreach (var parameter in oauthParams)
            {
                if (!first)
                {
                    result.Append(", ");
                }
                else
                {
                    first = false;
                }
                result.Append(Rfc3986.Encode(parameter.Key))
                .Append("=\"")
                .Append(Rfc3986.Encode(parameter.Value))
                .Append('"');
            }
            return(result.ToString());
        }
Exemple #15
0
        //TODO: No anda todavia!!
        private HttpWebResponse GetContacts()
        {
            yahooAccessToken = (string[])HttpContext.Current.Session["Yahoo_AccessToken"];
            Uri RequestContactBaseUri = new Uri("http://social.yahooapis.com/v1/user/" + YGuid + "/contacts");
            int timestamp             = Common.GetTimestamp();

            OAuthParameters parameters = new OAuthParameters();

            parameters.ConsumerKey     = apiKey;
            parameters.Nonce           = new GuidNonceProvider().GenerateNonce(timestamp);
            parameters.SignatureMethod = "HMAC-SHA1";
            parameters.Timestamp       = timestamp.ToString(CultureInfo.InvariantCulture);
            parameters.Token           = Rfc3986.Decode(AccessToken);
            parameters.Version         = "1.0";
            parameters.AdditionalParameters.Add("format", "xml");

            string sigBase = SignatureBase.Create("GET", RequestContactBaseUri, parameters);
            HmacSha1SigningProvider singProvier = new HmacSha1SigningProvider();

            parameters.Signature = singProvier.ComputeSignature(
                sigBase, (secret), Rfc3986.Encode(AccessTokenSecret));

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://social.yahooapis.com/v1/user/" + YGuid + "/contacts?view=tinyusercard");

            request.CookieContainer              = new CookieContainer();
            request.Headers["WWW-Authenticate"]  = " OAuth realm='yahooapis.com',";
            request.Headers["WWW-Authenticate"] += " oauth_consumer_key='" + parameters.ConsumerKey + "',";
            request.Headers["WWW-Authenticate"] += " oauth_nonce='" + parameters.Nonce + "',";
            request.Headers["WWW-Authenticate"] += " oauth_signature_method='" + parameters.SignatureMethod + "',";
            request.Headers["WWW-Authenticate"] += " oauth_timestamp='" + parameters.Timestamp + "',";
            request.Headers["WWW-Authenticate"] += " oauth_token='" + token + "',";
            request.Headers["WWW-Authenticate"] += " oauth_version='" + parameters.Version + "',";
            request.Headers["WWW-Authenticate"] += " oauth_signature='" + parameters.Signature + "'";
            request.Method      = "GET";
            request.ContentType = "application/xml; charset=utf-8";

            return((HttpWebResponse)request.GetResponse());
        }
Exemple #16
0
 public void TestDashDotUnderscoreTilde()
 {
     Assert.That(Rfc3986.Encode("-._~"), Is.EqualTo("-._~"));
 }
Exemple #17
0
 public void TestPercent()
 {
     Assert.That(Rfc3986.Encode("%"), Is.EqualTo("%25"));
 }
Exemple #18
0
 public void TestAmpersandEqualsAsterisk()
 {
     Assert.That(Rfc3986.Encode("&=*"), Is.EqualTo("%26%3D%2A"));
 }
Exemple #19
0
        public void Test_EncodePlusCharacter()
        {
            string value = Rfc3986.Encode("123+regerg");

            Assert.That(value, Is.EqualTo("123%2Bregerg"));
        }
Exemple #20
0
 public void TestUnicodeU3001()
 {
     Assert.That(Rfc3986.Encode("\u3001"), Is.EqualTo("%E3%80%81"));
 }
Exemple #21
0
 public void TestUnicodeU0080()
 {
     Assert.That(Rfc3986.Encode("\u0080"), Is.EqualTo("%C2%80"));
 }
Exemple #22
0
 public void TestUnicodeU007F()
 {
     Assert.That(Rfc3986.Encode("\u007F"), Is.EqualTo("%7F"));
 }
Exemple #23
0
 public void TestAlphanumerics()
 {
     Assert.That(Rfc3986.Encode("abcABC123"), Is.EqualTo("abcABC123"));
 }
Exemple #24
0
        public void Test_GoogleRequestTokenUrlScopeValue_Encode()
        {
            string googleurl = Rfc3986.Encode("http://www.google.com/m8/feeds");

            Assert.That(googleurl, Is.EqualTo("http%3A%2F%2Fwww.google.com%2Fm8%2Ffeeds"));
        }
Exemple #25
0
 public void TestPlus()
 {
     Assert.That(Rfc3986.Encode("+"), Is.EqualTo("%2B"));
 }