def decode(self, jsn):
        obj = json.loads(jsn)
        db = obj.pop('db') if obj.get('db') is not None else None

        if isinstance(self, SignerBlindSignature):
            new = SignerBlindSignature(IntegerGroupQ())
        elif isinstance(self, UserBlindSignature):
            new = UserBlindSignature()
        else:
            raise Exception("Unexpected argument")

        for key in obj:
            if obj[key] == 'null':
                attr_val = None
            else:
                attr_val = SigConversion.strlist2modint(obj[key])
            setattr(new, key, attr_val)
        if db:
            for key in db:
                db[key] = SigConversion.strlist2modint(db[key])
            setattr(new, 'db', db)
        new.group = IntegerGroupQ()
        new.group.setparam(p=new.p, q=new.q)
        return new
def gen_proofs_handler(policy, es):
    # Get policy from database and setup list
    policy = PolicyModel.query.get(policy)
    resp = list()

    # Iterate through the challenge responses received
    for x in es:
        # Retrieve KeyModel object
        timestamp = x.get('timestamp')
        key = policy.get_key(timestamp)

        # Retrieve SigVarsModel object so we can populate the signer with u and d
        sigvars = current_user.get_sigvar(timestamp, policy.policy)

        # Get policy pool
        pool = policy.get_pool(timestamp)
        if key and sigvars:
            signer = key.signer
            signer.d = sigvars.d
            signer.u = sigvars.u
            signer.s1 = sigvars.s1
            signer.s2 = sigvars.s2

            # Do the appropriate conversions so that we can serialize
            x['e'] = SigConversion.strlist2modint(x.get('e'))
            proofs = SigConversion.convert_dict_strlist(signer.get_proofs(x))
            hash_tmp = SHA256Hash().new(json.dumps(proofs).encode())
            hash_proof = Conversion.OS2IP(hash_tmp.digest())

            # Add proofs to the pool
            pool.append_to_pool(proofs)

            resp.append({'timestamp': timestamp, 'hash_proof': hash_proof})

    resp = {'policy': policy.policy, 'hash_proofs': resp}

    return resp
Esempio n. 3
0
 def s2(self):
     return SigConversion.strlist2modint(self.s2_)
Esempio n. 4
0
 def s1(self):
     return SigConversion.strlist2modint(self.s1_)
Esempio n. 5
0
 def d(self):
     return SigConversion.strlist2modint(self.d_)
Esempio n. 6
0
 def u(self):
     return SigConversion.strlist2modint(self.u_)