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

Dieser Namespace umfasst alle Schnittstellen in Weave für die Weave-Sicherheitscode-Bibliothek im Weave-Sicherheitsprofil.

Zusammenfassung

Aufzählungen

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum
Weave-Konfigurationstypen für die Verschlüsselung von 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
Weave-Parametergrößen für das Verschlüsselungsprotokoll für Sicherheitscodes.

Variablen

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Schlüsseldiversifikator, der zur Ableitung des Weave-Sicherheitsschlüssels für den Verschlüsselungsschlüssel verwendet wird.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Schlüsseldiversifikator, der zur Ableitung des Weave-Sicherheitsschlüssels für den Verschlüsselungsschlüssel verwendet wird.

Funktionen

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
Entschlüsseln Sie einen Sicherheitscode, 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)
Entschlüsseln Sie einen Sicherheitscode, 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 mithilfe des Nest Passcode-Verschlüsselungsschemas.
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 mithilfe des Nest Passcode-Verschlüsselungsschemas.
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)
Ruft den Fingerabdruckwert ab, der mit einem verschlüsselten Sicherheitscode verknüpft ist.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
Die ID des Schlüssels abrufen, der zur Verschlüsselung eines verschlüsselten Sicherheitscodes verwendet wird.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
Ruft den Nonce-Wert ab, der mit einem verschlüsselten Sicherheitscode verknüpft ist.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
Gibt "true" zurück, wenn die bereitgestellte 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

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

Attribute
kPasscodeConfig1_KeyId

Dummy-Schlüssel-ID, die für die Test-Sicherheitscodekonfiguration Nr. 1 verwendet wird.

kPasscode_Config1_TEST_ONLY

In der Passcode-Verschlüsselungskonfiguration 1 werden weder Verschlüsselung noch geheime Schlüssel zur Authentifizierung und zum Fingerabdruck-Sicherheitscode verwendet.

Diese Konfiguration sollte nur zu Testzwecken verwendet werden.

kPasscode_Config2

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

@279

 @279

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

Attribute
kPasscodeAuthenticationKeyLen

Länge des Schlüssels für die Passcode-Authentifizierung (SHA-1).

kPasscodeAuthenticatorLen

Länge der Authentifizierungs-ID des Sicherheitscodes.

kPasscodeEncKeyDiversifierSize

Diversifiergröße des Anwendungsschlüssels für die Passcode-Verschlüsselung.

kPasscodeEncryptionKeyLen

Schlüssellänge der Passcode-Verschlüsselung (AES-128).

kPasscodeFingerprintKeyDiversifierSize

Diversifier-Größe für Sicherheitscode-Fingerabdruckschlüssel.

kPasscodeFingerprintKeyLen

Länge des Sicherheitscode-Fingerabdruckschlüssels (SHA-1).

kPasscodeFingerprintLen

Länge des Sicherheitscode-Fingerabdrucks.

kPasscodeMaxEncryptedLen

Maximale Länge des verschlüsselten Sicherheitscodes.

kPasscodeMaxLen

Maximale Länge des nicht verschlüsselten Sicherheitscodes.

kPasscodePaddedLen

Sicherheitscodelänge (aufgefüllt auf die AES-128-Blocklänge).

kPasscodeTotalDerivedKeyLen

Gesamtlänge des Sicherheitscodes (Verschlüsselung und Integrität).

Variablen

kPasscodeEncKeyDiversifier

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

Schlüsseldiversifikator, der zur Ableitung des Weave-Sicherheitsschlüssel-Verschlüsselungsschlüssels verwendet wird.

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

kPasscodeFingerprintKeyDiversifier

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

Schlüsseldiversifikator, der zur Ableitung des Weave-Sicherheitsschlüssels für den Verschlüsselungsschlüssel verwendet wird.

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

Funktionen

DecryptPasscode

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

Entschlüsseln Sie einen Sicherheitscode, der mit dem Nest Passcode-Verschlüsselungsschema verschlüsselt wurde.

Details
Parameter
[in] encPasscode
Ein Zeiger zum verschlüsselten Sicherheitscode-Zwischenspeicher.
[in] encPasscodeLen
Die Länge des verschlüsselten Sicherheitscodes.
[in] passcodeBuf
Ein Zeiger zu einem Zwischenspeicher für den entschlüsselten Sicherheitscode.
[in] passcodeBufSize
Die Größe des Zwischenspeichers, auf den der SicherheitscodeBuf verweist.
[out] passcodeLen
Legen Sie die Länge des entschlüsselten Sicherheitscodes fest.
[in] groupKeyStore
Ein Verweis auf das Gruppenschlüsselspeicherobjekt.
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Wenn der Sicherheitscode angegeben wurde, wird die Konfiguration nicht unterstützt.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Wenn die Authentifizierung per Passcode fehlschlägt
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Wenn die Prüfung des Sicherheitscodes per Fingerabdruck fehlschlägt.
WEAVE_ERROR_INVALID_KEY_ID
Wenn der angeforderte Schlüssel eine ungültige Schlüssel-ID hat.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn der bereitgestellte Passcode-Zwischenspeicher zu klein ist.
WEAVE_ERROR_INVALID_ARGUMENT
Wenn der verschlüsselte Sicherheitscode zu kurz oder zu lang ist: Oder wenn kein Zeiger auf den Gruppenschlüsselspeicher angegeben ist oder der Plattformschlüsselspeicher ungültige Schlüsselparameter zurückgibt.
other
Andere plattformspezifische Fehler, die von den Platform Key Store 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
)

Entschlüsseln Sie einen Sicherheitscode, der mit dem Nest Passcode-Verschlüsselungsschema verschlüsselt wurde.

Details
Parameter
[in] encPasscode
Ein Zeiger zum verschlüsselten Sicherheitscode-Zwischenspeicher.
[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 dem Verschlüsselungsalgorithmus entsprechen, der der angegebenen Konfiguration zugeordnet ist.
[in] authKey
Ein Zeiger auf den Schlüssel, der zur Authentifizierung des Sicherheitscodes verwendet werden soll. Die Länge des Schlüssels muss dem Authentifizierungsalgorithmus entsprechen, der der angegebenen Konfiguration zugeordnet ist.
[in] fingerprintKey
Ein Zeiger auf den Schlüssel, der zum Generieren des Sicherheitscode-Fingerabdrucks verwendet werden soll. Die Länge des Schlüssels muss mit dem Fingerabdruck-Algorithmus übereinstimmen, der der angegebenen Konfiguration zugeordnet ist.
[in] passcodeBuf
Ein Zeiger zu einem Zwischenspeicher für den entschlüsselten Sicherheitscode.
[in] passcodeBufSize
Die Größe des Zwischenspeichers, auf den der 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 der Sicherheitscode angegeben wurde, wird die Konfiguration nicht unterstützt.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Wenn die Authentifizierung per Passcode fehlschlägt
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Wenn die Prüfung des Sicherheitscodes per Fingerabdruck fehlschlägt.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn der bereitgestellte Passcode-Zwischenspeicher zu klein ist.
WEAVE_ERROR_INVALID_ARGUMENT
Wenn der verschlüsselte Sicherheitscode zu kurz oder zu lang ist.

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 mithilfe des Nest Passcode-Verschlüsselungsschemas.

Details
Parameter
[in] config
Die zu verwendende Konfiguration für die Sicherheitscodeverschlüsselung.
[in] keyId
Die angeforderte ID des Sicherheitscode-Verschlüsselungsschlüssels.
[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 zum Zwischenspeicher zum Speichern des verschlüsselten Sicherheitscodes.
[in] encPasscodeBufSize
Die Größe des Zwischenspeichers für die verschlüsselte Speicherung von Sicherheitscodes.
[out] encPasscodeLen
Die Länge des verschlüsselten Sicherheitscodes.
[in] groupKeyStore
Ein Verweis auf das Gruppenschlüsselspeicherobjekt.
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Wenn der Sicherheitscode angegeben wurde, wird die Konfiguration nicht unterstützt.
WEAVE_ERROR_BUFFER_TOO_SMALL
Falls angegeben, ist der Ausgabepuffer zu klein für einen verschlüsselten Sicherheitscode.
WEAVE_ERROR_INVALID_KEY_ID
Wenn der angeforderte Schlüssel eine ungültige Schlüssel-ID hat.
WEAVE_ERROR_INVALID_ARGUMENT
Wenn der angegebene Sicherheitscode zu kurz oder zu lang ist: Oder wenn kein Zeiger auf den Gruppenschlüsselspeicher angegeben ist oder der Plattformschlüsselspeicher ungültige Schlüsselparameter zurückgibt.
other
Andere plattformspezifische Fehler, die von den Platform Key Store 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 mithilfe des Nest Passcode-Verschlüsselungsschemas.

Details
Parameter
[in] config
Die zu verwendende Konfiguration für die Weave-Sicherheitscodeverschlüsselung.
[in] keyId
Die angeforderte ID des Sicherheitscode-Verschlüsselungsschlüssels.
[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 dem Verschlüsselungsalgorithmus entsprechen, der der angegebenen Konfiguration zugeordnet ist.
[in] authKey
Ein Zeiger auf den Schlüssel, der zur Authentifizierung des Sicherheitscodes verwendet werden soll. Die Länge des Schlüssels muss dem Authentifizierungsalgorithmus entsprechen, der der angegebenen Konfiguration zugeordnet ist.
[in] fingerprintKey
Ein Zeiger auf den Schlüssel, der zum Generieren des Sicherheitscode-Fingerabdrucks verwendet werden soll. Die Länge des Schlüssels muss mit dem Fingerabdruck-Algorithmus übereinstimmen, der der angegebenen Konfiguration zugeordnet ist.
[out] encPasscode
Ein Zeiger auf einen Zwischenspeicher, in dem der verschlüsselte Sicherheitscode gespeichert wird. Dieser Puffer muss mindestens kPasscodeMaxEncryptedLen groß sein.
[in] encPasscodeBufSize
Die Größe des Zwischenspeichers, 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 der Sicherheitscode angegeben wurde, wird die Konfiguration nicht unterstützt.
WEAVE_ERROR_BUFFER_TOO_SMALL
Falls angegeben, ist der Ausgabepuffer zu klein für einen verschlüsselten Sicherheitscode.
WEAVE_ERROR_INVALID_ARGUMENT
Wenn der angegebene Sicherheitscode zu kurz oder zu lang ist.

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 vom verschlüsselten Sicherheitscode verwendete Konfiguration für die Weave-Sicherheitscodeverschlüsselung.

GetEncryptedPasscodeFingerprint

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

Ruft 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 Zwischenspeicher für den Empfang des Fingerabdruckwerts.
[in] fingerprintBufSize
Die Größe des Zwischenspeichers, auf den FingerabdruckBuf verweist.
[out] fingerprintLen
Die Länge des zurückgegebenen Fingerabdruckwerts.

GetEncryptedPasscodeKeyId

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

Die ID des Schlüssels abrufen, der zur Verschlüsselung eines verschlüsselten Sicherheitscodes verwendet 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 zur Verschlüsselung 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 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.
[out] nonce
Der Nonce-Wert, der mit einem verschlüsselten Sicherheitscode verknüpft ist.

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

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