| /* |
| * |
| * Copyright (c) 2016-2017 Nest Labs, Inc. |
| * 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. |
| */ |
| |
| /** |
| * @file |
| * This file implements a wrapper for C++ implementation of WeaveKeyId operations |
| * for pin encryption. |
| * |
| */ |
| |
| #import "NLWeaveKeyIds.h" |
| #include <Weave/Core/WeaveKeyIds.h> |
| |
| NSUInteger const NLWeaveKeyIds_KeyTypeNone = nl::Weave::WeaveKeyId::kType_None; |
| NSUInteger const NLWeaveKeyIds_KeyTypeGeneral = nl::Weave::WeaveKeyId::kType_General; |
| NSUInteger const NLWeaveKeyIds_KeyTypeSession = nl::Weave::WeaveKeyId::kType_Session; |
| NSUInteger const NLWeaveKeyIds_KeyTypeAppStaticKey = nl::Weave::WeaveKeyId::kType_AppStaticKey; |
| NSUInteger const NLWeaveKeyIds_KeyTypeAppRotatingKey = nl::Weave::WeaveKeyId::kType_AppRotatingKey; |
| NSUInteger const NLWeaveKeyIds_KeyTypeAppRootKey = nl::Weave::WeaveKeyId::kType_AppRootKey; |
| NSUInteger const NLWeaveKeyIds_KeyTypeAppEpochKey = nl::Weave::WeaveKeyId::kType_AppEpochKey; |
| NSUInteger const NLWeaveKeyIds_KeyTypeAppGroupMasterKey = nl::Weave::WeaveKeyId::kType_AppGroupMasterKey; |
| NSUInteger const NLWeaveKeyIds_KeyTypeAppIntermediateKey = nl::Weave::WeaveKeyId::kType_AppIntermediateKey; |
| NSUInteger const NLWeaveKeyIds_None = nl::Weave::WeaveKeyId::kNone; |
| NSUInteger const NLWeaveKeyIds_FabricSecret = nl::Weave::WeaveKeyId::kFabricSecret; |
| NSUInteger const NLWeaveKeyIds_FabricRootKey = nl::Weave::WeaveKeyId::kFabricRootKey; |
| NSUInteger const NLWeaveKeyIds_ClientRootKey = nl::Weave::WeaveKeyId::kClientRootKey; |
| NSUInteger const NLWeaveKeyIds_ServiceRootKey = nl::Weave::WeaveKeyId::kServiceRootKey; |
| |
| @implementation NLWeaveKeyIds |
| |
| + (UInt32)getType:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::GetType(keyId); |
| } |
| |
| + (BOOL)isGeneralKey:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::IsGeneralKey(keyId); |
| } |
| |
| + (BOOL)isSessionKey:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::IsSessionKey(keyId); |
| } |
| |
| + (BOOL)isAppStaticKey:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::IsAppStaticKey(keyId); |
| } |
| |
| + (BOOL)isAppRotatingKey:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::IsAppRotatingKey(keyId); |
| } |
| |
| + (BOOL)isAppRootKey:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::IsAppRootKey(keyId); |
| } |
| |
| + (BOOL)isAppEpochKey:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::IsAppEpochKey(keyId); |
| } |
| |
| + (BOOL)isAppGroupMasterKey:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::IsAppGroupMasterKey(keyId); |
| } |
| |
| + (UInt16)makeSessionKeyId:(UInt16)sessionKeyNumber |
| { |
| return nl::Weave::WeaveKeyId::MakeSessionKeyId(sessionKeyNumber); |
| } |
| |
| + (UInt16)makeGeneralKeyId:(UInt16)generalKeyNumber |
| { |
| return nl::Weave::WeaveKeyId::MakeGeneralKeyId(generalKeyNumber); |
| } |
| |
| + (UInt32)getRootKeyId:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::GetRootKeyId(keyId); |
| } |
| |
| + (UInt32)getEpochKeyId:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::GetEpochKeyId(keyId); |
| } |
| |
| + (UInt32)getAppGroupMasterKeyId:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::GetAppGroupMasterKeyId(keyId); |
| } |
| |
| + (UInt8)getRootKeyNumber:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::GetRootKeyNumber(keyId); |
| } |
| |
| + (UInt8)getEpochKeyNumber:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::GetEpochKeyNumber(keyId); |
| } |
| |
| + (UInt8)getAppGroupLocalNumber:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::GetAppGroupLocalNumber(keyId); |
| } |
| |
| + (UInt32)makeRootKeyId:(UInt8)epochKeyNumber |
| { |
| return nl::Weave::WeaveKeyId::MakeRootKeyId(epochKeyNumber); |
| } |
| |
| + (UInt32)makeEpochKeyId:(UInt8)epochKeyNumber |
| { |
| return nl::Weave::WeaveKeyId::MakeEpochKeyId(epochKeyNumber); |
| } |
| |
| + (UInt32)makeAppGroupMasterKeyId:(UInt32)appGroupMasterKeyLocalId |
| { |
| return nl::Weave::WeaveKeyId::MakeAppGroupMasterKeyId(appGroupMasterKeyLocalId); |
| } |
| |
| + (UInt32)convertToCurrentAppKeyId:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::ConvertToCurrentAppKeyId(keyId); |
| } |
| |
| + (BOOL)incorporatesEpochKey:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::IncorporatesEpochKey(keyId); |
| } |
| |
| + (BOOL)usesCurrentEpochKey:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::UsesCurrentEpochKey(keyId); |
| } |
| |
| + (BOOL)incorporatesRootKey:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::IncorporatesRootKey(keyId); |
| } |
| |
| + (BOOL)incorporatesAppGroupMasterKey:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::IncorporatesAppGroupMasterKey(keyId); |
| } |
| |
| + (UInt32)makeAppKeyId:(UInt32)keyType |
| rootKeyId:(UInt32)rootKeyId |
| epochKeyId:(UInt32)epochKeyId |
| appGroupMasterKeyId:(UInt32)appGroupMasterKeyId |
| useCurrentEpochKey:(BOOL)useCurrentEpochKey |
| { |
| return nl::Weave::WeaveKeyId::MakeAppKeyId(keyType, rootKeyId, epochKeyId, appGroupMasterKeyId, useCurrentEpochKey); |
| } |
| |
| + (UInt32)makeAppIntermediateKeyId:(UInt32)rootKeyId epochKeyId:(UInt32)epochKeyId useCurrentEpochKey:(BOOL)useCurrentEpochKey |
| { |
| return nl::Weave::WeaveKeyId::MakeAppIntermediateKeyId(rootKeyId, epochKeyId, useCurrentEpochKey); |
| } |
| |
| + (UInt32)makeAppRotatingKeyId:(UInt32)rootKeyId |
| epochKeyId:(UInt32)epochKeyId |
| appGroupMasterKeyId:(UInt32)appGroupMasterKeyId |
| useCurrentEpochKey:(BOOL)useCurrentEpochKey |
| { |
| return nl::Weave::WeaveKeyId::MakeAppRotatingKeyId(rootKeyId, epochKeyId, appGroupMasterKeyId, useCurrentEpochKey); |
| } |
| |
| + (UInt32)makeAppStaticKeyId:(UInt32)rootKeyId appGroupMasterKeyId:(UInt32)appGroupMasterKeyId |
| { |
| return nl::Weave::WeaveKeyId::MakeAppStaticKeyId(rootKeyId, appGroupMasterKeyId); |
| } |
| |
| + (UInt32)convertToStaticAppKeyId:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::ConvertToStaticAppKeyId(keyId); |
| } |
| |
| + (UInt32)updateEpochKeyId:(UInt32)keyId epochKeyId:(UInt32)epochKeyId |
| { |
| return nl::Weave::WeaveKeyId::UpdateEpochKeyId(keyId, epochKeyId); |
| } |
| |
| + (BOOL)isValidKeyId:(UInt32)keyId |
| { |
| return nl::Weave::WeaveKeyId::IsValidKeyId(keyId); |
| } |
| |
| + (NSString *)describeKey:(UInt32)keyId |
| { |
| return @(nl::Weave::WeaveKeyId::DescribeKey(keyId)); |
| } |
| |
| @end |