You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
4.3 KiB
126 lines
4.3 KiB
/**
|
|
* Copyright 2020 Huawei Technologies Co., Ltd
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef GE_COMMON_AUTH_FILE_SAVER_H_
|
|
#define GE_COMMON_AUTH_FILE_SAVER_H_
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "framework/common/helper/om_file_helper.h"
|
|
#include "framework/common/types.h"
|
|
#include "external/ge/ge_ir_build.h"
|
|
#include "graph/buffer.h"
|
|
#include "mmpa/mmpa_api.h"
|
|
|
|
struct PROC_PARAM {
|
|
uint8_t *model_name;
|
|
|
|
// ISV Ek buffer
|
|
uint8_t *model_key;
|
|
uint32_t model_key_len;
|
|
|
|
// ISV root certificate buffer
|
|
uint8_t *root_cert;
|
|
uint32_t root_cert_len;
|
|
|
|
// ISV private key buffer
|
|
uint8_t *pri_key;
|
|
uint32_t pri_key_len;
|
|
|
|
// Raw AI Module Image buffer
|
|
uint8_t *ai_image;
|
|
uint32_t ai_image_len;
|
|
|
|
// ISV HW key buffer
|
|
uint8_t *hw_key;
|
|
uint32_t hw_key_len;
|
|
};
|
|
|
|
struct ProcOut {
|
|
uint8_t *passcode;
|
|
uint32_t passcode_len;
|
|
uint8_t *encrypted_img;
|
|
uint32_t encrypted_img_len;
|
|
};
|
|
|
|
namespace ge {
|
|
using std::string;
|
|
|
|
class FileSaver {
|
|
public:
|
|
///
|
|
/// @ingroup domi_common
|
|
/// @brief save model, no encryption
|
|
/// @return Status result
|
|
///
|
|
static Status SaveToFile(const string &file_path, const ge::ModelData &model,
|
|
const ModelFileHeader *model_file_header = nullptr);
|
|
|
|
static Status SaveToFile(const string &file_path, ModelFileHeader &model_file_header,
|
|
ModelPartitionTable &model_partition_table,
|
|
const std::vector<ModelPartition> &partition_datas);
|
|
|
|
static Status SaveToFile(const string &file_path, ModelFileHeader &file_header,
|
|
vector<ModelPartitionTable *> &model_partition_tables,
|
|
const vector<vector<ModelPartition>> &all_partition_datas);
|
|
|
|
static Status SaveToBuffWithFileHeader(const ModelFileHeader &file_header,
|
|
ModelPartitionTable &model_partition_table,
|
|
const std::vector<ModelPartition> &partition_datas,
|
|
ge::ModelBufferData& model);
|
|
|
|
static Status SaveToBuffWithFileHeader(const ModelFileHeader &file_header,
|
|
const std::vector<ModelPartitionTable *> &model_partition_tables,
|
|
const std::vector<std::vector<ModelPartition>> &all_partition_datas,
|
|
ge::ModelBufferData &model);
|
|
|
|
static Status SaveToFile(const string &file_path, const void *data, int len);
|
|
|
|
protected:
|
|
///
|
|
/// @ingroup domi_common
|
|
/// @brief Check validity of the file path
|
|
/// @return Status result
|
|
///
|
|
static Status CheckPath(const string &file_path);
|
|
|
|
static Status WriteData(const void *data, uint32_t size, int32_t fd);
|
|
|
|
static Status OpenFile(int32_t &fd, const std::string &file_path);
|
|
|
|
///
|
|
/// @ingroup domi_common
|
|
/// @brief save model to file
|
|
/// @param [in] file_path file output path
|
|
/// @param [in] file_header file header info
|
|
/// @param [in] data model data
|
|
/// @param [in] len model length
|
|
/// @return Status result
|
|
///
|
|
static Status SaveWithFileHeader(const string &file_path, const ModelFileHeader &file_header, const void *data,
|
|
int len);
|
|
|
|
static Status SaveWithFileHeader(const std::string &file_path, const ModelFileHeader &file_header,
|
|
ModelPartitionTable &model_partition_table,
|
|
const std::vector<ModelPartition> &partition_datas);
|
|
static Status SaveWithFileHeader(const std::string &file_path, const ModelFileHeader &file_header,
|
|
std::vector<ModelPartitionTable *> &model_partition_tables,
|
|
const std::vector<std::vector<ModelPartition>> &all_partition_datas);
|
|
};
|
|
} // namespace ge
|
|
#endif // GE_COMMON_AUTH_FILE_SAVER_H_
|