nl::Weave::Profiles::Security::Passcodes

Dieser Namespace enthält alle Weave-Schnittstellen für die Weave-Sicherheitscode-Bibliothek innerhalb des Weave-Sicherheitsprofils.

Zusammenfassung

Aufzählungen

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum
Konfigurationstypen für die Verschlüsselung von Weave-Sicherheitscodes
@279{
  kPasscodeEncryptionKeyLen = Platform::Security::AES128BlockCipher::kKeyLength,
  kPasscodeAuthenticationKeyLen = Platform::Security::SHA1::kHashLength,
  kPasscodeFingerprintKeyLen = Platform::Security::SHA1::kHashLength,
  kPasscodeTotalDerivedKeyLen = kPasscodeEncryptionKeyLen + kPasscodeAuthenticationKeyLen,
  kPasscodePaddedLen = Platform::Security::AES128BlockCipher::kBlockLength,
  kPasscodeAuthenticatorLen = 8,
  kPasscodeFingerprintLen = 8,
  kPasscodeMaxEncryptedLen = sizeof(uint8_t) + 2 * sizeof(uint32_t) + kPasscodePaddedLen + kPasscodeAuthenticatorLen + kPasscodeFingerprintLen,
  kPasscodeMaxLen = kPasscodePaddedLen,
  kPasscodeEncKeyDiversifierSize = sizeof(kPasscodeEncKeyDiversifier) + sizeof(uint8_t),
  kPasscodeFingerprintKeyDiversifierSize = sizeof(kPasscodeFingerprintKeyDiversifier)
}
enum
Parametergrößen für das Weave-Sicherheitscode-Verschlüsselungsprotokoll.

Variablen

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Schlüsseldiversifizierer, der für die Ableitung der Verschlüsselungsschlüssel für Weave-Sicherheitscodes verwendet wird.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Schlüsseldiversifizierer, der für die Ableitung der Verschlüsselungsschlüssel für Weave-Sicherheitscodes verwendet wird.

Funktionen

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
Einen Sicherheitscode entschlüsseln, der mit dem Nest Passcode-Verschlüsselungsschema verschlüsselt wurde
DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, const uint8_t *encKey, const uint8_t *authKey, const uint8_t *fingerprintKey, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen)
Einen Sicherheitscode entschlüsseln, der mit dem Nest Passcode-Verschlüsselungsschema verschlüsselt wurde
EncryptPasscode(uint8_t config, uint32_t keyId, uint32_t nonce, const uint8_t *passcode, size_t passcodeLen, uint8_t *encPasscode, size_t encPasscodeBufSize, size_t & encPasscodeLen, GroupKeyStoreBase *groupKeyStore)
Verschlüssele einen Sicherheitscode mit dem Nest Passcode-Verschlüsselungsschema.
EncryptPasscode(uint8_t config, uint32_t keyId, uint32_t nonce, const uint8_t *passcode, size_t passcodeLen, const uint8_t *encKey, const uint8_t *authKey, const uint8_t *fingerprintKey, uint8_t *encPasscode, size_t encPasscodeBufSize, size_t & encPasscodeLen)
Verschlüssele einen Sicherheitscode mit dem Nest Passcode-Verschlüsselungsschema.
GetEncryptedPasscodeConfig(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config)
Rufen Sie den Konfigurationstyp eines verschlüsselten Sicherheitscodes ab.
GetEncryptedPasscodeFingerprint(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen)
Rufen Sie den Fingerabdruckwert ab, der mit einem verschlüsselten Sicherheitscode verknüpft ist.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
Rufen Sie die ID des Schlüssels ab, mit dem ein verschlüsselter Sicherheitscode verschlüsselt wird.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
Ruft den Nonce-Wert ab, der einem verschlüsselten Sicherheitscode zugeordnet ist.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
Gibt „true“ zurück, wenn die angegebene Konfiguration für die Sicherheitscodeverschlüsselung von den APIs zur Verschlüsselung/Entschlüsselung von Sicherheitscodes unterstützt wird.

Strukturen

nl::Weave::Profiles::Security::Passcodes::EncryptedPasscodeStruct

Aufzählungen

@278

 @278

Konfigurationstypen für die Verschlüsselung von Weave-Sicherheitscodes

Attribute
kPasscodeConfig1_KeyId

Dummy-Schlüssel-ID für Test-Sicherheitscode-Konfiguration Nr. 1.

kPasscode_Config1_TEST_ONLY

In Konfiguration 1 für die Sicherheitscodeverschlüsselung werden weder Verschlüsselung noch geheime Schlüssel zur Authentifizierung und ein Fingerabdruck-Sicherheitscode verwendet.

Diese Konfiguration IST nur zu Testzwecken zu verwenden.

kPasscode_Config2

Die Passcode-Verschlüsselungskonfiguration 2 verwendet die AES-128-ECB-Verschlüsselung mit 8-Byte-HMAC-SHA-1-Integrität und 8-Byte-HMAC-SHA-1-Fingerabdruck.

@279

 @279

Parametergrößen für das Weave-Sicherheitscode-Verschlüsselungsprotokoll.

Attribute
kPasscodeAuthenticationKeyLen

Länge des SHA-1-Schlüssels für die Sicherheitscodeauthentifizierung.

kPasscodeAuthenticatorLen

Länge des Sicherheitscode-Authenticator

kPasscodeEncKeyDiversifierSize

Größe des Anwendungsschlüssel-Diversifizierers für die Sicherheitscodeverschlüsselung.

kPasscodeEncryptionKeyLen

Länge des Schlüssels für die Passcode-Verschlüsselung (AES-128).

kPasscodeFingerprintKeyDiversifierSize

Größe des Schlüssel-Diversifizierers für Sicherheitscode-Fingerabdruck.

kPasscodeFingerprintKeyLen

Schlüssellänge des Sicherheitscode-Fingerabdrucks (SHA-1).

kPasscodeFingerprintLen

Länge des Sicherheitscode-Fingerabdrucks.

kPasscodeMaxEncryptedLen

Maximale Länge verschlüsselter Sicherheitscodes.

kPasscodeMaxLen

Maximale Länge des nicht verschlüsselten Sicherheitscodes.

kPasscodePaddedLen

Länge des Sicherheitscodes (auf die AES-128-Blocklänge aufgefüllt).

kPasscodeTotalDerivedKeyLen

Gesamte Schlüssellänge des Sicherheitscodes (Verschlüsselung und Integrität).

Variablen

kPasscodeEncKeyDiversifier

const uint8_t kPasscodeEncKeyDiversifier[] = { 0x1A, 0x65, 0x5D, 0x96 }

Schlüsseldiversifizierer, der für die Ableitung der Verschlüsselungsschlüssel für Weave-Sicherheitscodes verwendet wird.

Dieser Wert stellt die ersten 4 Byte des SHA-1 HASH der Wortgruppe „Nest Passcode EK and AK“ dar.

kPasscodeFingerprintKeyDiversifier

const uint8_t kPasscodeFingerprintKeyDiversifier[] = { 0xD1, 0xA1, 0xD9, 0x6C }

Schlüsseldiversifizierer, der für die Ableitung der Verschlüsselungsschlüssel für Weave-Sicherheitscodes verwendet wird.

Dieser Wert stellt die ersten 4 Byte des SHA-1 HASH der Wortgruppe „Nest Passcode EK and AK“ dar.

Funktionen

DecryptPasscode

WEAVE_ERROR DecryptPasscode(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint8_t *passcodeBuf,
  size_t passcodeBufSize,
  size_t & passcodeLen,
  GroupKeyStoreBase *groupKeyStore
)

Einen Sicherheitscode entschlüsseln, der mit dem Nest Passcode-Verschlüsselungsschema verschlüsselt wurde

Details
Parameter
[in] encPasscode
Ein Zeiger auf den verschlüsselten Zwischenspeicher für Sicherheitscodes.
[in] encPasscodeLen
Die Länge des verschlüsselten Sicherheitscodes.
[in] passcodeBuf
Ein Zeiger auf einen Puffer, um den entschlüsselten Sicherheitscode zu erhalten.
[in] passcodeBufSize
Die Größe des Puffers, auf den SicherheitscodeBuf verweist.
[out] passcodeLen
Legen Sie die Länge des entschlüsselten Sicherheitscodes fest.
[in] groupKeyStore
Ein Zeiger auf das Gruppenschlüsselspeicherobjekt.
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Wenn die angegebene Sicherheitscodekonfiguration nicht unterstützt wird.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Wenn die Authentifizierung mit dem Sicherheitscode fehlschlägt
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Wenn die Prüfung des Fingerabdrucks des Sicherheitscodes fehlschlägt.
WEAVE_ERROR_INVALID_KEY_ID
Der angeforderte Schlüssel hat eine ungültige Schlüssel-ID.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn der bereitgestellte Puffer für den Sicherheitscode zu klein ist.
WEAVE_ERROR_INVALID_ARGUMENT
Wenn der verschlüsselte Sicherheitscode zu kurz oder zu lang ist, wenn kein Verweis auf den Gruppenschlüsselspeicher bereitgestellt wird oder der Plattformschlüsselspeicher ungültige Schlüsselparameter zurückgibt.
other
Andere plattformspezifische Fehler, die von den Plattformschlüsselspeicher-APIs zurückgegeben werden.

DecryptPasscode

WEAVE_ERROR DecryptPasscode(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  const uint8_t *encKey,
  const uint8_t *authKey,
  const uint8_t *fingerprintKey,
  uint8_t *passcodeBuf,
  size_t passcodeBufSize,
  size_t & passcodeLen
)

Einen Sicherheitscode entschlüsseln, der mit dem Nest Passcode-Verschlüsselungsschema verschlüsselt wurde

Details
Parameter
[in] encPasscode
Ein Zeiger auf den verschlüsselten Zwischenspeicher für Sicherheitscodes.
[in] encPasscodeLen
Die Länge des verschlüsselten Sicherheitscodes.
[in] encKey
Ein Zeiger auf den Schlüssel, der zum Verschlüsseln des Sicherheitscodes verwendet werden soll. Die Länge des Schlüssels muss mit dem Verschlüsselungsalgorithmus der angegebenen Konfiguration übereinstimmen.
[in] authKey
Ein Zeiger auf den Schlüssel, der zur Authentifizierung des Sicherheitscodes verwendet werden soll. Die Länge des Schlüssels muss mit dem Authentifizierungsalgorithmus der angegebenen Konfiguration übereinstimmen.
[in] fingerprintKey
Ein Zeiger auf den Schlüssel, der zum Generieren des Sicherheitscode-Fingerabdrucks verwendet werden soll. Die Länge des Schlüssels muss dem Fingerabdruck-Algorithmus entsprechen, der der angegebenen Konfiguration zugeordnet ist.
[in] passcodeBuf
Ein Zeiger auf einen Puffer, um den entschlüsselten Sicherheitscode zu erhalten.
[in] passcodeBufSize
Die Größe des Puffers, auf den SicherheitscodeBuf verweist.
[out] passcodeLen
Legen Sie die Länge des entschlüsselten Sicherheitscodes fest.
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Wenn die angegebene Sicherheitscodekonfiguration nicht unterstützt wird.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Wenn die Authentifizierung mit dem Sicherheitscode fehlschlägt
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Wenn die Prüfung des Fingerabdrucks des Sicherheitscodes fehlschlägt.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn der bereitgestellte Puffer für den Sicherheitscode zu klein ist.
WEAVE_ERROR_INVALID_ARGUMENT
Der verschlüsselte Sicherheitscode ist zu kurz oder zu lang.

EncryptPasscode

WEAVE_ERROR EncryptPasscode(
  uint8_t config,
  uint32_t keyId,
  uint32_t nonce,
  const uint8_t *passcode,
  size_t passcodeLen,
  uint8_t *encPasscode,
  size_t encPasscodeBufSize,
  size_t & encPasscodeLen,
  GroupKeyStoreBase *groupKeyStore
)

Verschlüssele einen Sicherheitscode mit dem Nest Passcode-Verschlüsselungsschema.

Details
Parameter
[in] config
Die zu verwendende Konfiguration für die Sicherheitscodeverschlüsselung.
[in] keyId
Die angeforderte ID des Sicherheitscodes für den Sicherheitscode.
[in] nonce
Ein eindeutiger Wert, der dem verschlüsselten Sicherheitscode zugewiesen ist.
[in] passcode
Ein Zeiger auf den zu verschlüsselnden Sicherheitscode.
[in] passcodeLen
Die Länge des Sicherheitscodes.
[out] encPasscode
Ein Zeiger auf den Zwischenspeicher zum Speichern des verschlüsselten Sicherheitscodes.
[in] encPasscodeBufSize
Die Größe des Puffers für die Speicherung verschlüsselter Sicherheitscodes.
[out] encPasscodeLen
Die Länge des verschlüsselten Sicherheitscodes.
[in] groupKeyStore
Ein Zeiger auf das Gruppenschlüsselspeicherobjekt.
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Wenn die angegebene Sicherheitscodekonfiguration nicht unterstützt wird.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn der angegebene Ausgabepuffer zu klein für einen verschlüsselten Sicherheitscode ist.
WEAVE_ERROR_INVALID_KEY_ID
Der angeforderte Schlüssel hat eine ungültige Schlüssel-ID.
WEAVE_ERROR_INVALID_ARGUMENT
Der angegebene Sicherheitscode ist zu kurz oder zu lang, oder wenn kein Verweis auf den Gruppenschlüsselspeicher bereitgestellt wird oder der Plattformschlüsselspeicher ungültige Schlüsselparameter zurückgibt.
other
Andere plattformspezifische Fehler, die von den Plattformschlüsselspeicher-APIs zurückgegeben werden.

EncryptPasscode

WEAVE_ERROR EncryptPasscode(
  uint8_t config,
  uint32_t keyId,
  uint32_t nonce,
  const uint8_t *passcode,
  size_t passcodeLen,
  const uint8_t *encKey,
  const uint8_t *authKey,
  const uint8_t *fingerprintKey,
  uint8_t *encPasscode,
  size_t encPasscodeBufSize,
  size_t & encPasscodeLen
)

Verschlüssele einen Sicherheitscode mit dem Nest Passcode-Verschlüsselungsschema.

Details
Parameter
[in] config
Die zu verwendende Konfiguration für die Verschlüsselung des Weave-Sicherheitscodes.
[in] keyId
Die angeforderte ID des Sicherheitscodes für den Sicherheitscode.
[in] nonce
Ein eindeutiger Wert, der dem Sicherheitscode zugewiesen ist.
[in] passcode
Ein Zeiger auf den zu verschlüsselnden Sicherheitscode.
[in] passcodeLen
Die Länge des Sicherheitscodes.
[in] encKey
Ein Zeiger auf den Schlüssel, der zum Verschlüsseln des Sicherheitscodes verwendet werden soll. Die Länge des Schlüssels muss mit dem Verschlüsselungsalgorithmus der angegebenen Konfiguration übereinstimmen.
[in] authKey
Ein Zeiger auf den Schlüssel, der zur Authentifizierung des Sicherheitscodes verwendet werden soll. Die Länge des Schlüssels muss mit dem Authentifizierungsalgorithmus der angegebenen Konfiguration übereinstimmen.
[in] fingerprintKey
Ein Zeiger auf den Schlüssel, der zum Generieren des Sicherheitscode-Fingerabdrucks verwendet werden soll. Die Länge des Schlüssels muss dem Fingerabdruck-Algorithmus entsprechen, der der angegebenen Konfiguration zugeordnet ist.
[out] encPasscode
Ein Zeiger auf einen Puffer, in dem der verschlüsselte Sicherheitscode gespeichert wird. Dieser Puffer muss mindestens kPasscodeMaxEncryptedLen groß sein.
[in] encPasscodeBufSize
Die Größe des Puffers, auf den encPasscode verweist.
[out] encPasscodeLen
Die Länge des verschlüsselten Sicherheitscodes.
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Wenn die angegebene Sicherheitscodekonfiguration nicht unterstützt wird.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn der angegebene Ausgabepuffer zu klein für einen verschlüsselten Sicherheitscode ist.
WEAVE_ERROR_INVALID_ARGUMENT
Der bereitgestellte Sicherheitscode ist zu kurz oder zu lang.

GetEncryptedPasscodeConfig

WEAVE_ERROR GetEncryptedPasscodeConfig(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint8_t & config
)

Rufen Sie den Konfigurationstyp eines verschlüsselten Sicherheitscodes ab.

Details
Parameter
[in] encPasscode
Zeiger auf einen Zwischenspeicher, der den verschlüsselten Sicherheitscode enthält.
[in] encPasscodeLen
Länge des verschlüsselten Sicherheitscodes.
[out] config
Die Verschlüsselungskonfiguration für den Weave-Sicherheitscode, die vom verschlüsselten Sicherheitscode verwendet wird.

GetEncryptedPasscodeFingerprint

WEAVE_ERROR GetEncryptedPasscodeFingerprint(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint8_t *fingerprintBuf,
  size_t fingerprintBufSize,
  size_t & fingerprintLen
)

Rufen Sie den Fingerabdruckwert ab, der mit einem verschlüsselten Sicherheitscode verknüpft ist.

Details
Parameter
[in] encPasscode
Zeiger auf einen Zwischenspeicher, der den verschlüsselten Sicherheitscode enthält.
[in] encPasscodeLen
Länge des verschlüsselten Sicherheitscodes.
[in] fingerprintBuf
Ein Puffer für den Empfang des Fingerabdruckwerts.
[in] fingerprintBufSize
Die Größe des Zwischenspeichers, auf den „FingerprintBuf“ verweist.
[out] fingerprintLen
Die Länge des zurückgegebenen Fingerabdruckwerts.

GetEncryptedPasscodeKeyId

WEAVE_ERROR GetEncryptedPasscodeKeyId(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint32_t & keyId
)

Rufen Sie die ID des Schlüssels ab, mit dem ein verschlüsselter Sicherheitscode verschlüsselt wird.

Details
Parameter
[in] encPasscode
Zeiger auf einen Zwischenspeicher, der den verschlüsselten Sicherheitscode enthält.
[in] encPasscodeLen
Länge des verschlüsselten Sicherheitscodes.
[out] keyId
Die ID des Schlüssels, der zum Verschlüsseln des verschlüsselten Sicherheitscodes verwendet wird.

GetEncryptedPasscodeNonce

WEAVE_ERROR GetEncryptedPasscodeNonce(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint32_t & nonce
)

Ruft den Nonce-Wert ab, der einem verschlüsselten Sicherheitscode zugeordnet ist.

Details
Parameter
[in] encPasscode
Zeiger auf einen Zwischenspeicher, der den verschlüsselten Sicherheitscode enthält.
[in] encPasscodeLen
Länge des verschlüsselten Sicherheitscodes.
[out] nonce
Der Nonce-Wert, der einem verschlüsselten Sicherheitscode zugeordnet ist.

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

Gibt „true“ zurück, wenn die angegebene Konfiguration für die Sicherheitscodeverschlüsselung von den APIs zur Verschlüsselung/Entschlüsselung von Sicherheitscodes unterstützt wird.