GenerateKE3 State: - state, a ClientState structure. Input: - client_identity, the optional encoded client identity, which is set to client_public_key if not specified. - server_identity, the optional encoded server identity, which is set to server_public_key if not specified. - ke2, a KE2 message structure. Output: - ke3, a KE3 message structure. - session_key, the session's shared secret. - export_key, an additional client key. def GenerateKE3(client_identity, server_identity, ke2): (client_private_key, cleartext_credentials, export_key) = RecoverCredentials(state.password, state.blind, ke2.credential_response, server_identity, client_identity) (ke3, session_key) = AuthClientFinalize(cleartext_credentials, client_private_key, ke2) return (ke3, session_key, export_key)