public function testCountersHigherThan()
 {
     $sl = new SyncLib();
     $localParams = array('yk_counter' => 100, 'yk_use' => 10);
     $otpParams = array('yk_counter' => 100, 'yk_use' => 11);
     $this->assertTrue($sl->countersHigherThan($otpParams, $localParams));
     $this->assertFalse($sl->countersHigherThan($localParams, $otpParams));
     $otpParams['yk_use'] = 10;
     $this->assertFalse($sl->countersHigherThan($otpParams, $localParams));
     $otpParams['yk_counter'] = 99;
     $this->assertFalse($sl->countersHigherThan($otpParams, $localParams));
     $otpParams['yk_counter'] = 101;
     $this->assertTrue($sl->countersHigherThan($otpParams, $localParams));
 }
}
if ($localParams['active'] != 1) {
    $myLog->log(LOG_NOTICE, 'De-activated Yubikey ' . $yk_publicname);
    sendResp(S_BAD_OTP, $apiKey);
    exit;
}
/* Conditional update local database */
$sync->updateDbCounters($syncParams);
$myLog->log(LOG_DEBUG, 'Local params ', $localParams);
$myLog->log(LOG_DEBUG, 'Sync request params ', $syncParams);
#
# Compare sync and local counters and generate warnings according to
#
# http://code.google.com/p/yubikey-val-server-php/wiki/ServerReplicationProtocol
#
if ($sync->countersHigherThan($localParams, $syncParams)) {
    $myLog->log(LOG_WARNING, 'Remote server out of sync.');
}
if ($sync->countersEqual($localParams, $syncParams)) {
    if ($syncParams['modified'] == $localParams['modified'] && $syncParams['nonce'] == $localParams['nonce']) {
        $myLog->log(LOG_NOTICE, 'Sync request unnessecarily sent');
    }
    if ($syncParams['modified'] != $localParams['modified'] && $syncParams['nonce'] == $localParams['nonce']) {
        $deltaModified = $syncParams['modified'] - $localParams['modified'];
        $myLog->log(LOG_WARNING, 'We might have a replay. 2 events at different times have generated the same counters. The time difference is ' . $deltaModified . ' seconds');
    }
    if ($syncParams['nonce'] != $localParams['nonce']) {
        $myLog->log(LOG_WARNING, 'Remote server has received a request to validate an already validated OTP ');
    }
}
$extra = array('modified' => $localParams['modified'], 'nonce' => $localParams['nonce'], 'yk_publicname' => $yk_publicname, 'yk_counter' => $localParams['yk_counter'], 'yk_use' => $localParams['yk_use'], 'yk_high' => $localParams['yk_high'], 'yk_low' => $localParams['yk_low']);