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#include "extension.h" 1654aa6d63Sopenharmony_ci#include "byte_buffer.h" 1754aa6d63Sopenharmony_ci 1854aa6d63Sopenharmony_cinamespace OHOS { 1954aa6d63Sopenharmony_cinamespace SignatureTools { 2054aa6d63Sopenharmony_ci 2154aa6d63Sopenharmony_ciconst int32_t Extension::EXTENSION_HEADER_SIZE = 8; 2254aa6d63Sopenharmony_ci 2354aa6d63Sopenharmony_ciExtension::Extension() 2454aa6d63Sopenharmony_ci{ 2554aa6d63Sopenharmony_ci type = 0; 2654aa6d63Sopenharmony_ci size = 0; 2754aa6d63Sopenharmony_ci} 2854aa6d63Sopenharmony_ci 2954aa6d63Sopenharmony_ciExtension::Extension(int32_t type, int32_t size) 3054aa6d63Sopenharmony_ci{ 3154aa6d63Sopenharmony_ci this->type = type; 3254aa6d63Sopenharmony_ci this->size = size; 3354aa6d63Sopenharmony_ci} 3454aa6d63Sopenharmony_ci 3554aa6d63Sopenharmony_ciExtension::~Extension() 3654aa6d63Sopenharmony_ci{ 3754aa6d63Sopenharmony_ci} 3854aa6d63Sopenharmony_ci 3954aa6d63Sopenharmony_ciint32_t Extension::GetSize() 4054aa6d63Sopenharmony_ci{ 4154aa6d63Sopenharmony_ci return Extension::EXTENSION_HEADER_SIZE; 4254aa6d63Sopenharmony_ci} 4354aa6d63Sopenharmony_ci 4454aa6d63Sopenharmony_cibool Extension::IsType(int32_t type) 4554aa6d63Sopenharmony_ci{ 4654aa6d63Sopenharmony_ci return this->type == type; 4754aa6d63Sopenharmony_ci} 4854aa6d63Sopenharmony_ci 4954aa6d63Sopenharmony_civoid Extension::ToByteArray(std::vector<int8_t>& ret) 5054aa6d63Sopenharmony_ci{ 5154aa6d63Sopenharmony_ci std::unique_ptr<ByteBuffer> bf = std::make_unique<ByteBuffer> 5254aa6d63Sopenharmony_ci (ByteBuffer(Extension::EXTENSION_HEADER_SIZE)); 5354aa6d63Sopenharmony_ci bf->PutInt32(type); 5454aa6d63Sopenharmony_ci bf->PutInt32(size); 5554aa6d63Sopenharmony_ci bf->Flip(); 5654aa6d63Sopenharmony_ci char dataArr[Extension::EXTENSION_HEADER_SIZE] = { 0 }; 5754aa6d63Sopenharmony_ci bf->GetData(dataArr, Extension::EXTENSION_HEADER_SIZE); 5854aa6d63Sopenharmony_ci ret = std::vector<int8_t>(dataArr, dataArr + Extension::EXTENSION_HEADER_SIZE); 5954aa6d63Sopenharmony_ci} 6054aa6d63Sopenharmony_ci 6154aa6d63Sopenharmony_ci} 6254aa6d63Sopenharmony_ci}