nl::Weave::Profiles::Security::AppKeys

This namespace includes all interfaces within Weave for the Weave application keys library within the Weave security profile.

Summary

Enumerations

@220{
  kWeaveAppGroupKeySize = 32,
  kWeaveAppRootKeySize = kWeaveAppGroupKeySize,
  kWeaveAppEpochKeySize = kWeaveAppGroupKeySize,
  kWeaveAppGroupMasterKeySize = kWeaveAppGroupKeySize,
  kWeaveAppIntermediateKeySize = kWeaveAppGroupKeySize,
  kWeaveFabricSecretSize = 36,
  kWeaveAppFabricRootKeyDiversifierSize = sizeof(kWeaveAppFabricRootKeyDiversifier),
  kWeaveAppClientRootKeyDiversifierSize = sizeof(kWeaveAppClientRootKeyDiversifier),
  kWeaveAppIntermediateKeyDiversifierSize = sizeof(kWeaveAppIntermediateKeyDiversifier)
}
enum
Weave application keys protocol parameter definitions.
WeaveAppGroupGlobalId{
  kWeaveAppGroupGlobalId_Unspecified = 0,
  kWeaveAppGroupGlobalId_NestPhysicalAccess = (kWeaveVendor_NestLabs << 16) | 0x0001,
  kWeaveAppGroupGlobalId_NestStructureSecurity = (kWeaveVendor_NestLabs << 16) | 0x0002,
  kWeaveAppGroupGlobalId_NestHVAC = (kWeaveVendor_NestLabs << 16) | 0x0003,
  kWeaveAppGroupGlobalId_NestSecurityControl = (kWeaveVendor_NestLabs << 16) | 0x0004
}
enum
Weave Application Group Global IDs (AGGID).

Variables

kWeaveAppClientRootKeyDiversifier = { 0x53, 0xE3, 0xFF, 0xE5 }[]
const uint8_t
Key diversifier used for Weave client root key derivation.
kWeaveAppFabricRootKeyDiversifier = { 0x21, 0xFA, 0x8F, 0x6A }[]
const uint8_t
Key diversifier used for Weave fabric root key derivation.
kWeaveAppIntermediateKeyDiversifier = { 0xBC, 0xAA, 0x95, 0xAD }[]
const uint8_t
Key diversifier used for Weave intermediate key derivation.

Functions

GetAppGroupMasterKeyId(uint32_t groupGlobalId, GroupKeyStoreBase *groupKeyStore, uint32_t & groupMasterKeyId)
Get application group master key ID given application group global ID.
LogGroupKeys(GroupKeyStoreBase *groupKeyStore)

Classes

nl::Weave::Profiles::Security::AppKeys::DummyGroupKeyStore
nl::Weave::Profiles::Security::AppKeys::GroupKeyStoreBase

The definition of the Weave group key store class.

nl::Weave::Profiles::Security::AppKeys::WeaveGroupKey

Contains information about Weave application group keys.

Enumerations

@220

 @220

Weave application keys protocol parameter definitions.

Properties
kWeaveAppClientRootKeyDiversifierSize

Client root key diversifier size.

kWeaveAppEpochKeySize

Weave application epoch key size.

kWeaveAppFabricRootKeyDiversifierSize

Fabric root key diversifier size.

kWeaveAppGroupKeySize

Weave constituent group key size.

kWeaveAppGroupMasterKeySize

Weave application group master key size.

kWeaveAppIntermediateKeyDiversifierSize

Intermediate key diversifier size.

kWeaveAppIntermediateKeySize

Weave application intermediate key size.

kWeaveAppRootKeySize

Weave application root key size.

kWeaveFabricSecretSize

Weave fabric secret size.

WeaveAppGroupGlobalId

 WeaveAppGroupGlobalId

Weave Application Group Global IDs (AGGID).

Properties
kWeaveAppGroupGlobalId_NestHVAC

Nest HVAC Group.

kWeaveAppGroupGlobalId_NestPhysicalAccess

Nest Labs Application Group Global IDs.

Note:Do not attempt to allocate these values yourself. These values are under administration by Nest Labs. Please make a formal request using the "Nest Weave: Nest Application Group Global ID Registry" https://docs.google.com/document/d/1xHLAcTvLZg2YGoJfbUb2nbPIvaCNuoygmdiNwC-PJHI.Nest Physical Access Group.

kWeaveAppGroupGlobalId_NestSecurityControl

Nest Security Control Group.

kWeaveAppGroupGlobalId_NestStructureSecurity

Nest Structure Security Group.

kWeaveAppGroupGlobalId_Unspecified

Application Group Global ID is not specified.

Variables

kWeaveAppClientRootKeyDiversifier

const uint8_t kWeaveAppClientRootKeyDiversifier[] = { 0x53, 0xE3, 0xFF, 0xE5 }

Key diversifier used for Weave client root key derivation.

This value represents first 4 bytes of the SHA-1 HASH of "Client Root Key" phrase.

kWeaveAppFabricRootKeyDiversifier

const uint8_t kWeaveAppFabricRootKeyDiversifier[] = { 0x21, 0xFA, 0x8F, 0x6A }

Key diversifier used for Weave fabric root key derivation.

This value represents first 4 bytes of the SHA-1 HASH of "Fabric Root Key" phrase.

kWeaveAppIntermediateKeyDiversifier

const uint8_t kWeaveAppIntermediateKeyDiversifier[] = { 0xBC, 0xAA, 0x95, 0xAD }

Key diversifier used for Weave intermediate key derivation.

This value represents first 4 bytes of the SHA-1 HASH of "Intermediate Key" phrase.

Functions

GetAppGroupMasterKeyId

WEAVE_ERROR GetAppGroupMasterKeyId(
  uint32_t groupGlobalId,
  GroupKeyStoreBase *groupKeyStore,
  uint32_t & groupMasterKeyId
)

Get application group master key ID given application group global ID.

Details
Parameters
[in] groupGlobalId
The application group global ID.
[in] groupKeyStore
A pointer to the group key store object.
[out] groupMasterKeyId
The application group master key ID.
Return Values
WEAVE_NO_ERROR
On success.
WEAVE_ERROR_INVALID_ARGUMENT
If pointer to the group key store is not provided.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
If FabricState object wasn't initialized with fully functional group key store.
WEAVE_ERROR_KEY_NOT_FOUND
If a group key with specified global ID is not found in the platform key store.
other
Other platform-specific errors returned by the platform key store APIs.

LogGroupKeys

WEAVE_ERROR LogGroupKeys(
  GroupKeyStoreBase *groupKeyStore
)