Ejemplo n.º 1
0
 public function load()
 {
     #fwrite(STDOUT, __CLASS__.'->'.__FUNCTION__.''."\n");
     if (parent::load()) {
         if (isset($this->data['hashcashs']) && $this->data['hashcashs']) {
             foreach ($this->data['hashcashs'] as $hashcashId => $hashcashAr) {
                 $this->hashcashsId = $hashcashId;
                 #fwrite(STDOUT, __CLASS__.'->'.__FUNCTION__.': '.$this->hashcashsId."\n");
                 $hashcash = new Hashcash();
                 if ($hashcash->verify($hashcashAr['stamp'])) {
                     $this->hashcashs[$hashcashId] = $hashcash;
                 }
             }
         }
         unset($this->data['hashcashs']);
         return true;
     }
     return false;
 }
Ejemplo n.º 2
0
 public function hashcashVerify($hashcashStr, $resource, $bits = null)
 {
     #$this->log('debug', 'hashcash: '.$hashcashStr);
     if ($bits === null) {
         $bits = static::HASHCASH_BITS_MIN;
     }
     $hashcash = new Hashcash();
     $hashcash->setExpiration(static::HASHCASH_EXPIRATION);
     try {
         if ($hashcash->verify($hashcashStr)) {
             #$this->log('debug', 'bits: '.$hashcash->getBits());
             $added = false;
             if ($hashcash->getVersion() >= 1 && $hashcash->getBits() >= $bits && $hashcash->getResource() == $resource && ($added = $this->getHashcashDb()->addHashcash($hashcash))) {
                 #$this->log('debug', 'hashcash: OK');
                 return true;
             } else {
                 $this->log('error', 'hashcash verification failed');
                 $this->log('error', 'hashcash version: ' . $hashcash->getVersion());
                 $this->log('error', 'hashcash bit: ' . $hashcash->getBits() . ' (min: ' . $bits . ')');
                 $this->log('error', 'hashcash resource: ' . $hashcash->getResource() . ' (' . $resource . ')');
                 $this->log('error', 'hashcash added: ' . ($added ? 'yes' : 'no'));
             }
         }
     } catch (Exception $e) {
         $this->log('warning', $e->getMessage());
     }
     // @codeCoverageIgnoreEnd
     $this->log('debug', 'hashcash: ' . $hashcashStr . ' failed');
     return false;
 }
Ejemplo n.º 3
0
// Example 4a: use a certain date
$hashcash = new Hashcash(20, '*****@*****.**');
$hashcash->setDate('870221');
$stamp = '';
try {
    $stamp = $hashcash->mint();
    print "stamp4: '" . $stamp . "'\n";
} catch (Exception $e) {
    print 'ERROR 6: ' . $e->getMessage() . "\n";
}
// Example 4a: verify a stamp, ignore expiration
$hashcash = new Hashcash();
$hashcash->setExpiration(0);
// Never expire.
try {
    print "stamp4 verify: '" . ($hashcash->verify($stamp) ? 'Ok' : 'failed') . "'\n";
} catch (Exception $e) {
    print 'ERROR 7: ' . $e->getMessage() . "\n";
}
// Example 5: use 1 attempt, must fail with this configuration
$hashcash = new Hashcash(19, '*****@*****.**');
$hashcash->setDate('140427');
$hashcash->setSalt('axfcrlV1hxLvF6J9BeDiLw==');
$hashcash->setMintAttemptsMax(1);
$stamp = '';
try {
    $stamp = $hashcash->mint();
    print "stamp5: '" . $stamp . "'\n";
} catch (Exception $e) {
    print 'ERROR 8: ' . $e->getMessage() . "\n";
}
Ejemplo n.º 4
0
 public function testSave3()
 {
     #fwrite(STDOUT, __METHOD__.''."\n");
     $db = new HashcashDb('test_data/test_hashcashs3.yml');
     $ts = time();
     $hashcash = new Hashcash();
     $hashcash->setVersion(1);
     $hashcash->setBits(5);
     $hashcash->setResource('res1');
     $hashcash->mint();
     $this->assertTrue($hashcash->verify());
     $this->assertTrue($db->addHashcash($hashcash));
     $hashcash = new Hashcash();
     $hashcash->setVersion(1);
     $hashcash->setBits(5);
     $hashcash->setDate(date(Hashcash::DATE_FORMAT, $ts - 3600 * 24 * 90));
     $hashcash->setResource('res2');
     $hashcash->mint();
     $this->assertFalse($hashcash->verify());
     $this->assertTrue($db->addHashcash($hashcash));
     $hashcash = new Hashcash();
     $hashcash->setVersion(1);
     $hashcash->setBits(5);
     $hashcash->setDate(date(Hashcash::DATE_FORMAT, $ts - 3600 * 24 * 90));
     $hashcash->setResource('res3');
     $hashcash->setExpiration(3600 * 24 * 120);
     $hashcash->mint();
     $this->assertTrue($hashcash->verify());
     $this->assertTrue($db->addHashcash($hashcash));
     $hashcash = new Hashcash();
     $hashcash->setVersion(1);
     $hashcash->setBits(5);
     $hashcash->setDate(date(Hashcash::DATE_FORMAT, $ts - 3600 * 24 * 10));
     $hashcash->setResource('res4');
     $hashcash->mint();
     $this->assertTrue($hashcash->verify());
     $this->assertTrue($db->addHashcash($hashcash));
     $hashcash = new Hashcash();
     $hashcash->setVersion(1);
     $hashcash->setBits(5);
     $hashcash->setDate(date('ymdHis', $ts - 60));
     $hashcash->setResource('res5');
     $hashcash->setExpiration(30);
     $hashcash->mint();
     $this->assertFalse($hashcash->verify());
     $this->assertTrue($db->addHashcash($hashcash));
     $hashcash = new Hashcash();
     $hashcash->setVersion(1);
     $hashcash->setBits(5);
     $hashcash->setDate(date(Hashcash::DATE_FORMAT12, $ts - 60));
     $hashcash->setResource('res6');
     $hashcash->mint();
     $this->assertTrue($hashcash->verify());
     $this->assertTrue($db->addHashcash($hashcash));
     #fwrite(STDOUT, __METHOD__.': save '.$db->save()."\n");
     $this->assertTrue($db->save() > 0);
     $this->assertFileExists('test_data/test_hashcashs3.yml');
 }
Ejemplo n.º 5
0
 /**
  * @expectedException InvalidArgumentException
  * @expectedExceptionCode 2
  */
 public function testVerifyInvalidArgumentException2()
 {
     #$this->assertTrue(true);
     $hashcash = new Hashcash();
     $hashcash->verify('1:20:140422:mint2:ext2:22060');
 }