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 "profile_info.h"
1654aa6d63Sopenharmony_ci#include "signature_info.h"
1754aa6d63Sopenharmony_ci#include "securec.h"
1854aa6d63Sopenharmony_ci#include "signature_tools_log.h"
1954aa6d63Sopenharmony_ci
2054aa6d63Sopenharmony_cinamespace OHOS {
2154aa6d63Sopenharmony_cinamespace SignatureTools {
2254aa6d63Sopenharmony_ci
2354aa6d63Sopenharmony_ciProfileInfo::ProfileInfo()
2454aa6d63Sopenharmony_ci{
2554aa6d63Sopenharmony_ci    profileBlock = nullptr;
2654aa6d63Sopenharmony_ci}
2754aa6d63Sopenharmony_ciProfileInfo::~ProfileInfo()
2854aa6d63Sopenharmony_ci{
2954aa6d63Sopenharmony_ci    profileBlock.reset(nullptr);
3054aa6d63Sopenharmony_ci}
3154aa6d63Sopenharmony_ciProfileInfo::ProfileInfo(const ProfileInfo& profileInfo)
3254aa6d63Sopenharmony_ci{
3354aa6d63Sopenharmony_ci    *this = profileInfo;
3454aa6d63Sopenharmony_ci}
3554aa6d63Sopenharmony_ciProfileInfo& ProfileInfo::operator=(const ProfileInfo& profileInfo)
3654aa6d63Sopenharmony_ci{
3754aa6d63Sopenharmony_ci    if (this == &profileInfo) {
3854aa6d63Sopenharmony_ci        return *this;
3954aa6d63Sopenharmony_ci    }
4054aa6d63Sopenharmony_ci    this->versionCode = profileInfo.versionCode;
4154aa6d63Sopenharmony_ci    this->versionName = profileInfo.versionName;
4254aa6d63Sopenharmony_ci    this->uuid = profileInfo.uuid;
4354aa6d63Sopenharmony_ci    this->type = profileInfo.type;
4454aa6d63Sopenharmony_ci    this->distributionType = profileInfo.distributionType;
4554aa6d63Sopenharmony_ci    this->bundleInfo = profileInfo.bundleInfo;
4654aa6d63Sopenharmony_ci    this->acls = profileInfo.acls;
4754aa6d63Sopenharmony_ci    this->permissions = profileInfo.permissions;
4854aa6d63Sopenharmony_ci    this->debugInfo = profileInfo.debugInfo;
4954aa6d63Sopenharmony_ci    this->issuer = profileInfo.issuer;
5054aa6d63Sopenharmony_ci    this->appId = profileInfo.appId;
5154aa6d63Sopenharmony_ci    this->fingerprint = profileInfo.fingerprint;
5254aa6d63Sopenharmony_ci    this->appPrivilegeCapabilities = profileInfo.appPrivilegeCapabilities;
5354aa6d63Sopenharmony_ci    this->validity = profileInfo.validity;
5454aa6d63Sopenharmony_ci    this->metadatas = profileInfo.metadatas;
5554aa6d63Sopenharmony_ci    this->profileBlockLength = profileInfo.profileBlockLength;
5654aa6d63Sopenharmony_ci    (this->profileBlock).reset(nullptr);
5754aa6d63Sopenharmony_ci    if (profileInfo.profileBlockLength != 0 && profileInfo.profileBlock != nullptr) {
5854aa6d63Sopenharmony_ci        this->profileBlock = std::make_unique<unsigned char[]>(profileInfo.profileBlockLength);
5954aa6d63Sopenharmony_ci        unsigned char* profileBlockData = (this->profileBlock).get();
6054aa6d63Sopenharmony_ci        unsigned char* originalProfile = profileInfo.profileBlock.get();
6154aa6d63Sopenharmony_ci        if (profileBlockData == nullptr) {
6254aa6d63Sopenharmony_ci            return *this;
6354aa6d63Sopenharmony_ci        }
6454aa6d63Sopenharmony_ci        std::copy(originalProfile, originalProfile + profileInfo.profileBlockLength, profileBlockData);
6554aa6d63Sopenharmony_ci    }
6654aa6d63Sopenharmony_ci    this->appServiceCapabilities = profileInfo.appServiceCapabilities;
6754aa6d63Sopenharmony_ci    this->organization = profileInfo.organization;
6854aa6d63Sopenharmony_ci    return *this;
6954aa6d63Sopenharmony_ci}
7054aa6d63Sopenharmony_ci} // namespace SignatureTools
7154aa6d63Sopenharmony_ci} // namespace OHOS