<?php
session_start();
session_destroy();

$x_dbhost='mysql:host=localhost;dbname=supercryptex';
$x_dbuser='root';
$x_dbpass='';
?>
<!DOCTYPE html>
<html lang="en">

<head>
  <!--JQuery-->
  <script src="https://code.jquery.com/jquery-3.3.1.min.js" type="text/javascript"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <meta name="description" content="">
  <meta name="author" content="">

  <title>IPFlare | Register</title>

  <!-- Custom fonts for this template-->
  <link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
  <link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">

  <!-- Custom styles for this template-->
  <link href="./css/login_register.css" rel="stylesheet">
  <!---<link href="css/sb-admin-2.min.css" rel="stylesheet">--->

  <!--- ALL ELGAMAL KEY GENERATION FUNCTIONS --->
  <script type="text/javascript">

    var var_Q = 0;
    var var_PrimitiveRootOfP = 0;
    var var_p = 0
    var var_x = 0;
    var var_g = 0;
    var var_y = 0;
    var var_k = 0;
    var var_a = 0;

  // Function - Random Range
  function getRandomRange(min, max) {
    return Math.floor(Math.random() * (max - min) + min);
  };

  // Function - Cek Bilangan Prima
  function TestPrimeElement(element) {
    var isPrime = true;

    if (element == 2 || element == 3)
    {
      return isPrime;
    }
    else
    {
      if (element == 1 || element % 2 == 0 || element % 3 == 0)
      {
        isPrime = false;
      }
      else
      {
        for (var i = 5; i <= Math.floor(Math.sqrt(element)); i = i + 6)
          if (element % i == 0 || element % (i + 2) == 0)
          {
            isPrime = false;
            break;
          }
        }
      }

      return isPrime;
    };

    // Function - Cek Apakah 2 Bilangan Saling Prima atau Tidak (Co-Prime)
    function TestCoPrime(a, b) {
        // Euclidean Algorithm / GCD (Menentukan FPB dari 2 Bilangan)
        var temp;
        while (b != 0)
        {
          temp = a % b;
          a = b;
          b = temp;
        }

        // 2 atau Lebih Bilangan Bisa Dikatakan Ko-Prima Jika GDC-nya = 1
        if (a == 1)
        {
          return true;
        }
        else
        {
          return false;
        }
      };

    // Function - Kalkulasikan Pangkat dan Modulo ((number ^ power) % modulo)
    function PowerAndModulo(number, power, modulo) {
        // Menggunakan "Square Multiplication Algorithm" Karena Memproses Bilangan yang Sangat Besar

        // Pembulatan (Jadikan Integer)
        number = Math.floor(number);
        power = Math.floor(power);
        modulo = Math.floor(modulo);

        // Convert ke Binary
        var a = [];
        var k = 0;

        do
        {
          a[k] = power % 2;
          power = power / 2;
          power = Math.floor(power);
          k++;
        }
        while (power != 0);

        // Kalkulasikan Hasil Pangkat dan Modulo
        var result = 1;

        for (var i = k - 1; i >= 0; i--)
        {
          result = (result * result) % modulo;
          if (a[i] == 1)
          {
            result = (result * number) % modulo;
          }
        }

        return Math.floor(result);
      };

      function BackupPowerAndModulo(a, b, n) {
        a = a % n;
        var result = 1;
        var x = a;

        while(b > 0){
          var leastSignificantBit = b % 2;
          b = Math.floor(b / 2);

          if (leastSignificantBit == 1) {
            result = result * x;
            result = result % n;
          }

          x = x * x;
          x = x % n;
        }
        return result;
      };

  // Function - Cek Apakah (p - 1) mod Q = 0 atau Tidak
  function TestTheEstimateOfThePNumber(est_p, est_Q) {
    if ((est_p - 1) % est_Q == 0)
    {
      return true;
    }
    else
    {
      return false;
    }
  };

  // Function - Cek Apakah Sebuah Bilangan Merupakan Primitive Root dari Bilangan Prima atau Bukan
  function TestPrimitiveElement(pe_input, pe_prime, pe_Q) {
    /* Primitive Root :
     * Misal Bilangan p = 7, Bilangan a = 3
     * Elemennya Yaitu : 1, 2, 3, 4, 5, 6
     * 
     * Cek Sebuah Bilangan Apakah Primitive Root atau Tidak dengan Cara :
     * Proot = a ^ (1 ... (p -1)) mod p
     * Proot = 3 ^ (1 ... 6) mod 7
     * 3 ^ 1 % 7 = [3], 3 ^ 2 % 7 = [2], 3 ^ 3 % 7 = [6], 3 ^ 4 % 7 = [4], 3 ^ 5 % 7 = [5], 3 ^ 6 % 7 = [1]
     * 
     * Dari 3 ^ 1 Hingga 3 ^ 6 Menghasilkan Output 1, 2, 3, 4, 5, 6  yang Mengandung Elemen dari p
     * Jadi 3 Adalah Primitive Root dari 7.
     */

     var pe_check = true;
     var pe_power = pe_prime - Math.floor(1 / pe_Q);
     var pe_test = PowerAndModulo(pe_input, pe_power, pe_prime);

     if (pe_test != 1)
     {
      pe_check = true;
    }
    else
    {
      if (pe_test == 1)
      {
        pe_check = false;
      }
    }

    return pe_check;
  };

  // CORE Function - Generate Private / Public Key
  function generateKeyElGamal() {

    //console.log("Coba Fungsi Pangkat Modulo (988 ^ 1443) mod 1709 : " + PowerAndModulo(988, 1443, 1709));
    var output = [];

    console.log("Before : \n" +
      "Var Q = "+var_Q+"\n" +
      "Var PRoP = "+var_PrimitiveRootOfP+"\n" +
      "Var p = "+var_p+"\n" +
      "Var x = "+var_x+"\n" +
      "Var g = "+var_g+"\n" +
      "Var y = "+var_y+"\n" +
      "Var k = "+var_k+"\n" +
      "Var a = "+var_a+"\n"
      );

    var_Q = var_PrimitiveRootOfP = var_g = var_x = var_y = var_k = 0;

    // 1. Menentukan Bilangan Prima Acak Antara [1000 - 3000]
    console.log("Check 1");
    do
    {
      var_p = getRandomRange(1000, 3000);
    }
    while (TestPrimeElement(var_p) == false);

    // 2. Menentukan Bilangan Acak Q Sehingga Q Merupakan Divisor dari p-1 (GCD)
    console.log("Check 2");
    do
    {
            // Menentukan Bilangan Random Q dengan Min = 2 & Max = p-1
            var_Q = getRandomRange(2, var_p - 1);
          }
        // Bilangan Q Harus Prima dan (p - 1) mod Q Harus = 0
        while (TestPrimeElement(var_p) == false || TestTheEstimateOfThePNumber(var_p, var_Q) == false);

        // 3. Menentukan Sebuah Bilangan yang Merupakan Primitive Root dari p
        console.log("Check 3");
        do
        {
          var_PrimitiveRootOfP = getRandomRange(2, var_p - 1);
        }
        while (TestPrimitiveElement(var_PrimitiveRootOfP, var_p, var_Q) == false);

        // 4. Generate - Variabel "g", Dimana g < p
        console.log("Check 4");
        var_g = PowerAndModulo(var_PrimitiveRootOfP, var_p - Math.floor(1 / var_Q), var_p);

    // 5. Generate - Variabel "x"
    console.log("Check 5");
    do
    {
            // Menentukan Bilangan Random x dengan Min = 2 & Max = p-2
            var_x = getRandomRange(2, var_p - 2);
          }
          while (var_x == var_Q || var_x == var_PrimitiveRootOfP);

    // 6. Generate - Variabel "y", Dimana y = (g ^ x) mod p
    console.log("Check 6");
    var_y = PowerAndModulo(var_g, var_x, var_p);
    
    // 7. Generate - Variabel "k"
    do
    {
      var_k = getRandomRange(2, var_p - 2);
    }
    while (var_k == var_x || var_k == var_g || var_k == var_Q || var_k == var_PrimitiveRootOfP || TestCoPrime(var_k, var_p - 1) == false);

    // 8. Generate - Variabel "a" (Kalkukasi -> a = g ^ k mod p)
    var_a = PowerAndModulo(var_g, var_k, var_p);

    console.log("After : \n" +
      "Var p = "+var_p+"\n" +
      "Var Q = "+var_Q+" -> Prime, (p - 1) mod Q = 0, Min = 2, Max = (p - 1)\n" +
      "Var PRoP = "+var_PrimitiveRootOfP+" -> Primitive Root of P\n" +
      "Var x = "+var_x+" -> Min = 2, Max = (p - 1)\n" +
      "Var g = "+var_g+" -> g < p\n" +
      "Var y = "+var_y+" -> (g ^ x) mod p\n" +
      "Var k = "+var_k+"\n" +
      "Var a = "+var_a+" -> (g ^ k) mod p\n"
      );

    // Private Key
    output[0] = var_p + "|" + var_x + "|" + var_a;

    // Public Key
    output[1] = var_p + "|" + var_g + "|" + var_y + "|" + var_k;

    return output;
  };

  // MAIN Function - Generate Host/Client Key
  function generateKeyPair() {
    /* [#] ElGamal Key Details :
     * 
     * [A] Client :
     * Client - Public Key  = p, g, y, k    (For Encryption)
     * Client - Private Key = p, x, a       (For Decryption)
     * 
     * [B] Host :
     * Host - Private Key   = p, g, y, k    (For Encryption) -> Inverted, Basically Public Key
     * Host - Public Key    = p, x, a       (For Decryption) -> Inverted, Basically Private Key
     */

     var kp_host = generateKeyElGamal();
     var kp_client = generateKeyElGamal();

     $("#host_private").val(window.btoa(kp_host[1]));
     $("#host_public").val(window.btoa(kp_host[0]));

     $("#client_private").val(window.btoa(kp_client[0]));
     $("#client_public").val(window.btoa(kp_client[1]));
   };

 </script>

</head>

<body class="bg-gradient-primary" onload="generateKeyPair()">

  <div class="container">

    <div class="card o-hidden border-0 shadow-lg my-5">
      <div class="card-body p-0">
        <!-- Nested Row within Card Body -->
        <div class="row">
          <div class="col-lg-5 d-none d-lg-block bg-register-image"></div>
          <div class="col-lg-7">
            <div class="p-5">
              <div class="text-center">
                <h1 class="h4 text-gray-900 mb-4">Create an Account!</h1>
                <div id="info" style="margin-top: -20px;"></div>
              </div>
              <form class="user" method="post" id="regz">

                <div class="form-group">
                  <input type="text" class="form-control form-control-user" name="fullname" id="fullname" placeholder="Full Name" required>
                </div>

                <div class="form-group">
                  <input type="email" class="form-control form-control-user" name="email" id="email" placeholder="Email" required>
                </div>

                <div class="form-group row">
                  <div class="col-sm-6 mb-3 mb-sm-0">
                    <input type="text" class="form-control form-control-user" name="address" id="address" placeholder="Address" required>
                  </div>
                  <div class="col-sm-6">
                    <select id="country" name="country" class="form-control" style="margin-top: 5px;">
                      <option value="Afghanistan">Afghanistan</option>
                      <option value="Åland Islands">Åland Islands</option>
                      <option value="Albania">Albania</option>
                      <option value="Algeria">Algeria</option>
                      <option value="American Samoa">American Samoa</option>
                      <option value="Andorra">Andorra</option>
                      <option value="Angola">Angola</option>
                      <option value="Anguilla">Anguilla</option>
                      <option value="Antarctica">Antarctica</option>
                      <option value="Antigua and Barbuda">Antigua and Barbuda</option>
                      <option value="Argentina">Argentina</option>
                      <option value="Armenia">Armenia</option>
                      <option value="Aruba">Aruba</option>
                      <option value="Australia">Australia</option>
                      <option value="Austria">Austria</option>
                      <option value="Azerbaijan">Azerbaijan</option>
                      <option value="Bahamas">Bahamas</option>
                      <option value="Bahrain">Bahrain</option>
                      <option value="Bangladesh">Bangladesh</option>
                      <option value="Barbados">Barbados</option>
                      <option value="Belarus">Belarus</option>
                      <option value="Belgium">Belgium</option>
                      <option value="Belize">Belize</option>
                      <option value="Benin">Benin</option>
                      <option value="Bermuda">Bermuda</option>
                      <option value="Bhutan">Bhutan</option>
                      <option value="Bolivia">Bolivia</option>
                      <option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
                      <option value="Botswana">Botswana</option>
                      <option value="Bouvet Island">Bouvet Island</option>
                      <option value="Brazil">Brazil</option>
                      <option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
                      <option value="Brunei Darussalam">Brunei Darussalam</option>
                      <option value="Bulgaria">Bulgaria</option>
                      <option value="Burkina Faso">Burkina Faso</option>
                      <option value="Burundi">Burundi</option>
                      <option value="Cambodia">Cambodia</option>
                      <option value="Cameroon">Cameroon</option>
                      <option value="Canada">Canada</option>
                      <option value="Cape Verde">Cape Verde</option>
                      <option value="Cayman Islands">Cayman Islands</option>
                      <option value="Central African Republic">Central African Republic</option>
                      <option value="Chad">Chad</option>
                      <option value="Chile">Chile</option>
                      <option value="China">China</option>
                      <option value="Christmas Island">Christmas Island</option>
                      <option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
                      <option value="Colombia">Colombia</option>
                      <option value="Comoros">Comoros</option>
                      <option value="Congo">Congo</option>
                      <option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
                      <option value="Cook Islands">Cook Islands</option>
                      <option value="Costa Rica">Costa Rica</option>
                      <option value="Cote D'ivoire">Cote D'ivoire</option>
                      <option value="Croatia">Croatia</option>
                      <option value="Cuba">Cuba</option>
                      <option value="Cyprus">Cyprus</option>
                      <option value="Czech Republic">Czech Republic</option>
                      <option value="Denmark">Denmark</option>
                      <option value="Djibouti">Djibouti</option>
                      <option value="Dominica">Dominica</option>
                      <option value="Dominican Republic">Dominican Republic</option>
                      <option value="Ecuador">Ecuador</option>
                      <option value="Egypt">Egypt</option>
                      <option value="El Salvador">El Salvador</option>
                      <option value="Equatorial Guinea">Equatorial Guinea</option>
                      <option value="Eritrea">Eritrea</option>
                      <option value="Estonia">Estonia</option>
                      <option value="Ethiopia">Ethiopia</option>
                      <option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
                      <option value="Faroe Islands">Faroe Islands</option>
                      <option value="Fiji">Fiji</option>
                      <option value="Finland">Finland</option>
                      <option value="France">France</option>
                      <option value="French Guiana">French Guiana</option>
                      <option value="French Polynesia">French Polynesia</option>
                      <option value="French Southern Territories">French Southern Territories</option>
                      <option value="Gabon">Gabon</option>
                      <option value="Gambia">Gambia</option>
                      <option value="Georgia">Georgia</option>
                      <option value="Germany">Germany</option>
                      <option value="Ghana">Ghana</option>
                      <option value="Gibraltar">Gibraltar</option>
                      <option value="Greece">Greece</option>
                      <option value="Greenland">Greenland</option>
                      <option value="Grenada">Grenada</option>
                      <option value="Guadeloupe">Guadeloupe</option>
                      <option value="Guam">Guam</option>
                      <option value="Guatemala">Guatemala</option>
                      <option value="Guernsey">Guernsey</option>
                      <option value="Guinea">Guinea</option>
                      <option value="Guinea-bissau">Guinea-bissau</option>
                      <option value="Guyana">Guyana</option>
                      <option value="Haiti">Haiti</option>
                      <option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
                      <option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
                      <option value="Honduras">Honduras</option>
                      <option value="Hong Kong">Hong Kong</option>
                      <option value="Hungary">Hungary</option>
                      <option value="Iceland">Iceland</option>
                      <option value="India">India</option>
                      <option value="Indonesia">Indonesia</option>
                      <option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
                      <option value="Iraq">Iraq</option>
                      <option value="Ireland">Ireland</option>
                      <option value="Isle of Man">Isle of Man</option>
                      <option value="Israel">Israel</option>
                      <option value="Italy">Italy</option>
                      <option value="Jamaica">Jamaica</option>
                      <option value="Japan">Japan</option>
                      <option value="Jersey">Jersey</option>
                      <option value="Jordan">Jordan</option>
                      <option value="Kazakhstan">Kazakhstan</option>
                      <option value="Kenya">Kenya</option>
                      <option value="Kiribati">Kiribati</option>
                      <option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
                      <option value="Korea, Republic of">Korea, Republic of</option>
                      <option value="Kuwait">Kuwait</option>
                      <option value="Kyrgyzstan">Kyrgyzstan</option>
                      <option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
                      <option value="Latvia">Latvia</option>
                      <option value="Lebanon">Lebanon</option>
                      <option value="Lesotho">Lesotho</option>
                      <option value="Liberia">Liberia</option>
                      <option value="Libyan Arab Jamahiriya">Libyan Arab Jamahiriya</option>
                      <option value="Liechtenstein">Liechtenstein</option>
                      <option value="Lithuania">Lithuania</option>
                      <option value="Luxembourg">Luxembourg</option>
                      <option value="Macao">Macao</option>
                      <option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
                      <option value="Madagascar">Madagascar</option>
                      <option value="Malawi">Malawi</option>
                      <option value="Malaysia">Malaysia</option>
                      <option value="Maldives">Maldives</option>
                      <option value="Mali">Mali</option>
                      <option value="Malta">Malta</option>
                      <option value="Marshall Islands">Marshall Islands</option>
                      <option value="Martinique">Martinique</option>
                      <option value="Mauritania">Mauritania</option>
                      <option value="Mauritius">Mauritius</option>
                      <option value="Mayotte">Mayotte</option>
                      <option value="Mexico">Mexico</option>
                      <option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
                      <option value="Moldova, Republic of">Moldova, Republic of</option>
                      <option value="Monaco">Monaco</option>
                      <option value="Mongolia">Mongolia</option>
                      <option value="Montenegro">Montenegro</option>
                      <option value="Montserrat">Montserrat</option>
                      <option value="Morocco">Morocco</option>
                      <option value="Mozambique">Mozambique</option>
                      <option value="Myanmar">Myanmar</option>
                      <option value="Namibia">Namibia</option>
                      <option value="Nauru">Nauru</option>
                      <option value="Nepal">Nepal</option>
                      <option value="Netherlands">Netherlands</option>
                      <option value="Netherlands Antilles">Netherlands Antilles</option>
                      <option value="New Caledonia">New Caledonia</option>
                      <option value="New Zealand">New Zealand</option>
                      <option value="Nicaragua">Nicaragua</option>
                      <option value="Niger">Niger</option>
                      <option value="Nigeria">Nigeria</option>
                      <option value="Niue">Niue</option>
                      <option value="Norfolk Island">Norfolk Island</option>
                      <option value="Northern Mariana Islands">Northern Mariana Islands</option>
                      <option value="Norway">Norway</option>
                      <option value="Oman">Oman</option>
                      <option value="Pakistan">Pakistan</option>
                      <option value="Palau">Palau</option>
                      <option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
                      <option value="Panama">Panama</option>
                      <option value="Papua New Guinea">Papua New Guinea</option>
                      <option value="Paraguay">Paraguay</option>
                      <option value="Peru">Peru</option>
                      <option value="Philippines">Philippines</option>
                      <option value="Pitcairn">Pitcairn</option>
                      <option value="Poland">Poland</option>
                      <option value="Portugal">Portugal</option>
                      <option value="Puerto Rico">Puerto Rico</option>
                      <option value="Qatar">Qatar</option>
                      <option value="Reunion">Reunion</option>
                      <option value="Romania">Romania</option>
                      <option value="Russian Federation">Russian Federation</option>
                      <option value="Rwanda">Rwanda</option>
                      <option value="Saint Helena">Saint Helena</option>
                      <option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
                      <option value="Saint Lucia">Saint Lucia</option>
                      <option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
                      <option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
                      <option value="Samoa">Samoa</option>
                      <option value="San Marino">San Marino</option>
                      <option value="Sao Tome and Principe">Sao Tome and Principe</option>
                      <option value="Saudi Arabia">Saudi Arabia</option>
                      <option value="Senegal">Senegal</option>
                      <option value="Serbia">Serbia</option>
                      <option value="Seychelles">Seychelles</option>
                      <option value="Sierra Leone">Sierra Leone</option>
                      <option value="Singapore">Singapore</option>
                      <option value="Slovakia">Slovakia</option>
                      <option value="Slovenia">Slovenia</option>
                      <option value="Solomon Islands">Solomon Islands</option>
                      <option value="Somalia">Somalia</option>
                      <option value="South Africa">South Africa</option>
                      <option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
                      <option value="Spain">Spain</option>
                      <option value="Sri Lanka">Sri Lanka</option>
                      <option value="Sudan">Sudan</option>
                      <option value="Suriname">Suriname</option>
                      <option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
                      <option value="Swaziland">Swaziland</option>
                      <option value="Sweden">Sweden</option>
                      <option value="Switzerland">Switzerland</option>
                      <option value="Syrian Arab Republic">Syrian Arab Republic</option>
                      <option value="Taiwan, Province of China">Taiwan, Province of China</option>
                      <option value="Tajikistan">Tajikistan</option>
                      <option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
                      <option value="Thailand">Thailand</option>
                      <option value="Timor-leste">Timor-leste</option>
                      <option value="Togo">Togo</option>
                      <option value="Tokelau">Tokelau</option>
                      <option value="Tonga">Tonga</option>
                      <option value="Trinidad and Tobago">Trinidad and Tobago</option>
                      <option value="Tunisia">Tunisia</option>
                      <option value="Turkey">Turkey</option>
                      <option value="Turkmenistan">Turkmenistan</option>
                      <option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
                      <option value="Tuvalu">Tuvalu</option>
                      <option value="Uganda">Uganda</option>
                      <option value="Ukraine">Ukraine</option>
                      <option value="United Arab Emirates">United Arab Emirates</option>
                      <option value="United Kingdom">United Kingdom</option>
                      <option value="United States">United States</option>
                      <option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
                      <option value="Uruguay">Uruguay</option>
                      <option value="Uzbekistan">Uzbekistan</option>
                      <option value="Vanuatu">Vanuatu</option>
                      <option value="Venezuela">Venezuela</option>
                      <option value="Viet Nam">Viet Nam</option>
                      <option value="Virgin Islands, British">Virgin Islands, British</option>
                      <option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
                      <option value="Wallis and Futuna">Wallis and Futuna</option>
                      <option value="Western Sahara">Western Sahara</option>
                      <option value="Yemen">Yemen</option>
                      <option value="Zambia">Zambia</option>
                      <option value="Zimbabwe">Zimbabwe</option>
                    </select>
                  </div>
                </div>

                <div class="form-group">
                  <input type="tel" onfocus="(this.type='number')" maxlength="12" class="form-control form-control-user" name="phone" id="phone" placeholder="Phone" onkeydown="return isNumberKey(event)" required>
                </div>

                <div class="form-group row">
                  <div class="col-sm-6 mb-3 mb-sm-0">
                    <input type="text" class="form-control form-control-user" style="text-transform: lowercase;" name="name" id="name" placeholder="Username" required>
                  </div>
                  <div class="col-sm-6">
                    <input type="text" onfocus="(this.type='date')" class="form-control form-control-user" name="birthday" id="birthday" placeholder="Birthday" required>
                  </div>
                </div>

                <div class="form-group row">
                  <div class="col-sm-6 mb-3 mb-sm-0">
                    <input type="password" class="form-control form-control-user" name="password" id="password" placeholder="Password" required>
                  </div>
                  <div class="col-sm-6">
                    <input type="password" class="form-control form-control-user" name="re_password" id="re_password" placeholder="Repeat Password" required>
                  </div>
                </div>

                <div class="form-group row">
                  <div class="col-sm-6 mb-3 mb-sm-0">
                    <input type="hidden" class="form-control form-control-user" name="host_private" id="host_private" placeholder="Host Private Key" required>
                  </div>
                  <div class="col-sm-6">
                    <input type="hidden" class="form-control form-control-user" name="host_public" id="host_public" placeholder="Host Public Key" required>
                  </div>
                </div>

                <div class="form-group row">
                  <div class="col-sm-6 mb-3 mb-sm-0">
                    <input type="hidden" class="form-control form-control-user" name="client_private" id="client_private" placeholder="Client Private Key" required>
                  </div>
                  <div class="col-sm-6">
                    <input type="hidden" class="form-control form-control-user" name="client_public" id="client_public" placeholder="Client Public Key" required>
                  </div>
                </div>

                <div>
                  <button type="submit" class="btn btn-primary btn-user btn-block" id="reg_btn">Register Account</button>
                </div>
                <hr>
                <a href="" class="btn btn-google btn-user btn-block" id="reg_btn_google">
                  <i class="fab fa-google fa-fw"></i> Register with Google
                </a>
                <a href="" class="btn btn-facebook btn-user btn-block" id="reg_btn_facebook">
                  <i class="fab fa-facebook-f fa-fw"></i> Register with Facebook
                </a>
              </form>
              <div id="reg_form"></div>

              <?php
              if(isset($_POST['name'])){

                $s_name=strtolower(strip_tags($_POST['name']));
                $s_fullname=strip_tags($_POST['fullname']);
                $s_email=strip_tags($_POST['email']);
                $s_address=strip_tags($_POST['address']);
                $s_country=strip_tags($_POST['country']);
                $s_birthday=strip_tags($_POST['birthday']);
                $s_phone=strip_tags($_POST['phone']);
                $s_password=strip_tags($_POST['password']);
                $s_re_password=strip_tags($_POST['re_password']);
                $s_host_private=$_POST['host_private'];
                $s_host_public=$_POST['host_public'];
                $s_client_private=$_POST['client_private'];
                $s_client_public=$_POST['client_public'];

                $pdo=new PDO($x_dbhost, $x_dbuser, $x_dbpass);
              //Check Username Duplicate
                $duplicate=false;
                $stmt = $pdo->prepare("SELECT name FROM users");
                $stmt->execute();
                $rows = $stmt->fetchAll(pdo::FETCH_ASSOC);

                foreach ($rows as $row) {
                  if ($s_name == $row["name"]) {
                    $duplicate=true;
                  }
                }
              //Check Username Duplicate

                if($duplicate==false){

                  if ($s_re_password == $s_password) {

                    $sql = "INSERT INTO users (name, fullname, email, birthday, phone, address, country, password, host_private, host_public, client_private, client_public) VALUES (:name, :fullname, :email, :birthday, :phone, :address, :country, PASSWORD(:password), :host_private, :host_public, :client_private, :client_public)";
                    $stmt = $pdo->prepare($sql);
                    $stmt->execute(array(
                      ':name' => $s_name,
                      ':fullname' => $s_fullname,
                      ':email' => $s_email,
                      ':birthday' => $s_birthday,
                      ':phone' => $s_phone,
                      ':address' => $s_address,
                      ':country' => $s_country,
                      ':password' => $s_password,
                      ':host_private' => $s_host_private,
                      ':host_public' => $s_host_public,
                      ':client_private' => $s_client_private,
                      ':client_public' => $s_client_public,
                    ));
                    $success=true;
                    unset($_POST);
                  #echo '<script type="text/javascript">$("#regz").remove();$("#reg_form").append("<button class=\"btn btn-success btn-user btn-block\" onclick=\"window.location.href=\'./login.php\'\">Back to Login</button>");</script>';
                  #echo '<div class="text-center"><p style="color: green;">Registration Success!<br></p></div>';
                    echo '<script>alert("Registration Success!"); window.location.href="./login.php";</script>';
                  }
                  else {
                    echo '<script type="text/javascript">$("#info").append("<div class=\"text-center\"><p style=\"color: red;\">[ Password Entered is not Match ]</p></div>")</script>';
                  }
                }
                elseif ($duplicate==true) {
                  echo '<script type="text/javascript">$("#info").append("<div class=\"text-center\"><p style=\"color: orange;\">[ Username is Already Taken ]</p></div>")</script>';
                }
              }
              ?>

              <hr>
              <div class="text-center">
                <a class="small" href="./forgot-password.php">Forgot Password?</a>
              </div>
              <div class="text-center">
                <a class="small" href="./login.php">Already have an account? Login!</a>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>

  </div>

  <!-- Bootstrap core JavaScript-->
  <script src="vendor/jquery/jquery.min.js"></script>
  <script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>

  <!-- Core plugin JavaScript-->
  <script src="vendor/jquery-easing/jquery.easing.min.js"></script>

  <!-- Custom scripts for all pages-->
  <script src="js/sb-admin-2.min.js"></script>

</body>

</html>
