/* * * Copyright (c) 2023 Project CHIP Authors * * 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. */ #pragma once #include #include #include #include #include #include #include namespace chip { namespace app { struct ICDClientInfo { ScopedNodeId peer_node; ScopedNodeId check_in_node; uint32_t start_icd_counter = 0; uint32_t offset = 0; Clusters::IcdManagement::ClientTypeEnum client_type = Clusters::IcdManagement::ClientTypeEnum::kPermanent; uint64_t monitored_subject = static_cast(0); Crypto::Aes128KeyHandle aes_key_handle = Crypto::Aes128KeyHandle(); Crypto::Hmac128KeyHandle hmac_key_handle = Crypto::Hmac128KeyHandle(); ICDClientInfo() {} ICDClientInfo(const ICDClientInfo & other) { *this = other; } ICDClientInfo & operator=(const ICDClientInfo & other) { peer_node = other.peer_node; check_in_node = other.check_in_node; start_icd_counter = other.start_icd_counter; offset = other.offset; client_type = other.client_type; monitored_subject = other.monitored_subject; ByteSpan aes_buf(other.aes_key_handle.As()); memcpy(aes_key_handle.AsMutable(), aes_buf.data(), sizeof(Crypto::Symmetric128BitsKeyByteArray)); ByteSpan hmac_buf(other.hmac_key_handle.As()); memcpy(hmac_key_handle.AsMutable(), hmac_buf.data(), sizeof(Crypto::Symmetric128BitsKeyByteArray)); return *this; } }; } // namespace app } // namespace chip