diff --git a/bigchaindb/util.py b/bigchaindb/util.py index 5d928374..8b96b5b3 100644 --- a/bigchaindb/util.py +++ b/bigchaindb/util.py @@ -8,6 +8,7 @@ import multiprocessing as mp from datetime import datetime import cryptoconditions as cc +from cryptoconditions.exceptions import ParsingError import bigchaindb from bigchaindb import exceptions @@ -422,11 +423,11 @@ def verify_signature(signed_transaction): # verify the fulfillment (for now lets assume there is only one owner) try: parsed_fulfillment = cc.Fulfillment.from_uri(fulfillment['fulfillment']) - except Exception: + except (TypeError, ValueError, ParsingError): return False is_valid = parsed_fulfillment.validate(serialize(fulfillment_message)) - # if not a `CREATE` transaction + # if transaction has an input (i.e. not a `CREATE` transaction) if fulfillment['input']: is_valid &= parsed_fulfillment.condition.serialize_uri() == \ fulfillment_message['condition']['condition']['uri'] diff --git a/setup.py b/setup.py index 053e0fa8..0accdac2 100644 --- a/setup.py +++ b/setup.py @@ -76,7 +76,7 @@ setup( 'rethinkdb==2.2.0.post4', 'pysha3==0.3', 'pytz==2015.7', - 'cryptoconditions==0.2.1', + 'cryptoconditions==0.2.2', 'statsd==3.2.1', 'python-rapidjson==0.0.6', 'logstats==0.2.1',