Sign() public method

Signs the given request with the given client credential.
public Sign ( WebRequest request, ClientCredential credential, Stream uploadStream = null ) : WebRequest
request System.Net.WebRequest The web request to sign
credential ClientCredential the credential used in the signing
uploadStream Stream
return System.Net.WebRequest
        static void execute(string httpMethod, string apiurl, List<string> headers, string clientToken, string accessToken, string secret, string data, string uploadfile, string outputfile, int? maxBodySize, string contentType, bool verbose = false)
        {
            if (apiurl == null || clientToken == null || accessToken == null || secret == null)
            {
                help();
                return;
            }

            EdgeGridV1Signer signer = new EdgeGridV1Signer(null, maxBodySize);
            ClientCredential credential = new ClientCredential(clientToken, accessToken, secret);

            Stream uploadStream = null;
            if (uploadfile != null)
                uploadStream = new FileInfo(uploadfile).OpenRead();
            else if (data != null)
                uploadStream = new MemoryStream(data.ToByteArray());

            var uri = new Uri(apiurl);
            var request = WebRequest.Create(uri);

            foreach (string header in headers) request.Headers.Add(header);
            request.Method = httpMethod;

            Stream output = Console.OpenStandardOutput();
            if (outputfile != null)
                output = new FileInfo(outputfile).OpenWrite();

            if (verbose)
            {
                signer.Sign(request, credential, uploadStream);
                Console.WriteLine("Authorization: {0}", request.Headers.Get("Authorization"));
                Console.WriteLine();
            }

            using (var result = signer.Execute(request, credential, uploadStream))
            {
                using (output)
                {
                    using (result)
                    {
                        byte[] buffer = new byte[1024*1024];
                        int bytesRead = 0;

                        while ((bytesRead = result.Read(buffer, 0, buffer.Length)) != 0)
                        {
                            output.Write(buffer, 0, bytesRead);
                        }
                    }
                }
            }
        }
        public void SignTest()
        {
            string           clientToken = "clientToken";
            string           accessToken = "accessToken";
            string           secret      = "secret-shh";
            ClientCredential credential  = new ClientCredential(clientToken, accessToken, secret);

            //DateTime timestamp = new DateTime(1918, 11, 11, 11, 00, 00, DateTimeKind.Utc);
            EdgeGridV1Signer signer = new EdgeGridV1Signer();

            Uri uri = new Uri("http://www.example.com/");

            HttpWebRequestTest request = new HttpWebRequestTest(uri);

            signer.Sign(request, credential);

            Assert.AreEqual(request.Headers.Count, 1);
            Assert.IsNotNull(request.Headers.Get("Authorization"));

            Assert.IsTrue(Regex.IsMatch(request.Headers.Get("Authorization"),
                                        @"EG1-HMAC-SHA256 client_token=clientToken;access_token=accessToken;timestamp=\d{8}T\d\d:\d\d:\d\d\+0000;nonce=[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12};signature=[A-Za-z0-9/+]{43}="));
        }