From 1b88b67544eb59fa1c072d4db043dead7164cd5c Mon Sep 17 00:00:00 2001 From: Seth Schoen Date: Mon, 16 Jul 2012 19:25:27 -0700 Subject: [PATCH] use C language hashcash program to generate cash from client --- client-webserver/client.py | 10 ++++------ client-webserver/hashcash.py | 1 - server-ca/chocolate.py | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) delete mode 120000 client-webserver/hashcash.py diff --git a/client-webserver/client.py b/client-webserver/client.py index 631ac1ce0..2e9c21191 100755 --- a/client-webserver/client.py +++ b/client-webserver/client.py @@ -2,15 +2,11 @@ from chocolate_protocol_pb2 import chocolatemessage import M2Crypto -import urllib2, os, sys, time, random, sys, hashlib, hashcash +import urllib2, os, sys, time, random, sys, hashlib # It is OK to use the upstream M2Crypto here instead of our modified # version. -# hashcash.py here should be a symlink to ../server-ca/hashcash.py -difficulty = 20 -# TODO: unfortunately, the C hashcash implementation seems to be about -# 2^6 times faster than the native Python implementation, so -# calibrating the difficulty is a bit of a problem. +difficulty = 23 # bits of hashcash to generate def sha256(m): return hashlib.sha256(m).hexdigest() @@ -66,6 +62,8 @@ def make_request(m, csr): m.request.timestamp = int(time.time()) m.request.csr = csr m.request.clientpuzzle = hashcash.mint(server, difficulty) + hashcash_command = "hashcash -P -m -b %d -r %s" % (difficulty, server) + m.request.clientpuzzle = subprocess.check_output(hashcash_command.split(), shell=False).rstrip() def sign(key, m): m.request.sig = rsa_sign(key, ("(%d) (%s) (%s)" % (m.request.timestamp, m.request.recipient, m.request.csr))) diff --git a/client-webserver/hashcash.py b/client-webserver/hashcash.py deleted file mode 120000 index 3335450d4..000000000 --- a/client-webserver/hashcash.py +++ /dev/null @@ -1 +0,0 @@ -../server-ca/hashcash.py \ No newline at end of file diff --git a/server-ca/chocolate.py b/server-ca/chocolate.py index 5113c0b12..42eede9fb 100755 --- a/server-ca/chocolate.py +++ b/server-ca/chocolate.py @@ -11,7 +11,7 @@ from google.protobuf.message import DecodeError MaximumSessionAge = 100 # seconds, to demonstrate session timeout MaximumChallengeAge = 600 # to demonstrate challenge timeout -difficulty = 20 # bits of hashcash required with new requests +difficulty = 23 # bits of hashcash required with new requests try: chocolate_server_name = open("SERVERNAME").read().rstrip()