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)); }
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)); }
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)); }