154aa6d63Sopenharmony_ci/* 254aa6d63Sopenharmony_ci * Copyright (c) 2024-2024 Huawei Device Co., Ltd. 354aa6d63Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 454aa6d63Sopenharmony_ci * you may not use this file except in compliance with the License. 554aa6d63Sopenharmony_ci * You may obtain a copy of the License at 654aa6d63Sopenharmony_ci * 754aa6d63Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 854aa6d63Sopenharmony_ci * 954aa6d63Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1054aa6d63Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1154aa6d63Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1254aa6d63Sopenharmony_ci * See the License for the specific language governing permissions and 1354aa6d63Sopenharmony_ci * limitations under the License. 1454aa6d63Sopenharmony_ci */ 1554aa6d63Sopenharmony_ci 1654aa6d63Sopenharmony_ci#ifndef SIGNATRUETOOLS_DATA_DESCRIPTOR_H 1754aa6d63Sopenharmony_ci#define SIGNATRUETOOLS_DATA_DESCRIPTOR_H 1854aa6d63Sopenharmony_ci 1954aa6d63Sopenharmony_ci#include "byte_buffer.h" 2054aa6d63Sopenharmony_ci 2154aa6d63Sopenharmony_cinamespace OHOS { 2254aa6d63Sopenharmony_cinamespace SignatureTools { 2354aa6d63Sopenharmony_ci/** 2454aa6d63Sopenharmony_ci * resolve zip DataDescriptor data 2554aa6d63Sopenharmony_ci * DataDescriptor format: 2654aa6d63Sopenharmony_ci * crc-32 4 bytes 2754aa6d63Sopenharmony_ci * compressed size 4 bytes 2854aa6d63Sopenharmony_ci * uncompressed size 4 bytes 2954aa6d63Sopenharmony_ci */ 3054aa6d63Sopenharmony_ciclass DataDescriptor { 3154aa6d63Sopenharmony_cipublic: 3254aa6d63Sopenharmony_ci /* DataDescriptor invariable bytes length */ 3354aa6d63Sopenharmony_ci static constexpr int DES_LENGTH = 16; 3454aa6d63Sopenharmony_ci 3554aa6d63Sopenharmony_ci /* 4 bytes , DataDescriptor signature */ 3654aa6d63Sopenharmony_ci static constexpr int SIGNATURE = 0x08074b50; 3754aa6d63Sopenharmony_ci 3854aa6d63Sopenharmony_ci /** 3954aa6d63Sopenharmony_ci * get Data Descriptor 4054aa6d63Sopenharmony_ci * 4154aa6d63Sopenharmony_ci * @param bytes DataDescriptor bytes 4254aa6d63Sopenharmony_ci * @return DataDescriptor 4354aa6d63Sopenharmony_ci * @throws ZipException read data descriptor exception 4454aa6d63Sopenharmony_ci */ 4554aa6d63Sopenharmony_ci static DataDescriptor* GetDataDescriptor(const std::string& bytes); 4654aa6d63Sopenharmony_ci 4754aa6d63Sopenharmony_ci std::string ToBytes(); 4854aa6d63Sopenharmony_ci 4954aa6d63Sopenharmony_ci static int GetDesLength(); 5054aa6d63Sopenharmony_ci 5154aa6d63Sopenharmony_ci static int GetSIGNATURE(); 5254aa6d63Sopenharmony_ci 5354aa6d63Sopenharmony_ci int GetCrc32(); 5454aa6d63Sopenharmony_ci 5554aa6d63Sopenharmony_ci void SetCrc32(int crc32); 5654aa6d63Sopenharmony_ci 5754aa6d63Sopenharmony_ci uint32_t GetCompressedSize(); 5854aa6d63Sopenharmony_ci 5954aa6d63Sopenharmony_ci void SetCompressedSize(uint32_t compressedSize); 6054aa6d63Sopenharmony_ci 6154aa6d63Sopenharmony_ci uint32_t GetUnCompressedSize(); 6254aa6d63Sopenharmony_ci 6354aa6d63Sopenharmony_ci void SetUnCompressedSize(uint32_t unCompressedSize); 6454aa6d63Sopenharmony_ci 6554aa6d63Sopenharmony_ciprivate: 6654aa6d63Sopenharmony_ci /* 4 bytes */ 6754aa6d63Sopenharmony_ci int m_crc32 = 0; 6854aa6d63Sopenharmony_ci 6954aa6d63Sopenharmony_ci /* 4 bytes */ 7054aa6d63Sopenharmony_ci uint32_t m_compressedSize = 0; 7154aa6d63Sopenharmony_ci 7254aa6d63Sopenharmony_ci /* 4 bytes */ 7354aa6d63Sopenharmony_ci uint32_t m_unCompressedSize = 0; 7454aa6d63Sopenharmony_ci}; 7554aa6d63Sopenharmony_ci} // namespace SignatureTools 7654aa6d63Sopenharmony_ci} // namespace OHOS 7754aa6d63Sopenharmony_ci#endif // SIGNATRUETOOLS_DATA_DESCRIPTOR_H