chromium/components/sync/chromeos/explicit_passphrase_mojo_utils.cc

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

#include "components/sync/chromeos/explicit_passphrase_mojo_utils.h"

#include <string>
#include <vector>

#include "components/sync/engine/nigori/nigori.h"

namespace syncer {

crosapi::mojom::NigoriKeyPtr NigoriToMojo(const Nigori& nigori) {
  std::string deprecated_user_key;
  std::string encryption_key;
  std::string mac_key;
  nigori.ExportKeys(&deprecated_user_key, &encryption_key, &mac_key);

  crosapi::mojom::NigoriKeyPtr mojo_result = crosapi::mojom::NigoriKey::New();
  mojo_result->encryption_key =
      std::vector<uint8_t>(encryption_key.begin(), encryption_key.end());
  mojo_result->mac_key = std::vector<uint8_t>(mac_key.begin(), mac_key.end());
  return mojo_result;
}

std::unique_ptr<Nigori> NigoriFromMojo(
    const crosapi::mojom::NigoriKey& mojo_nigori_key) {
  const std::string encryption_key(mojo_nigori_key.encryption_key.begin(),
                                   mojo_nigori_key.encryption_key.end());
  const std::string mac_key(mojo_nigori_key.mac_key.begin(),
                            mojo_nigori_key.mac_key.end());
  // |user_key| is deprecated, it's safe to pass empty string.
  return Nigori::CreateByImport(
      /*user_key=*/std::string(), encryption_key, mac_key);
}

}  // namespace syncer