Beispiel #1
0
    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
Beispiel #2
0
    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"