// Copyright 2019 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 chrome.mojom;

// API exposed by the browser process to the renderer process, such that the
// renderer can interact with the encryption state of Sync. Exposed to allowed
// origins only.
interface SyncEncryptionKeysExtension {
  // Provides sync encryption keys to the browser process. Returns true if no
  // further encryption keys are needed (which includes the case, among others,
  // of encryption keys not being needed even prior to this call).
  SetEncryptionKeys(string gaia_id, array<array<uint8>> encryption_keys,
                    int32 last_key_version) => ();

  // Registers a new trusted recovery method that can be used by other clients
  // to retrieve sync trusted vault encryption keys. |method_type_hint| is an
  // opaque value provided server-side that may be used for related future
  // interactions with the server.
  AddTrustedRecoveryMethod(string gaia_id, array<uint8> public_key,
                           int32 method_type_hint) => ();
};