Skip to content

Commit

Permalink
authentication fails if timeout exceeded
Browse files Browse the repository at this point in the history
  • Loading branch information
F483 committed Aug 19, 2015
1 parent 175dbc1 commit f8b7424
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
2 changes: 1 addition & 1 deletion dataserv/Farmer.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def authenticate(self, header_authorization, header_date):
date = datetime(*parsedate(header_date)[:6])
timeout = self.get_server_authentication_timeout()
delta = datetime.now() - date
if delta > timedelta(seconds=timeout):
if delta >= timedelta(seconds=timeout):
raise ValueError("Header date to old!")

# verify signature
Expand Down
19 changes: 18 additions & 1 deletion tests/test_Farmer.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from dataserv.Farmer import Farmer
from email.utils import formatdate
from datetime import datetime
from datetime import timedelta
from time import mktime


Expand Down Expand Up @@ -115,10 +116,26 @@ def test_authentication_success(self):
address = blockchain.get_address(wif)
farmer = Farmer(address)

# first authentication
header_date = formatdate(timeval=mktime(datetime.now().timetuple()),
localtime=True, usegmt=True)
message = farmer.get_server_address() + " " + header_date
header_authorization = blockchain.sign_unicode(wif, message)
self.assertTrue(farmer.authenticate(header_authorization, header_date))

def test_authentication_timeout(self):
def callback():
blockchain = BtcTxStore()
wif = blockchain.create_key()
address = blockchain.get_address(wif)
farmer = Farmer(address)

timeout = farmer.get_server_authentication_timeout()

date = datetime.now() - timedelta(seconds=timeout)
header_date = formatdate(timeval=mktime(date.timetuple()),
localtime=True, usegmt=True)
message = farmer.get_server_address() + " " + header_date
header_authorization = blockchain.sign_unicode(wif, message)
farmer.authenticate(header_authorization, header_date)
self.assertRaises(ValueError, callback)

0 comments on commit f8b7424

Please sign in to comment.