def test_handshake(temp_client):
    """
    Test the handshake
    :return:
    """
    serverpriv = identity.genkey()
    serverpub = serverpriv.get_verifying_key()

    secret, message = null_proto.client_handshake_begin(temp_client["longterm"],
                                                        temp_client["session"],
                                                        serverpub)

    assert secret
    assert message

    server_secret, gotpub, challenge, challenge_plain = null_proto.server_handshake_begin(serverpriv, message)

    assert secret == server_secret

    response = null_proto.client_handshake_finish(temp_client["longterm"],
                                                  server_secret, challenge)

    complete = null_proto.server_handshake_finish(gotpub,
                                                  challenge_plain, response)

    assert "status" in complete
    assert complete["status"] == "complete"
Exemple #2
0
    def POST(self):
        postdata = web.data()
        request = json.loads(postdata)

        pubhash = request["fingerprint"]
        with session_lock:
            assert pubhash in pending_sessions
            session = pending_sessions[pubhash]
            result = null_proto.server_handshake_finish(session.pubkey, session.challenge_plain, request)

            # session ready
            session.commander = Commander()
            session.commander.session = session
            session.commander.pubkey = session.pubkey
            session.handshake_done = True

            del(pending_sessions[pubhash])
            sessions[pubhash] = session

            return json.dumps(result)