def parsePayload(cls, data, private=False): p, data = read_mpi(data) q, data = read_mpi(data) g, data = read_mpi(data) y, data = read_mpi(data) if private: x, data = read_mpi(data) return cls((y, g, p, q, x), private=True), data return cls((y, g, p, q), private=False), data
def handleRevealSig(self, msg): if self.state != STATE_AWAITING_REVEALSIG: logger.error('bad state for RevealSig') raise InvalidParameterError self.r = msg.rkey gxmpi = AESCTR(self.r).decrypt(self.encgx) if SHA256(gxmpi) != self.hashgx: logger.error('Hashes don\'t match') logger.info('r=%r, hashgx=%r, computed hash=%r, gxmpi=%r', self.r, self.hashgx, SHA256(gxmpi), gxmpi) raise InvalidParameterError self.gy = read_mpi(gxmpi)[0] self.createAuthKeys() if msg.mac != SHA256HMAC160(self.mac_m2, msg.getMacedData()): logger.error('HMACs don\'t match') logger.info('mac=%r, mac_m2=%r, data=%r', msg.mac, self.mac_m2, msg.getMacedData()) raise InvalidParameterError self.checkPubkeyAuth(self.enc_c, self.mac_m1, msg.encsig) aesxb = self.calculatePubkeyAuth(self.enc_cp, self.mac_m1p) self.sessionIdHalf = True self.onSuccess(self) self.ourKeyid = 0 self.state = STATE_NONE cmpmac = struct.pack(b'!I', len(aesxb)) + aesxb return proto.Signature(aesxb, SHA256HMAC160(self.mac_m2p, cmpmac))
def parsePayload(cls, data): mpis = [] if cls.dlen > 0: count, data = unpack(b"!I", data) for i in range(count): n, data = read_mpi(data) mpis.append(n) if len(data) > 0: raise TypeError("too much data for {0} mpis".format(cls.dlen)) return cls(mpis)
def parsePayload(cls, data): mpis = [] if cls.dlen > 0: count, data = unpack(b'!I', data) for _ in range(count): n, data = read_mpi(data) mpis.append(n) if len(data) > 0: raise TypeError('too much data for {0} mpis'.format(cls.dlen)) return cls(mpis)
def parse_serialized_pubKey(cls, serializedPubKey): a, data = read_mpi(serializedPubKey) b = read_mpi(data)[0] return (a, b)
def parse_serialized_privKey(cls, serializedPrivKey): return read_mpi(serializedPrivKey)[0]