// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/// Defines the protocols used to enroll and interact with user
/// authentication mechanisms.
///
/// New authentication mechanisms may be added to the system by implementing the
/// server side of one or more of these protocols, the core identity system will
/// act as the client.
library fuchsia.identity.authentication;
