Esempio n. 1
0
        private void Sign(HttpRequestMessage request, byte[] body)
        {
            var hash = SHA256.Create();
            //EcdsaUsingSha a = new EcdsaUsingSha(256);

            //ISigner signer = SignerUtilities.GetSigner("SHA-256withECDSA");
            //signer.Init(true, EcDsa.Private);

            //	byte[] buf = new byte[]{0,0,0,1,0};
            var time = TimeStamp();

            byte[] p = new byte[8];
            p[0] = (byte)(time >> 56);
            p[1] = (byte)(time >> 48);
            p[2] = (byte)(time >> 40);
            p[3] = (byte)(time >> 32);
            p[4] = (byte)(time >> 24);
            p[5] = (byte)(time >> 16);
            p[6] = (byte)(time >> 8);
            p[7] = (byte)time;

            //signer.

            byte[] signed;
            using (MemoryStream buffer = new MemoryStream())
            {
                buffer.WriteByte(0);
                buffer.WriteByte(0);
                buffer.WriteByte(0);
                buffer.WriteByte(1);
                buffer.WriteByte(0);

                //Write time
                buffer.Write(p, 0, p.Length);

                buffer.WriteByte(0);

                using (BinaryWriter writer = new BinaryWriter(buffer, Encoding.UTF8))
                {
                    writer.Write("POST");
                    writer.Write((byte)0);

                    writer.Write(request.RequestUri.PathAndQuery);
                    writer.Write((byte)0);

                    //if (request.Headers.Authorization != null && request.Headers.Authorization.Parameter != null)
                    //{
                    //writer.Write((byte)0);
                    //}
                    //else
                    //{
                    //	writer.Write("");
                    //}

                    writer.Write((byte)0);

                    writer.Write(body);
                    writer.Write((byte)0);
                }

                byte[] input = buffer.ToArray();
                //input = hash.ComputeHash(input);

                //signer.BlockUpdate(input, 0, input.Length);
                //signed = signer.GenerateSignature();
                signed = EcDsa.SignHash(hash.ComputeHash(input));
            }

            byte[] final;
            ;
            using (MemoryStream ms = new MemoryStream())
            {
                ms.WriteByte(0);
                ms.WriteByte(0);
                ms.WriteByte(0);
                ms.WriteByte(1);

                //Write Time
                ms.Write(p, 0, p.Length);

                //Write signature
                ms.Write(signed, 0, signed.Length);

                final = ms.ToArray();
            }

            request.Headers.Add("Signature", Convert.ToBase64String(final));
        }
Esempio n. 2
0
        private void Sign(HttpRequestMessage request, byte[] body)
        {
            var hash = SHA256.Create();

            var time = TimeStamp();

            byte[] p = new byte[8];
            p[0] = (byte)(time >> 56);
            p[1] = (byte)(time >> 48);
            p[2] = (byte)(time >> 40);
            p[3] = (byte)(time >> 32);
            p[4] = (byte)(time >> 24);
            p[5] = (byte)(time >> 16);
            p[6] = (byte)(time >> 8);
            p[7] = (byte)time;

            //signer.

            byte[] signed;
            using (MemoryStream buffer = new MemoryStream())
            {
                buffer.WriteByte(0);
                buffer.WriteByte(0);
                buffer.WriteByte(0);
                buffer.WriteByte(1);
                buffer.WriteByte(0);

                //Write time
                buffer.Write(p, 0, p.Length);

                buffer.WriteByte(0);

                //using (BinaryWriter writer = new BinaryWriter(buffer, Encoding.UTF8))
                {
                    buffer.Write(Encoding.UTF8.GetBytes("POST"));
                    buffer.WriteByte((byte)0);

                    buffer.Write(Encoding.UTF8.GetBytes(request.RequestUri.PathAndQuery));
                    buffer.WriteByte((byte)0);

                    buffer.WriteByte((byte)0);

                    buffer.Write(body);
                    buffer.WriteByte((byte)0);
                }

                byte[] input = buffer.ToArray();

                signed = EcDsa.SignHash(hash.ComputeHash(input));
            }

            byte[] final;
            ;
            using (MemoryStream ms = new MemoryStream())
            {
                ms.WriteByte(0);
                ms.WriteByte(0);
                ms.WriteByte(0);
                ms.WriteByte(1);

                //Write Time
                ms.Write(p, 0, p.Length);

                //Write signature
                ms.Write(signed, 0, signed.Length);

                final = ms.ToArray();
            }

            request.Headers.Add("Signature", Convert.ToBase64String(final));
        }
Esempio n. 3
0
        private void Sign(HttpRequestMessage request, byte[] body)
        {
            var hash = SHA256.Create();

            var time = TimeStamp();

            byte[] p = new byte[8];
            p[0] = (byte)(time >> 56);
            p[1] = (byte)(time >> 48);
            p[2] = (byte)(time >> 40);
            p[3] = (byte)(time >> 32);
            p[4] = (byte)(time >> 24);
            p[5] = (byte)(time >> 16);
            p[6] = (byte)(time >> 8);
            p[7] = (byte)time;

            //signer.

            byte[] signed;
            using (MemoryStream buffer = new MemoryStream())
            {
                buffer.WriteByte(0);
                buffer.WriteByte(0);
                buffer.WriteByte(0);
                buffer.WriteByte(1);
                buffer.WriteByte(0);

                //Write time
                buffer.Write(p, 0, p.Length);

                buffer.WriteByte(0);

                //using (BinaryWriter writer = new BinaryWriter(buffer, Encoding.UTF8))
                {
                    buffer.Write(Encoding.UTF8.GetBytes("POST"));
                    buffer.WriteByte((byte)0);

                    buffer.Write(Encoding.UTF8.GetBytes(request.RequestUri.PathAndQuery));
                    buffer.WriteByte((byte)0);

                    buffer.WriteByte((byte)0);

                    buffer.Write(body);
                    buffer.WriteByte((byte)0);
                }

                byte[] input = buffer.ToArray();
                signed = EcDsa.SignHash(hash.ComputeHash(input));

                //var         signer = SignerUtilities.GetSigner(NistObjectIdentifiers.IdEcdsaWithSha3_256);
                //signer.Init(true, (ECPrivateKeyParameters)BouncyKeyPair.Private);
                //signer.BlockUpdate(input, 0, input.Length);
                //var hashed = hash.ComputeHash(input);
                //signer.BlockUpdate(hashed, 0, hashed.Length);
                //signed = signer.GenerateSignature();
            }

            byte[] final;
            ;
            using (MemoryStream ms = new MemoryStream())
            {
                ms.WriteByte(0);
                ms.WriteByte(0);
                ms.WriteByte(0);
                ms.WriteByte(1);

                //Write Time
                ms.Write(p, 0, p.Length);

                //Write signature
                ms.Write(signed, 0, signed.Length);

                final = ms.ToArray();
            }

            request.Headers.Add("Signature", Convert.ToBase64String(final));
        }