#include "extensions/browser/extension_creator.h"
#include <stddef.h>
#include <string>
#include <vector>
#include "base/files/file_util.h"
#include "base/files/scoped_file.h"
#include "base/files/scoped_temp_dir.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/strings/string_util.h"
#include "components/crx_file/crx_creator.h"
#include "components/crx_file/id_util.h"
#include "crypto/rsa_private_key.h"
#include "crypto/signature_creator.h"
#include "extensions/browser/extension_creator_filter.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_l10n_util.h"
#include "extensions/common/file_util.h"
#include "extensions/strings/grit/extensions_strings.h"
#include "third_party/zlib/google/zip.h"
#include "ui/base/l10n/l10n_util.h"
namespace {
const int kRSAKeySize = …;
}
namespace extensions {
ExtensionCreator::ExtensionCreator() : … { … }
bool ExtensionCreator::InitializeInput(
const base::FilePath& extension_dir,
const base::FilePath& crx_path,
const base::FilePath& private_key_path,
const base::FilePath& private_key_output_path,
int run_flags) { … }
bool ExtensionCreator::ValidateExtension(const base::FilePath& extension_dir,
int run_flags) { … }
std::unique_ptr<crypto::RSAPrivateKey> ExtensionCreator::ReadInputKey(
const base::FilePath& private_key_path) { … }
std::unique_ptr<crypto::RSAPrivateKey> ExtensionCreator::GenerateKey(
const base::FilePath& output_private_key_path) { … }
bool ExtensionCreator::CreateZip(const base::FilePath& extension_dir,
const base::FilePath& temp_path,
base::FilePath* zip_path) { … }
bool ExtensionCreator::CreateCrx(
const base::FilePath& zip_path,
crypto::RSAPrivateKey* private_key,
const base::FilePath& crx_path,
const std::optional<std::string>& compressed_verified_contents) { … }
bool ExtensionCreator::CreateCrxAndPerformCleanup(
const base::FilePath& extension_dir,
const base::FilePath& crx_path,
crypto::RSAPrivateKey* private_key,
const std::optional<std::string>& compressed_verified_contents) { … }
bool ExtensionCreator::Run(const base::FilePath& extension_dir,
const base::FilePath& crx_path,
const base::FilePath& private_key_path,
const base::FilePath& output_private_key_path,
int run_flags) { … }
}