コード例 #1
0
        private static string BuildDataString(NameValuePair[] parameters)
        {
            if (parameters == null)
                throw new ArgumentNullException("parameters");

            var builder = new StringBuilder();

            var orderedParameters = parameters
                .Where(p => string.IsNullOrEmpty(p.Name) && !string.IsNullOrEmpty(p.Value))
                .Union(parameters
                    .Where(p => !string.IsNullOrEmpty(p.Name) && !string.IsNullOrEmpty(p.Value))
                    .OrderBy(i => i.Name)
                )
                .ToList();

            foreach (var parameter in orderedParameters)
            {
                if (builder.Length > 0)
                    builder.Append(ParameterSeparator);

                if (!string.IsNullOrEmpty(parameter.Name))
                {
                    builder.Append(parameter.Name);
                    builder.Append(NameValueSeparator);
                }

                builder.Append(parameter.Value);
            }

            var data = builder.ToString();
            return data;
        }
コード例 #2
0
 public static string GetHashString(Func<byte[], HMAC> hmacFactory, string secretKey, NameValuePair[] parameters)
 {
     var data = BuildDataString(parameters);
     return ComputeHash(hmacFactory, secretKey, data);
 }