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

Cet espace de noms inclut toutes les interfaces de Weave pour la bibliothèque de codes secrets Weave du profil de sécurité Weave.

Résumé

Énumérations

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
énum
Types de configuration du chiffrement par code secret Weave.
@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)
}
énum
Weave les tailles des paramètres du protocole de chiffrement par code secret.

Variables

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Diversificateur de clé utilisé pour la dérivation des clés de chiffrement par code secret Weave.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Diversificateur de clé utilisé pour la dérivation des clés de chiffrement par code secret Weave.

Fonctions

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
Déchiffrer un code secret chiffré à l'aide du schéma de chiffrement Nest
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)
Déchiffrer un code secret chiffré à l'aide du schéma de chiffrement Nest
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)
Chiffrez un code secret à l'aide du schéma de chiffrement de code secret de Nest.
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)
Chiffrez un code secret à l'aide du schéma de chiffrement de code secret de Nest.
GetEncryptedPasscodeConfig(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config)
Obtenez le type de configuration d'un code secret chiffré.
GetEncryptedPasscodeFingerprint(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen)
Obtenez la valeur de l'empreinte associée à un code secret chiffré.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
Obtenez l'ID de la clé utilisée pour chiffrer un code secret chiffré.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
Obtenez la valeur nonce associée à un code secret chiffré.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
Renvoie la valeur "true" si la configuration de chiffrement par code secret fournie est compatible avec les API de chiffrement/déchiffrement par code secret.

Structs

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

Énumérations

@278

 @278

Types de configuration du chiffrement par code secret Weave.

Propriétés
kPasscodeConfig1_KeyId

ID de clé factice utilisé pour tester la configuration de code secret n° 1.

kPasscode_Config1_TEST_ONLY

La configuration de chiffrement par code secret n° 1 n'utilise pas le chiffrement ni les clés secrètes pour l'authentification, ni pour le code secret par empreinte digitale.

Cette configuration DEVRAIT être utilisée à des fins de TEST uniquement.

kPasscode_Config2

La configuration de chiffrement du code secret n° 2 utilise le chiffrement AES-128-ECB avec une intégrité HMAC-SHA-1 de 8 octets et une empreinte HMAC-SHA-1 de 8 octets.

@279

 @279

Weave les tailles des paramètres du protocole de chiffrement par code secret.

Propriétés
kPasscodeAuthenticationKeyLen

Longueur de la clé d'authentification par code secret (SHA-1).

kPasscodeAuthenticatorLen

Longueur de l'authentificateur de code secret.

kPasscodeEncKeyDiversifierSize

Taille du diversificateur de clé d'application de chiffrement par code secret.

kPasscodeEncryptionKeyLen

Longueur de la clé de chiffrement par code secret (AES-128).

kPasscodeFingerprintKeyDiversifierSize

Taille du diversificateur de clé d'empreinte du code secret.

kPasscodeFingerprintKeyLen

Longueur de la clé de l'empreinte du code secret (SHA-1).

kPasscodeFingerprintLen

Longueur de l'empreinte du code secret.

kPasscodeMaxEncryptedLen

Longueur maximale du code secret chiffré.

kPasscodeMaxLen

Longueur maximale d'un code secret non activé.

kPasscodePaddedLen

Longueur du code secret (complétée jusqu'à la longueur du bloc AES-128).

kPasscodeTotalDerivedKeyLen

Longueur totale de la clé (chiffrement et intégrité) du code secret.

Variables

kPasscodeEncKeyDiversifier

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

Diversificateur de clé utilisé pour la dérivation des clés de chiffrement par code secret Weave.

Cette valeur représente les quatre premiers octets du hachage SHA-1 de "Nest Passcode EK and AK" l'expression.

kPasscodeFingerprintKeyDiversifier

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

Diversificateur de clé utilisé pour la dérivation des clés de chiffrement par code secret Weave.

Cette valeur représente les quatre premiers octets du hachage SHA-1 de "Nest Passcode EK and AK" l'expression.

Fonctions

DecryptPasscode

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

Déchiffrer un code secret chiffré à l'aide du schéma de chiffrement Nest

Détails
Paramètres
[in] encPasscode
Pointeur vers le tampon du code secret chiffré.
[in] encPasscodeLen
Longueur du code secret chiffré.
[in] passcodeBuf
Pointeur vers un tampon pour recevoir le code secret déchiffré.
[in] passcodeBufSize
Taille du tampon indiqué par le code secretBuf.
[out] passcodeLen
Définissez la longueur du code secret déchiffré.
[in] groupKeyStore
Pointeur vers l'objet magasin de clés de groupe.
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si la configuration de code secret spécifiée n'est pas prise en charge.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
En cas d'échec de l'authentification par code secret.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
En cas d'échec de la vérification de l'empreinte du code secret.
WEAVE_ERROR_INVALID_KEY_ID
Si la clé demandée a un ID de clé non valide.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la mémoire tampon du code secret fourni est trop petite.
WEAVE_ERROR_INVALID_ARGUMENT
Si le code secret chiffré est trop court ou trop long : Ou si le pointeur vers le magasin de clés de groupe n'est pas fourni ou si le magasin de clés de la plate-forme renvoie des paramètres de clé non valides.
other
Autres erreurs spécifiques à la plate-forme renvoyées par les API de keystore de la plate-forme.

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
)

Déchiffrer un code secret chiffré à l'aide du schéma de chiffrement Nest

Détails
Paramètres
[in] encPasscode
Pointeur vers le tampon du code secret chiffré.
[in] encPasscodeLen
Longueur du code secret chiffré.
[in] encKey
Pointeur vers la clé à utiliser pour chiffrer le code secret. La longueur de la clé doit correspondre à l'algorithme de chiffrement associé à la configuration spécifiée.
[in] authKey
Pointeur vers la clé à utiliser pour authentifier le code secret. La longueur de la clé doit correspondre à l'algorithme d'authentification associé à la configuration spécifiée.
[in] fingerprintKey
Pointeur vers la clé à utiliser pour générer l'empreinte du code secret. La longueur de la clé doit correspondre à l'algorithme d'empreinte digitale associé à la configuration spécifiée.
[in] passcodeBuf
Pointeur vers un tampon pour recevoir le code secret déchiffré.
[in] passcodeBufSize
Taille du tampon indiqué par le code secretBuf.
[out] passcodeLen
Définissez la longueur du code secret déchiffré.
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si la configuration de code secret spécifiée n'est pas prise en charge.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
En cas d'échec de l'authentification par code secret.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
En cas d'échec de la vérification de l'empreinte du code secret.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la mémoire tampon du code secret fourni est trop petite.
WEAVE_ERROR_INVALID_ARGUMENT
Si le code secret chiffré est trop court ou trop long.

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
)

Chiffrez un code secret à l'aide du schéma de chiffrement de code secret de Nest.

Détails
Paramètres
[in] config
Configuration de chiffrement par code secret à utiliser.
[in] keyId
ID de la clé de chiffrement du code secret demandé.
[in] nonce
Valeur unique attribuée au code secret chiffré.
[in] passcode
Pointeur vers le code secret à chiffrer.
[in] passcodeLen
Longueur du code secret.
[out] encPasscode
Pointeur vers le tampon pour stocker le code secret chiffré.
[in] encPasscodeBufSize
Taille de la mémoire tampon pour le stockage des codes secrets chiffrés.
[out] encPasscodeLen
Longueur du code secret chiffré.
[in] groupKeyStore
Pointeur vers l'objet magasin de clés de groupe.
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si la configuration de code secret spécifiée n'est pas prise en charge.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si le tampon de sortie fourni est trop petit pour le code secret chiffré.
WEAVE_ERROR_INVALID_KEY_ID
Si la clé demandée a un ID de clé non valide.
WEAVE_ERROR_INVALID_ARGUMENT
Si le code secret fourni est trop court ou trop long : Ou si le pointeur vers le magasin de clés de groupe n'est pas fourni ou si le magasin de clés de la plate-forme renvoie des paramètres de clé non valides.
other
Autres erreurs spécifiques à la plate-forme renvoyées par les API de keystore de la plate-forme.

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
)

Chiffrez un code secret à l'aide du schéma de chiffrement de code secret de Nest.

Détails
Paramètres
[in] config
Configuration du chiffrement par code secret Weave à utiliser.
[in] keyId
ID de la clé de chiffrement du code secret demandé.
[in] nonce
Valeur unique attribuée au code secret.
[in] passcode
Pointeur vers le code secret à chiffrer.
[in] passcodeLen
Longueur du code secret.
[in] encKey
Pointeur vers la clé à utiliser pour chiffrer le code secret. La longueur de la clé doit correspondre à l'algorithme de chiffrement associé à la configuration spécifiée.
[in] authKey
Pointeur vers la clé à utiliser pour authentifier le code secret. La longueur de la clé doit correspondre à l'algorithme d'authentification associé à la configuration spécifiée.
[in] fingerprintKey
Pointeur vers la clé à utiliser pour générer l'empreinte du code secret. La longueur de la clé doit correspondre à l'algorithme d'empreinte digitale associé à la configuration spécifiée.
[out] encPasscode
Pointeur vers un tampon dans lequel le code secret chiffré sera stocké. La taille de ce tampon doit être d'au moins kPasscodeMaxEncryptedLen.
[in] encPasscodeBufSize
Taille du tampon indiqué par encPasscode.
[out] encPasscodeLen
Longueur du code secret chiffré.
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si la configuration de code secret spécifiée n'est pas prise en charge.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si le tampon de sortie fourni est trop petit pour le code secret chiffré.
WEAVE_ERROR_INVALID_ARGUMENT
Si le code secret fourni est trop court ou trop long.

GetEncryptedPasscodeConfig

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

Obtenez le type de configuration d'un code secret chiffré.

Détails
Paramètres
[in] encPasscode
Pointeur vers un tampon contenant le code secret chiffré.
[in] encPasscodeLen
Longueur du code secret chiffré.
[out] config
Configuration du chiffrement par code secret Weave utilisée par le code secret chiffré.

GetEncryptedPasscodeFingerprint

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

Obtenez la valeur de l'empreinte associée à un code secret chiffré.

Détails
Paramètres
[in] encPasscode
Pointeur vers un tampon contenant le code secret chiffré.
[in] encPasscodeLen
Longueur du code secret chiffré.
[in] fingerprintBuf
Tampon pour recevoir la valeur de l'empreinte.
[in] fingerprintBufSize
Taille du tampon indiqué par fingerprintBuf.
[out] fingerprintLen
Longueur de la valeur d'empreinte renvoyée.

GetEncryptedPasscodeKeyId

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

Obtenez l'ID de la clé utilisée pour chiffrer un code secret chiffré.

Détails
Paramètres
[in] encPasscode
Pointeur vers un tampon contenant le code secret chiffré.
[in] encPasscodeLen
Longueur du code secret chiffré.
[out] keyId
ID de la clé utilisée pour chiffrer le code secret chiffré.

GetEncryptedPasscodeNonce

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

Obtenez la valeur nonce associée à un code secret chiffré.

Détails
Paramètres
[in] encPasscode
Pointeur vers un tampon contenant le code secret chiffré.
[in] encPasscodeLen
Longueur du code secret chiffré.
[out] nonce
Valeur nonce associée à un code secret chiffré.

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

Renvoie la valeur "true" si la configuration de chiffrement par code secret fournie est compatible avec les API de chiffrement/déchiffrement par code secret.