blob: de3ce5e5ba696f21f24d7807f0075c57354ee0a3 [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