chromium/chrome/common/trusted_vault_encryption_keys_extension.mojom

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

module chrome.mojom;

// The shared encryption key for a single trusted vault.
struct TrustedVaultKey {
  int32 version;
  array<uint8> bytes;
};

// API exposed by the browser process to the renderer process, such that the
// renderer can interact with the encryption state of trusted vault clients
// (see //components/trusted_vault/README.md). Exposed to allowed origins only.
interface TrustedVaultEncryptionKeysExtension {
  // Provides encryption keys for any trusted vault to the browser process.
  // `encryption_keys` is a map of trusted vault name to a set of keys for that
  // vault.
  [EnableIfNot=is_android]
  SetEncryptionKeys(string gaia_id, map<string,
                    array<TrustedVaultKey>> encryption_keys) => ();

  // Registers a new trusted recovery method that can be used by other clients
  // to retrieve encryption keys for the sync trusted vault. `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) => ();
};