self::MAX_SKEW ) { return false; } return hash_equals( self::sign( $canonical, $secret ), $signature ); } public static function nonce(): string { return bin2hex( random_bytes( 16 ) ); } }