def compute_cipher (self, user, X, Y): C = self.conc(X, Y) dsa = DSA(self.point, self.n) u, v, m = dsa.sign(user, C) D = str(u) + '$' + str(v) + '$' + str(m) u_cipher = encrypt_AES(user, D) return u_cipher
def verify_cipher (self, user, cipher, X, Y): D = decrypt_AES(user, cipher) [u, v, C] = D.split('$') u = int(u) v = int(v) if C != self.conc(Y, X): return 1, "[STS ERROR] Received message is different from expected" dsa = DSA(self.point, self.n) nb, error_m = dsa.verify(Y, C, u, v) if nb != 0: return nb, error_m return 0, "[STS] Verification OK, shared secret validated"