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

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

Résumé

Énumérations

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum
Types de configuration du chiffrement des codes secrets 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)
}
enum
Tailles des paramètres de protocole de chiffrement des codes secrets Weave.

Variables

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

distantes

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
Déchiffrer un code secret qui a été chiffré à l'aide du schéma de chiffrement Nest par code secret
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 qui a été chiffré à l'aide du schéma de chiffrement Nest par code secret
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 système de chiffrement Nest par code secret.
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 système de chiffrement Nest par code secret.
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 fournie pour le chiffrement des codes secrets est compatible avec les API de chiffrement/déchiffrement des codes secrets.

Structs

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

Énumérations

@278

 @278

Types de configuration du chiffrement des codes secrets Weave.

Propriétés
kPasscodeConfig1_KeyId

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

kPasscode_Config1_TEST_ONLY

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

Cette configuration DOIT être utilisée uniquement pour les TESTS.

kPasscode_Config2

La configuration 2 du chiffrement par code d'accès 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

Tailles des paramètres de protocole de chiffrement des codes secrets Weave.

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 pour le chiffrement par code secret.

kPasscodeEncryptionKeyLen

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

kPasscodeFingerprintKeyDiversifierSize

Taille du diversificateur de clé d'empreinte par 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 chiffré.

kPasscodePaddedLen

Longueur du code secret (ajoutée à la longueur du bloc AES-128).

kPasscodeTotalDerivedKeyLen

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

Variables

kPasscodeEncKeyDiversifier

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

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

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

kPasscodeFingerprintKeyDiversifier

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

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

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

distantes

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 qui a été chiffré à l'aide du schéma de chiffrement Nest par code secret

Détails
Paramètres
[in] encPasscode
Pointeur sur 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 codeBuf.
[out] passcodeLen
Définissez la longueur du code secret déchiffré.
[in] groupKeyStore
Pointeur vers l'objet keystore de groupe.
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si la configuration du code secret spécifié 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 des empreintes digitales du code secret.
WEAVE_ERROR_INVALID_KEY_ID
Si l'ID de la clé demandée n'est pas valide.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la mémoire tampon du code secret fournie est trop petite.
WEAVE_ERROR_INVALID_ARGUMENT
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 keystore 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 du 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 qui a été chiffré à l'aide du schéma de chiffrement Nest par code secret

Détails
Paramètres
[in] encPasscode
Pointeur sur 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 codeBuf.
[out] passcodeLen
Définissez la longueur du code secret déchiffré.
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si la configuration du code secret spécifié 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 des empreintes digitales du code secret.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la mémoire tampon du code secret fournie est trop petite.
WEAVE_ERROR_INVALID_ARGUMENT
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 système de chiffrement Nest par code secret.

Détails
Paramètres
[in] config
Configuration du chiffrement du 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 où 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 keystore de groupe.
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si la configuration du code secret spécifié n'est pas prise en charge.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si le tampon de sortie est fourni, il est trop petit pour un code secret chiffré.
WEAVE_ERROR_INVALID_KEY_ID
Si l'ID de la clé demandée n'est pas valide.
WEAVE_ERROR_INVALID_ARGUMENT
Si le code secret fourni est trop court ou trop long, si le pointeur vers le magasin de clés de groupe n'est pas fourni ou si le keystore de plate-forme renvoie des paramètres de clé non valides.
other
Autres erreurs spécifiques à la plate-forme renvoyées par les API du 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 système de chiffrement Nest par code secret.

Détails
Paramètres
[in] config
Configuration de chiffrement du 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 vers laquelle pointe la fonction encPasscode.
[out] encPasscodeLen
Longueur du code secret chiffré.
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si la configuration du code secret spécifié n'est pas prise en charge.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si le tampon de sortie est fourni, il est trop petit pour un code secret chiffré.
WEAVE_ERROR_INVALID_ARGUMENT
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 sur 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 sur un tampon contenant le code secret chiffré.
[in] encPasscodeLen
Longueur du code secret chiffré.
[in] fingerprintBuf
Un 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 sur un tampon contenant le code secret chiffré.
[in] encPasscodeLen
Longueur du code secret chiffré.
[out] keyId
Identifiant 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 sur 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 fournie pour le chiffrement des codes secrets est compatible avec les API de chiffrement/déchiffrement des codes secrets.