Exemplo n.º 1
0
        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");
            }
        }
Exemplo n.º 2
0
        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);
        }