public string ParseResponse(string data) { if (data.StartsWith(GetInfoData(), StringComparison.Ordinal)) { //UnityEngine.Debug.Log("PARSE_DATA: " + data); var sda = SplitHashAndMessage(Encoding.ASCII.GetBytes(data)); //UnityEngine.Debug.Log("PD 1: " + sda.Item2); //UnityEngine.Debug.Log("PDX: " + SHA2Helper.ComputeHashStr(Encoding.ASCII.GetString(sda.Item1))); // If the message's hash matches the generated hash if (sda.Item2 == SHA2Helper.ComputeHashStr(Encoding.ASCII.GetString(sda.Item1))) { UnityEngine.Debug.Log("MATCH"); UnityEngine.Debug.Log(Encoding.ASCII.GetString(sda.Item1).Split('_')[2]); UnityEngine.Debug.Log(data); return(StringFromBase64(Encoding.ASCII.GetString(sda.Item1).Split('_')[2])); } else { return("MDMNET_ERR_INVALID_HASH"); } //return StringFromBase64(data.Split('_')[2]); } else { return("MDMNET_ERR_INVALID_RESPONSE"); } }
public static byte[] GenerateAndAddHash(byte[] data) { string hashStr = SHA2Helper.ComputeHashStr(Encoding.UTF8.GetString(data)); byte[] hash = Encoding.UTF8.GetBytes(hashStr); // We now have, in the hash byte array, the hex output of the hash function byte[] res = new byte[data.Length + hash.Length]; Buffer.BlockCopy(data, 0, res, 0, data.Length); Buffer.BlockCopy(hash, 0, res, data.Length, hash.Length); return(res); }