diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge.xcodeproj/project.pbxproj b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge.xcodeproj/project.pbxproj index d2b820551c969c..5df8ce26bf4019 100644 --- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge.xcodeproj/project.pbxproj +++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge.xcodeproj/project.pbxproj @@ -72,7 +72,6 @@ 3CD73F222A9EA078009D82D1 /* MCDeviceAttestationCredentials.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3CD73F212A9EA077009D82D1 /* MCDeviceAttestationCredentials.mm */; }; 3CE5ECCE2A673B30007CF331 /* CommissioningCallbackHandlers.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CE5ECCD2A673B30007CF331 /* CommissioningCallbackHandlers.h */; }; 3CE5ECD02A673E2C007CF331 /* CommissioningCallbackHandlers.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CE5ECCF2A673E2C007CF331 /* CommissioningCallbackHandlers.m */; }; - 3CE868F42946D76200FCB92B /* CommissionableDataProviderImpl.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3CE868F32946D76200FCB92B /* CommissionableDataProviderImpl.mm */; }; 3CF71C0A2A992D0D003A5CE5 /* MCCastingApp.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CF71C092A992D0D003A5CE5 /* MCCastingApp.h */; }; 3CF71C0C2A992D25003A5CE5 /* MCCastingApp.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3CF71C0B2A992D25003A5CE5 /* MCCastingApp.mm */; }; 3CF71C0E2A992DA2003A5CE5 /* MCDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CF71C0D2A992DA2003A5CE5 /* MCDataSource.h */; }; @@ -98,7 +97,6 @@ 3C0474052B3F7E5F0012AE95 /* MCEndpointFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCEndpointFilter.h; sourceTree = ""; }; 3C04740B2B4604CF0012AE95 /* MCCryptoUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCCryptoUtils.h; sourceTree = ""; }; 3C04740D2B4605B40012AE95 /* MCCryptoUtils.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MCCryptoUtils.mm; sourceTree = ""; }; - 3C0D9CDF2920A30C00D3332B /* CommissionableDataProviderImpl.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CommissionableDataProviderImpl.hpp; sourceTree = ""; }; 3C2346202B362B4F00FA276E /* MCCastingPlayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCCastingPlayer.h; sourceTree = ""; }; 3C2346222B362B9500FA276E /* MCCastingPlayerDiscovery.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCCastingPlayerDiscovery.h; sourceTree = ""; }; 3C2346242B362BBB00FA276E /* MCCastingPlayerDiscovery.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MCCastingPlayerDiscovery.mm; sourceTree = ""; }; @@ -160,7 +158,6 @@ 3CD73F212A9EA077009D82D1 /* MCDeviceAttestationCredentials.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MCDeviceAttestationCredentials.mm; sourceTree = ""; }; 3CE5ECCD2A673B30007CF331 /* CommissioningCallbackHandlers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommissioningCallbackHandlers.h; sourceTree = ""; }; 3CE5ECCF2A673E2C007CF331 /* CommissioningCallbackHandlers.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommissioningCallbackHandlers.m; sourceTree = ""; }; - 3CE868F32946D76200FCB92B /* CommissionableDataProviderImpl.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = CommissionableDataProviderImpl.mm; sourceTree = ""; }; 3CF71C092A992D0D003A5CE5 /* MCCastingApp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCCastingApp.h; sourceTree = ""; }; 3CF71C0B2A992D25003A5CE5 /* MCCastingApp.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MCCastingApp.mm; sourceTree = ""; }; 3CF71C0D2A992DA2003A5CE5 /* MCDataSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCDataSource.h; sourceTree = ""; }; @@ -228,8 +225,6 @@ 3C4E53B128E5184C00F293E8 /* TargetNavigatorTypes.mm */, 3C26AC91292700AD00BA6881 /* DeviceAttestationCredentialsHolder.h */, 3C26AC9229282B8100BA6881 /* DeviceAttestationCredentialsHolder.m */, - 3C0D9CDF2920A30C00D3332B /* CommissionableDataProviderImpl.hpp */, - 3CE868F32946D76200FCB92B /* CommissionableDataProviderImpl.mm */, 3CE5ECCD2A673B30007CF331 /* CommissioningCallbackHandlers.h */, 3CE5ECCF2A673E2C007CF331 /* CommissioningCallbackHandlers.m */, ); @@ -472,7 +467,6 @@ 3C4F52242B507CA800BB8A10 /* MCCluster.mm in Sources */, 3C66FBFC290327BB00B63FE7 /* AppParameters.mm in Sources */, 3C9437942B3B47A10096E5F4 /* MCErrorUtils.mm in Sources */, - 3CE868F42946D76200FCB92B /* CommissionableDataProviderImpl.mm in Sources */, 3C26AC9329282B8100BA6881 /* DeviceAttestationCredentialsHolder.m in Sources */, 3C996C272BD31FEA0027BD8A /* DataSourceCompat.mm in Sources */, 3CCB873F286A593700771BAD /* DiscoveredNodeData.mm in Sources */, diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/AppParameters.h b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/AppParameters.h index 34585289fb6d5c..2c59ab3e34fda4 100644 --- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/AppParameters.h +++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/AppParameters.h @@ -23,6 +23,7 @@ #ifndef AppParameters_h #define AppParameters_h +__attribute__((deprecated("This class is deprecated. Use the APIs described in /examples/tv-casting-app/APIs.md instead."))) @interface AppParameters : NSObject @property NSData * rotatingDeviceIdUniqueId; diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/CommissionableDataProviderImpl.hpp b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/CommissionableDataProviderImpl.hpp deleted file mode 100644 index 979c7c72f5e057..00000000000000 --- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/CommissionableDataProviderImpl.hpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - * - * Copyright (c) 2022 Project CHIP Authors - * All rights reserved. - * - * 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 - -class CommissionableDataProviderImpl : public chip::DeviceLayer::CommissionableDataProvider -{ -public: - CHIP_ERROR Initialize(chip::ByteSpan * spake2pVerifierBase64, chip::ByteSpan * spake2pSaltBase64, - uint32_t spake2pIterationCount, uint32_t setupPasscode, uint16_t discriminator); - CHIP_ERROR GetSetupDiscriminator(uint16_t & setupDiscriminator) override; - CHIP_ERROR SetSetupDiscriminator(uint16_t setupDiscriminator) override - { - // We don't support overriding the discriminator post-init (it is deprecated!) - return CHIP_ERROR_NOT_IMPLEMENTED; - } - CHIP_ERROR GetSpake2pIterationCount(uint32_t & iterationCount) override; - CHIP_ERROR GetSpake2pSalt(chip::MutableByteSpan & saltBuf) override; - CHIP_ERROR GetSpake2pVerifier(chip::MutableByteSpan & verifierBuf, size_t & outVerifierLen) override; - CHIP_ERROR GetSetupPasscode(uint32_t & setupPasscode) override; - CHIP_ERROR SetSetupPasscode(uint32_t setupPasscode) override - { - // We don't support overriding the passcode post-init (it is deprecated!) - return CHIP_ERROR_NOT_IMPLEMENTED; - } - -private: - friend CommissionableDataProviderImpl & CommissionableDataProviderMgrImpl(); - static CommissionableDataProviderImpl sInstance; - bool mFirstUpdated = false; - std::vector mSerializedPaseVerifier; - std::vector mPaseSalt; - uint32_t mPaseIterationCount = 0; - chip::Optional mSetupPasscode; - uint16_t mDiscriminator = 0; -}; - -inline CommissionableDataProviderImpl & CommissionableDataProviderMgrImpl() -{ - return CommissionableDataProviderImpl::sInstance; -} diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/CommissionableDataProviderImpl.mm b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/CommissionableDataProviderImpl.mm deleted file mode 100644 index 40c2efcd99cb65..00000000000000 --- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/CommissionableDataProviderImpl.mm +++ /dev/null @@ -1,209 +0,0 @@ -/* - * - * Copyright (c) 2022 Project CHIP Authors - * All rights reserved. - * - * 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. - */ - -#include "CommissionableDataProviderImpl.hpp" - -#include -#include - -#include -#include -#include -#include -#include -#include - -using namespace chip; -using namespace chip::Crypto; - -namespace { - -#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SPAKE2P_ITERATION_COUNT -#define CHIP_DEVICE_CONFIG_USE_TEST_SPAKE2P_ITERATION_COUNT 1000 -#endif - -CHIP_ERROR GeneratePaseSalt(std::vector & spake2pSaltVector) -{ - constexpr size_t kSaltLen = kSpake2p_Max_PBKDF_Salt_Length; - spake2pSaltVector.resize(kSaltLen); - return DRBG_get_bytes(spake2pSaltVector.data(), spake2pSaltVector.size()); -} - -} // namespace - -CommissionableDataProviderImpl CommissionableDataProviderImpl::sInstance; - -CHIP_ERROR CommissionableDataProviderImpl::Initialize(chip::ByteSpan * spake2pVerifierBase64, chip::ByteSpan * spake2pSaltBase64, - uint32_t spake2pIterationCount, uint32_t setupPasscode, uint16_t discriminator) -{ - VerifyOrReturnLogError(discriminator <= chip::kMaxDiscriminatorValue, CHIP_ERROR_INVALID_ARGUMENT); - - if (spake2pIterationCount == 0) { - spake2pIterationCount = CHIP_DEVICE_CONFIG_USE_TEST_SPAKE2P_ITERATION_COUNT; - } - VerifyOrReturnLogError( - static_cast(spake2pIterationCount) >= kSpake2p_Min_PBKDF_Iterations, CHIP_ERROR_INVALID_ARGUMENT); - VerifyOrReturnLogError( - static_cast(spake2pIterationCount) <= kSpake2p_Max_PBKDF_Iterations, CHIP_ERROR_INVALID_ARGUMENT); - - const bool havePaseVerifier = (spake2pVerifierBase64 != nullptr); - const bool havePaseSalt = (spake2pSaltBase64 != nullptr); - VerifyOrReturnLogError(!havePaseVerifier || (havePaseVerifier && havePaseSalt), CHIP_ERROR_INVALID_ARGUMENT); - - CHIP_ERROR err; - // read verifier from paramter if provided - Spake2pVerifier providedVerifier; - std::vector serializedSpake2pVerifier(kSpake2p_VerifierSerialized_Length); - if (havePaseVerifier) { - size_t maxBase64Size = BASE64_ENCODED_LEN(chip::Crypto::kSpake2p_VerifierSerialized_Length); - VerifyOrReturnLogError(static_cast(spake2pVerifierBase64->size()) <= maxBase64Size, CHIP_ERROR_INVALID_ARGUMENT); - - size_t decodedLen = chip::Base64Decode32(reinterpret_cast(spake2pVerifierBase64->data()), - static_cast(spake2pVerifierBase64->size()), reinterpret_cast(serializedSpake2pVerifier.data())); - VerifyOrReturnLogError(decodedLen == chip::Crypto::kSpake2p_VerifierSerialized_Length, CHIP_ERROR_INVALID_ARGUMENT); - - chip::MutableByteSpan verifierSpan { serializedSpake2pVerifier.data(), decodedLen }; - err = providedVerifier.Deserialize(verifierSpan); - VerifyOrReturnLogError(err == CHIP_NO_ERROR, err); - - ChipLogProgress(Support, "Got externally provided verifier, using it."); - } - - // read salt from paramter if provided or generate one - std::vector spake2pSalt(chip::Crypto::kSpake2p_Max_PBKDF_Salt_Length); - if (!havePaseSalt) { - ChipLogProgress(Support, "CommissionableDataProviderImpl didn't get a PASE salt, generating one."); - err = GeneratePaseSalt(spake2pSalt); - VerifyOrReturnLogError(err == CHIP_NO_ERROR, err); - } else { - size_t maxBase64Size = BASE64_ENCODED_LEN(chip::Crypto::kSpake2p_Max_PBKDF_Salt_Length); - VerifyOrReturnLogError(static_cast(spake2pSaltBase64->size()) <= maxBase64Size, CHIP_ERROR_INVALID_ARGUMENT); - - size_t decodedLen = chip::Base64Decode32(reinterpret_cast(spake2pSaltBase64->data()), - static_cast(spake2pSaltBase64->size()), reinterpret_cast(spake2pSalt.data())); - VerifyOrReturnLogError(decodedLen >= chip::Crypto::kSpake2p_Min_PBKDF_Salt_Length - && decodedLen <= chip::Crypto::kSpake2p_Max_PBKDF_Salt_Length, - CHIP_ERROR_INVALID_ARGUMENT); - spake2pSalt.resize(decodedLen); - } - - // generate verifier from passcode if provided - const bool havePasscode = (setupPasscode > kMinSetupPasscode && setupPasscode < kMaxSetupPasscode); - Spake2pVerifier passcodeVerifier; - std::vector serializedPasscodeVerifier(kSpake2p_VerifierSerialized_Length); - chip::MutableByteSpan saltSpan { spake2pSalt.data(), spake2pSalt.size() }; - if (havePasscode) { - uint32_t u32SetupPasscode = static_cast(setupPasscode); - err = passcodeVerifier.Generate(spake2pIterationCount, saltSpan, u32SetupPasscode); - VerifyOrReturnLogError(err == CHIP_NO_ERROR, err); - - chip::MutableByteSpan verifierSpan { serializedPasscodeVerifier.data(), serializedPasscodeVerifier.size() }; - err = passcodeVerifier.Serialize(verifierSpan); - VerifyOrReturnLogError(err == CHIP_NO_ERROR, err); - } - - // Make sure we actually have a verifier - VerifyOrReturnLogError(havePasscode || havePaseVerifier, CHIP_ERROR_INVALID_ARGUMENT); - - // If both passcode and external verifier were provided, validate they match, otherwise - // it's ambiguous. - if (havePasscode && havePaseVerifier) { - VerifyOrReturnLogError(serializedPasscodeVerifier == serializedSpake2pVerifier, CHIP_ERROR_INVALID_ARGUMENT); - ChipLogProgress(Support, "Validated externally provided passcode matches the one generated from provided passcode."); - } - - // External PASE verifier takes precedence when present (even though it is identical to passcode-based - // one when the latter is present). - if (havePaseVerifier) { - mSerializedPaseVerifier = std::move(serializedSpake2pVerifier); - } else { - mSerializedPaseVerifier = std::move(serializedPasscodeVerifier); - } - mDiscriminator = discriminator; - mPaseSalt = std::move(spake2pSalt); - mPaseIterationCount = spake2pIterationCount; - if (havePasscode) { - mSetupPasscode.SetValue(setupPasscode); - } - - // Set to global CommissionableDataProvider once success first time - if (!mFirstUpdated) { - DeviceLayer::SetCommissionableDataProvider(this); - } - mFirstUpdated = true; - - return CHIP_NO_ERROR; -} - -CHIP_ERROR CommissionableDataProviderImpl::GetSetupDiscriminator(uint16_t & setupDiscriminator) -{ - VerifyOrReturnError(mFirstUpdated, CHIP_ERROR_INCORRECT_STATE); - setupDiscriminator = mDiscriminator; - return CHIP_NO_ERROR; -} - -CHIP_ERROR CommissionableDataProviderImpl::GetSpake2pIterationCount(uint32_t & iterationCount) -{ - ChipLogProgress(AppServer, "CommissionableDataProviderImpl::GetSpake2pIterationCount called"); - VerifyOrReturnLogError(mFirstUpdated, CHIP_ERROR_INCORRECT_STATE); - iterationCount = mPaseIterationCount; - return CHIP_NO_ERROR; -} - -CHIP_ERROR CommissionableDataProviderImpl::GetSpake2pSalt(chip::MutableByteSpan & saltBuf) -{ - ChipLogProgress(AppServer, "CommissionableDataProviderImpl::GetSpake2pSalt called"); - VerifyOrReturnError(mFirstUpdated, CHIP_ERROR_INCORRECT_STATE); - - VerifyOrReturnError(saltBuf.size() >= kSpake2p_Max_PBKDF_Salt_Length, CHIP_ERROR_BUFFER_TOO_SMALL); - memcpy(saltBuf.data(), mPaseSalt.data(), mPaseSalt.size()); - saltBuf.reduce_size(mPaseSalt.size()); - - return CHIP_NO_ERROR; -} - -CHIP_ERROR CommissionableDataProviderImpl::GetSpake2pVerifier(chip::MutableByteSpan & verifierBuf, size_t & outVerifierLen) -{ - ChipLogProgress(AppServer, "CommissionableDataProviderImpl::GetSpake2pVerifier called"); - VerifyOrReturnError(mFirstUpdated, CHIP_ERROR_INCORRECT_STATE); - - // By now, serialized verifier from Init should be correct size - VerifyOrReturnError(mSerializedPaseVerifier.size() == kSpake2p_VerifierSerialized_Length, CHIP_ERROR_INTERNAL); - - outVerifierLen = mSerializedPaseVerifier.size(); - VerifyOrReturnError(verifierBuf.size() >= outVerifierLen, CHIP_ERROR_BUFFER_TOO_SMALL); - memcpy(verifierBuf.data(), mSerializedPaseVerifier.data(), mSerializedPaseVerifier.size()); - verifierBuf.reduce_size(mSerializedPaseVerifier.size()); - - return CHIP_NO_ERROR; -} - -CHIP_ERROR CommissionableDataProviderImpl::GetSetupPasscode(uint32_t & setupPasscode) -{ - ChipLogProgress(AppServer, "CommissionableDataProviderImpl::GetSetupPasscode called"); - VerifyOrReturnError(mFirstUpdated, CHIP_ERROR_INCORRECT_STATE); - - // Pretend not implemented if we don't have a passcode value externally set - if (!mSetupPasscode.HasValue()) { - return CHIP_ERROR_NOT_IMPLEMENTED; - } - - setupPasscode = mSetupPasscode.Value(); - ChipLogProgress(AppServer, "CommissionableDataProviderImpl::GetSetupPasscode returning value %d", setupPasscode); - return CHIP_NO_ERROR; -} diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/CommissioningCallbackHandlers.h b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/CommissioningCallbackHandlers.h index dc5bb18f6a135f..2dd71ee512685a 100644 --- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/CommissioningCallbackHandlers.h +++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/CommissioningCallbackHandlers.h @@ -21,6 +21,7 @@ #ifndef CommissioningCallbacksHandlers_h #define CommissioningCallbacksHandlers_h +__attribute__((deprecated("This class is deprecated. Use the APIs described in /examples/tv-casting-app/APIs.md instead."))) @interface CommissioningCallbackHandlers : NSObject - (CommissioningCallbackHandlers * _Nonnull) diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/ContentApp.h b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/ContentApp.h index 2bf28dc30ab6de..0598bcfcc8a132 100644 --- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/ContentApp.h +++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/ContentApp.h @@ -22,6 +22,7 @@ #ifndef ContentApp_h #define ContentApp_h +__attribute__((deprecated("This class is deprecated. Use the APIs described in /examples/tv-casting-app/APIs.md instead."))) @interface ContentApp : NSObject @property uint16_t endpointId; diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/DeviceAttestationCredentialsHolder.h b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/DeviceAttestationCredentialsHolder.h index 44d4dee2169c43..aad0694d9136c6 100644 --- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/DeviceAttestationCredentialsHolder.h +++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/DeviceAttestationCredentialsHolder.h @@ -21,6 +21,7 @@ #ifndef DeviceAttestationCredentialsHolder_h #define DeviceAttestationCredentialsHolder_h +__attribute__((deprecated("This class is deprecated. Use the APIs described in /examples/tv-casting-app/APIs.md instead."))) @interface DeviceAttestationCredentialsHolder : NSObject - (DeviceAttestationCredentialsHolder * _Nonnull) diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/DiscoveredNodeData.h b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/DiscoveredNodeData.h index 90b6d0156bfe06..65f4689ff7bf2e 100644 --- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/DiscoveredNodeData.h +++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/DiscoveredNodeData.h @@ -23,6 +23,7 @@ #ifndef DiscoveredNodeData_h #define DiscoveredNodeData_h +__attribute__((deprecated("This class is deprecated. Use the APIs described in /examples/tv-casting-app/APIs.md instead."))) @interface DiscoveredNodeData : NSObject @property NSString * deviceName; diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/VideoPlayer.h b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/VideoPlayer.h index b8e5cc551c410c..b67b02f675cac8 100644 --- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/VideoPlayer.h +++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/compat-shim/VideoPlayer.h @@ -20,6 +20,7 @@ #ifndef VideoPlayer_h #define VideoPlayer_h +__attribute__((deprecated("This class is deprecated. Use the APIs described in /examples/tv-casting-app/APIs.md instead."))) @interface VideoPlayer : NSObject @property uint64_t nodeId;