blob: f5bd4e6e23d7043b296775f5f3d8885e4ffc9c3f [file] [log] [blame]
/*
*
* 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