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
def s2(self): return SigConversion.strlist2modint(self.s2_)
def s1(self): return SigConversion.strlist2modint(self.s1_)
def d(self): return SigConversion.strlist2modint(self.d_)
def u(self): return SigConversion.strlist2modint(self.u_)