// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module authentication;

// Specifies if the type of stored credential is a plain text password,
// password in encrypted form, fully scoped master OAuth token or
// downscoped OAuth token.
enum CredentialType {
  DOWNSCOPED_OAUTH_REFRESH_TOKEN = 1
};

// Specifies the type of identity provider for authenticating user.
enum AuthProvider {
  GOOGLE = 1
};

// This struct is used to persist long lived credentials for each user and is
// not passed between services.
struct Credentials {
  // The type of authentication service provider such as Google, Facebook,
  // Twitter, or Amazon.
  AuthProvider auth_provider;
  // Password or equivalent token grant that acts as the key to user data such
  // as encrypted password or fully scoped master OAuth token.
  string token;
  // Type of stored credential.
  CredentialType credential_type;
  // List of permissible scopes for this saved grant.
  string scopes;
};

// Database for the credentials database implementation.
struct CredentialStore {
  // Version of the database.
  uint32 version;
  // Map from user account to credentials. User account is identified by a
  // user's unique account name such as email id.
  map<string, Credentials> credentials;
};
