﻿using UnityEngine;
using UnityEngine.UI;
using InMobiAds.Api.UnifiedId;
using System.Text;
using System.Security.Cryptography;

[System.Serializable]
public class InMobiUserDataTypeScript : MonoBehaviour
{
    public InputField inputField;
    public Toggle md5;
    public Toggle sha1;
    public Toggle sha256;

    public InMobiUserDataTypes getData()
    {
        if (inputField.text == "")
            return null;
        InMobiUserDataTypes data = new InMobiUserDataTypes();
        if (md5.isOn)
        {
            string md5 = inputField.text;
            data.Md5 = CreateMD5(md5);
        }
        if (sha1.isOn)
        {
            string sha1 = inputField.text;
            data.Sha1 = CreateSHA1(sha1);
        }
        if (sha256.isOn)
        {
            string sha256 = inputField.text;
            data.Sha256 = CreateSHA256(sha256);
        }
        return data;
    }

    public static string CreateMD5(string input)
    {
        using (MD5 md5 = MD5.Create())
        {
            var hash = md5.ComputeHash(Encoding.UTF8.GetBytes(input));
            var sb = new StringBuilder(hash.Length * 2);

            foreach (byte b in hash)
            {
                sb.Append(b.ToString("x2"));
            }

            return sb.ToString();
        }
    }

    public static string CreateSHA1(string input)
    {
        using (SHA1 sha1 = SHA1.Create())
        {
            var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(input));
            var sb = new StringBuilder(hash.Length * 2);

            foreach (byte b in hash)
            {
                sb.Append(b.ToString("x2"));
            }

            return sb.ToString();
        }
    }

    public static string CreateSHA256(string input)
    {
        using (SHA256 sha256 = SHA256.Create())
        {
            var hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(input));
            var sb = new StringBuilder(hash.Length * 2);

            foreach (byte b in hash)
            {
                sb.Append(b.ToString("x2"));
            }

            return sb.ToString();
        }
    }

}
