- return setcookie($name, $value, $expire, self::PATH, self::DOMAIN, $secure, self::HTTPONLY);
+ return setcookie(self::NAME, $value, $expire, self::PATH, self::DOMAIN, $secure, self::HTTPONLY);
+ }
+
+ /**
+ * Calculate a hash of a user's private data for storage in the cookie.
+ * Hashed twice, with the user's own private key first, then the node's private key second.
+ *
+ * @param string $privateData User private data
+ * @param string $privateKey User private key
+ *
+ * @return string Hashed data
+ */
+ public function hashPrivateData(string $privateData, string $privateKey): string
+ {
+ return hash_hmac(
+ 'sha256',
+ hash_hmac('sha256', $privateData, $privateKey),
+ $this->sitePrivateKey
+ );
+ }
+
+ /**
+ * @param string $hash Hash from a cookie key value
+ * @param string $privateData User private data
+ * @param string $privateKey User private key
+ *
+ * @return boolean
+ *
+ */
+ public function comparePrivateDataHash(string $hash, string $privateData, string $privateKey): bool
+ {
+ return hash_equals(
+ $this->hashPrivateData($privateData, $privateKey),
+ $hash
+ );