;. * * @package OpenEMR * @author Ken Chapple * @author Medical Information Integration, LLC * @link http://www.open-emr.org **/ namespace ESign; require_once $GLOBALS['srcdir'] . '/ESign/VerificationIF.php'; class Utils_Verification implements VerificationIF { public function hash($data, $algo = 'sha3-512') { $string = ""; if (is_array($data)) { $string = $this->stringifyArray($data); } else { $string = $data; } if ($algo == 'sha1') { // support backward compatibility of prior hashes in sha1 $hash = sha1($string); } else { $hash = hash('sha3-512', $string); } return $hash; } protected function stringifyArray(array $arr) { $string = ""; foreach ($arr as $part) { if (is_array($part)) { $string .= $this->stringifyArray($part); } else { $string .= $part; } } return $string; } public function verify($data, $hash) { if (strlen($hash) < 50) { // support backward compatibility of prior hashes in sha1 $currentHash = $this->hash($data, 'sha1'); } else { $currentHash = $this->hash($data); } if (hash_equals($currentHash, $hash)) { return true; } return false; } }