Exemplo n.º 1
0
 public function LoadDBData($data)
 {
     $options = array("mode" => "CBC");
     $data2 = explode(":", $data);
     if (count($data2) == 3) {
         $mode = $data2[0] == "aes256" ? "aes256" : "blowfish";
         $key = pack("H*", SSO_CLIENT_RAND_SEED11);
         $options["iv"] = pack("H*", SSO_CLIENT_RAND_SEED12);
         if ((int) $data2[1] === 2) {
             $options["key2"] = pack("H*", SSO_CLIENT_RAND_SEED13);
             $options["iv2"] = pack("H*", SSO_CLIENT_RAND_SEED14);
         }
         $data = $data2[2];
     } else {
         $mode = "blowfish";
         $compressed = function_exists("gzcompress") && function_exists("gzuncompress");
         $key = pack("H*", SSO_CLIENT_RAND_SEED3);
         $options["iv"] = pack("H*", SSO_CLIENT_RAND_SEED2);
     }
     $data = @base64_decode($data);
     if ($data === false) {
         return false;
     }
     if ($mode == "aes256") {
         $data = SSO_ExtendedAES::ExtractDataPacket($data, $key, $options);
     } else {
         $data = SSO_Blowfish::ExtractDataPacket($data, $key, $options);
     }
     if ($data === false) {
         return false;
     }
     if (count($data2) != 3) {
         $compressed = false;
     } else {
         $compressed = (bool) (int) substr($data, 0, 1);
         $data = substr($data, 2);
     }
     if ($compressed) {
         $data = @gzuncompress($data);
     }
     if ($data === false) {
         return false;
     }
     if (count($data2) == 3) {
         $data = @json_decode($data, true);
     } else {
         $data = @unserialize($data);
     }
     if ($data === false) {
         return false;
     }
     $this->user_cache["dbdata"] = $data;
     return true;
 }