1fb299fa2Sopenharmony_ci/* 2fb299fa2Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 3fb299fa2Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4fb299fa2Sopenharmony_ci * you may not use this file except in compliance with the License. 5fb299fa2Sopenharmony_ci * You may obtain a copy of the License at 6fb299fa2Sopenharmony_ci * 7fb299fa2Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8fb299fa2Sopenharmony_ci * 9fb299fa2Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10fb299fa2Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11fb299fa2Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12fb299fa2Sopenharmony_ci * See the License for the specific language governing permissions and 13fb299fa2Sopenharmony_ci * limitations under the License. 14fb299fa2Sopenharmony_ci */ 15fb299fa2Sopenharmony_ci 16fb299fa2Sopenharmony_ci#ifndef LZ4_PKG_FILE_H 17fb299fa2Sopenharmony_ci#define LZ4_PKG_FILE_H 18fb299fa2Sopenharmony_ci 19fb299fa2Sopenharmony_ci#include "pkg_pkgfile.h" 20fb299fa2Sopenharmony_ci#include "pkg_utils.h" 21fb299fa2Sopenharmony_ci 22fb299fa2Sopenharmony_cinamespace Hpackage { 23fb299fa2Sopenharmony_ciclass Lz4FileEntry : public PkgEntry { 24fb299fa2Sopenharmony_cipublic: 25fb299fa2Sopenharmony_ci Lz4FileEntry(PkgFilePtr pkgFile, uint32_t nodeId) : PkgEntry(pkgFile, nodeId) 26fb299fa2Sopenharmony_ci { 27fb299fa2Sopenharmony_ci fileInfo_.compressionLevel = 0; 28fb299fa2Sopenharmony_ci fileInfo_.blockIndependence = 0; 29fb299fa2Sopenharmony_ci fileInfo_.blockSizeID = 0; 30fb299fa2Sopenharmony_ci fileInfo_.contentChecksumFlag = 0; 31fb299fa2Sopenharmony_ci } 32fb299fa2Sopenharmony_ci 33fb299fa2Sopenharmony_ci ~Lz4FileEntry() override {} 34fb299fa2Sopenharmony_ci 35fb299fa2Sopenharmony_ci int32_t Init(const PkgManager::FileInfoPtr fileInfo, PkgStreamPtr inStream) override; 36fb299fa2Sopenharmony_ci 37fb299fa2Sopenharmony_ci const FileInfo *GetFileInfo() const override 38fb299fa2Sopenharmony_ci { 39fb299fa2Sopenharmony_ci return &fileInfo_.fileInfo; 40fb299fa2Sopenharmony_ci }; 41fb299fa2Sopenharmony_ci 42fb299fa2Sopenharmony_ci int32_t EncodeHeader(PkgStreamPtr inStream, size_t startOffset, size_t &encodeLen) override; 43fb299fa2Sopenharmony_ci 44fb299fa2Sopenharmony_ci int32_t Pack(PkgStreamPtr inStream, size_t startOffset, size_t &encodeLen) override; 45fb299fa2Sopenharmony_ci 46fb299fa2Sopenharmony_ci int32_t Unpack(PkgStreamPtr outStream) override; 47fb299fa2Sopenharmony_ci 48fb299fa2Sopenharmony_ci int32_t DecodeHeader(PkgBuffer &buffer, size_t, size_t, size_t &decodeLen) override; 49fb299fa2Sopenharmony_ci 50fb299fa2Sopenharmony_ciprivate: 51fb299fa2Sopenharmony_ci Lz4FileInfo fileInfo_ {}; 52fb299fa2Sopenharmony_ci}; 53fb299fa2Sopenharmony_ci 54fb299fa2Sopenharmony_ciclass Lz4PkgFile : public PkgFileImpl { 55fb299fa2Sopenharmony_cipublic: 56fb299fa2Sopenharmony_ci explicit Lz4PkgFile(PkgManager::PkgManagerPtr manager, PkgStreamPtr stream, PkgInfoPtr header = nullptr) 57fb299fa2Sopenharmony_ci : PkgFileImpl(manager, stream, PkgFile::PKG_TYPE_LZ4) 58fb299fa2Sopenharmony_ci { 59fb299fa2Sopenharmony_ci UNUSED(header); 60fb299fa2Sopenharmony_ci pkgInfo_.signMethod = PKG_SIGN_METHOD_RSA; 61fb299fa2Sopenharmony_ci pkgInfo_.digestMethod = PKG_DIGEST_TYPE_SHA256; 62fb299fa2Sopenharmony_ci } 63fb299fa2Sopenharmony_ci ~Lz4PkgFile() override {} 64fb299fa2Sopenharmony_ci 65fb299fa2Sopenharmony_ci int32_t AddEntry(const PkgManager::FileInfoPtr file, const PkgStreamPtr inStream) override; 66fb299fa2Sopenharmony_ci 67fb299fa2Sopenharmony_ci int32_t SavePackage(size_t &offset) override; 68fb299fa2Sopenharmony_ci 69fb299fa2Sopenharmony_ci int32_t LoadPackage(std::vector<std::string> &fileNames, VerifyFunction verifier = nullptr) override; 70fb299fa2Sopenharmony_ci 71fb299fa2Sopenharmony_ciprivate: 72fb299fa2Sopenharmony_ci PkgInfo pkgInfo_ {}; 73fb299fa2Sopenharmony_ci size_t currentOffset_ {0}; 74fb299fa2Sopenharmony_ci}; 75fb299fa2Sopenharmony_ci} // namespace Hpackage 76fb299fa2Sopenharmony_ci#endif // LZ4_PKG_FILE_H