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

Este espacio de nombres incluye todas las interfaces de Weave para la biblioteca de contraseñas de Weave dentro del perfil de seguridad de Weave.

Resumen

Enumeraciones

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum
Tipos de configuración de encriptación de contraseñas de 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
Tamaños de los parámetros del protocolo de encriptación de contraseñas de Weave.

Variables

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Diversificador de claves utilizado para la derivación de claves de encriptación de contraseñas de Weave.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Diversificador de claves utilizado para la derivación de claves de encriptación de contraseñas de Weave.

remotas

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
Desencripta una contraseña que se encriptó con el esquema de encriptación de contraseña de 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)
Desencripta una contraseña que se encriptó con el esquema de encriptación de contraseña de 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)
Encripta una contraseña con el esquema de encriptación de contraseña 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)
Encripta una contraseña con el esquema de encriptación de contraseña de Nest.
GetEncryptedPasscodeConfig(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config)
Obtén el tipo de configuración de una contraseña encriptada.
GetEncryptedPasscodeFingerprint(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen)
Obtén el valor de la huella digital asociado con una contraseña encriptada.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
Obtén el ID de la clave que se usó para encriptar una contraseña encriptada.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
Obtén el valor del nonce asociado con una contraseña encriptada.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
Muestra true si la configuración de encriptación de contraseña proporcionada es compatible con las APIs de encriptación/desencriptación de contraseña.

Structs

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

Enumeraciones

@278

 @278

Tipos de configuración de encriptación de contraseñas de Weave.

Propiedades
kPasscodeConfig1_KeyId

ID de clave ficticio usado para la configuración de contraseña de prueba núm. 1.

kPasscode_Config1_TEST_ONLY

La configuración de encriptación de código de acceso n° 1 no usa encriptación ni claves secretas para la autenticación y la huella digital de la contraseña.

Esta configuración DEBE usarse únicamente con fines de PRUEBA.

kPasscode_Config2

La configuración de encriptación de código de acceso n° 2 usa encriptación AES-128-ECB con integridad HMAC-SHA-1 de 8 bytes y huella digital HMAC-SHA-1 de 8 bytes.

@279

 @279

Tamaños de los parámetros del protocolo de encriptación de contraseñas de Weave.

Propiedades
kPasscodeAuthenticationKeyLen

Longitud de la clave de autenticación con código de acceso (SHA-1).

kPasscodeAuthenticatorLen

Longitud del autenticador de código de acceso.

kPasscodeEncKeyDiversifierSize

Tamaño del diversificador de claves de la aplicación de encriptación de contraseñas.

kPasscodeEncryptionKeyLen

Longitud de la clave de encriptación de contraseña (AES-128).

kPasscodeFingerprintKeyDiversifierSize

Tamaño del diversificador de la clave de huella digital de código de acceso.

kPasscodeFingerprintKeyLen

Longitud de la clave de la huella digital de código de acceso (SHA-1).

kPasscodeFingerprintLen

Longitud de la huella digital del código de acceso.

kPasscodeMaxEncryptedLen

Longitud máxima de la contraseña encriptada.

kPasscodeMaxLen

Longitud máxima de contraseña no encriptada.

kPasscodePaddedLen

Longitud del código de acceso (con relleno según la longitud del bloque AES-128).

kPasscodeTotalDerivedKeyLen

Longitud total de la clave de código de acceso (integridad y encriptación).

Variables

kPasscodeEncKeyDiversifier

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

Diversificador de claves utilizado para la derivación de claves de encriptación de contraseñas de Weave.

Este valor representa los primeros 4 bytes de la HASH SHA-1 de la frase “Nest Passcode EK and AK”.

kPasscodeFingerprintKeyDiversifier

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

Diversificador de claves utilizado para la derivación de claves de encriptación de contraseñas de Weave.

Este valor representa los primeros 4 bytes de la HASH SHA-1 de la frase “Nest Passcode EK and AK”.

remotas

DecryptPasscode

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

Desencripta una contraseña que se encriptó con el esquema de encriptación de contraseña de Nest.

Detalles
Parámetros
[in] encPasscode
Un puntero para el búfer de contraseña encriptada.
[in] encPasscodeLen
La longitud de la contraseña encriptada.
[in] passcodeBuf
Un puntero a un búfer para recibir la contraseña desencriptada.
[in] passcodeBufSize
Tamaño del búfer al que apunta passwordBuf.
[out] passcodeLen
Establece la longitud de la contraseña desencriptada.
[in] groupKeyStore
Un puntero para el objeto del almacén de claves del grupo.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si no se admite la configuración de la contraseña especificada.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Si falla la autenticación con contraseña
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Si falla la verificación de huella digital de la contraseña.
WEAVE_ERROR_INVALID_KEY_ID
Si la clave solicitada tiene un ID de clave no válido.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si el búfer de contraseña proporcionado es demasiado pequeño.
WEAVE_ERROR_INVALID_ARGUMENT
Si la contraseña encriptada es demasiado corta o larga, si no se proporciona el puntero al almacén de claves del grupo o si el almacén de claves de la plataforma muestra parámetros de clave no válidos.
other
Otros errores específicos de la plataforma que muestran las APIs del almacén de claves de la plataforma.

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
)

Desencripta una contraseña que se encriptó con el esquema de encriptación de contraseña de Nest.

Detalles
Parámetros
[in] encPasscode
Un puntero para el búfer de contraseña encriptada.
[in] encPasscodeLen
La longitud de la contraseña encriptada.
[in] encKey
Un puntero a la clave que se usará para encriptar la contraseña. La longitud de la clave debe coincidir con el algoritmo de encriptación asociado con la configuración especificada.
[in] authKey
Un puntero a la clave que se usará para autenticar la contraseña. La longitud de la clave debe coincidir con el algoritmo de autenticación asociado con la configuración especificada.
[in] fingerprintKey
Un puntero a la clave que se usará para generar la huella digital de la contraseña. La longitud de la clave debe coincidir con el algoritmo de huellas digitales asociado con la configuración especificada.
[in] passcodeBuf
Un puntero a un búfer para recibir la contraseña desencriptada.
[in] passcodeBufSize
Tamaño del búfer al que apunta passwordBuf.
[out] passcodeLen
Establece la longitud de la contraseña desencriptada.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si no se admite la configuración de la contraseña especificada.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Si falla la autenticación con contraseña
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Si falla la verificación de huella digital de la contraseña.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si el búfer de contraseña proporcionado es demasiado pequeño.
WEAVE_ERROR_INVALID_ARGUMENT
Si la contraseña encriptada es demasiado corta o larga.

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
)

Encripta una contraseña con el esquema de encriptación de contraseña de Nest.

Detalles
Parámetros
[in] config
La configuración de encriptación de contraseñas que se usará.
[in] keyId
El ID de la clave de encriptación de la contraseña solicitada.
[in] nonce
Un valor único asignado a la contraseña encriptada.
[in] passcode
Un puntero para la contraseña que se encriptará.
[in] passcodeLen
La longitud de la contraseña.
[out] encPasscode
Un puntero al búfer para almacenar contraseñas encriptadas.
[in] encPasscodeBufSize
El tamaño del búfer para el almacenamiento de contraseñas encriptadas.
[out] encPasscodeLen
La longitud de la contraseña encriptada.
[in] groupKeyStore
Un puntero para el objeto del almacén de claves del grupo.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si no se admite la configuración de la contraseña especificada.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si el búfer de salida proporcionado es demasiado pequeño para la contraseña encriptada,
WEAVE_ERROR_INVALID_KEY_ID
Si la clave solicitada tiene un ID de clave no válido.
WEAVE_ERROR_INVALID_ARGUMENT
Si la contraseña proporcionada es demasiado corta o larga, o si no se proporciona el puntero al almacén de claves del grupo o si el almacén de claves de la plataforma muestra parámetros de claves no válidos.
other
Otros errores específicos de la plataforma que muestran las APIs del almacén de claves de la plataforma.

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
)

Encripta una contraseña con el esquema de encriptación de contraseña de Nest.

Detalles
Parámetros
[in] config
La configuración de encriptación de contraseñas de Weave que se usará.
[in] keyId
El ID de la clave de encriptación de la contraseña solicitada.
[in] nonce
Un valor único asignado a la contraseña.
[in] passcode
Un puntero para la contraseña que se encriptará.
[in] passcodeLen
La longitud de la contraseña.
[in] encKey
Un puntero a la clave que se usará para encriptar la contraseña. La longitud de la clave debe coincidir con el algoritmo de encriptación asociado con la configuración especificada.
[in] authKey
Un puntero a la clave que se usará para autenticar la contraseña. La longitud de la clave debe coincidir con el algoritmo de autenticación asociado con la configuración especificada.
[in] fingerprintKey
Un puntero a la clave que se usará para generar la huella digital de la contraseña. La longitud de la clave debe coincidir con el algoritmo de huellas digitales asociado con la configuración especificada.
[out] encPasscode
Un puntero a un búfer en el que se almacenará la contraseña encriptada. Este búfer debe tener un tamaño de al menos kPasscodeMaxEncryptedLen.
[in] encPasscodeBufSize
Es el tamaño del búfer al que apunta encPasscode.
[out] encPasscodeLen
La longitud de la contraseña encriptada.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si no se admite la configuración de la contraseña especificada.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si el búfer de salida proporcionado es demasiado pequeño para la contraseña encriptada,
WEAVE_ERROR_INVALID_ARGUMENT
Si la contraseña proporcionada es demasiado corta o larga.

GetEncryptedPasscodeConfig

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

Obtén el tipo de configuración de una contraseña encriptada.

Detalles
Parámetros
[in] encPasscode
Es un puntero a un búfer que contiene la contraseña encriptada.
[in] encPasscodeLen
Longitud de la contraseña encriptada.
[out] config
Configuración de encriptación de contraseñas de Weave que usa la contraseña encriptada.

GetEncryptedPasscodeFingerprint

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

Obtén el valor de la huella digital asociado con una contraseña encriptada.

Detalles
Parámetros
[in] encPasscode
Es un puntero a un búfer que contiene la contraseña encriptada.
[in] encPasscodeLen
Longitud de la contraseña encriptada.
[in] fingerprintBuf
Un búfer para recibir el valor de la huella digital.
[in] fingerprintBufSize
Es el tamaño del búfer al que apunta phishingBuf.
[out] fingerprintLen
La longitud del valor de huella digital que se muestra.

GetEncryptedPasscodeKeyId

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

Obtén el ID de la clave que se usó para encriptar una contraseña encriptada.

Detalles
Parámetros
[in] encPasscode
Es un puntero a un búfer que contiene la contraseña encriptada.
[in] encPasscodeLen
Longitud de la contraseña encriptada.
[out] keyId
El ID de la clave que se usó para encriptar la contraseña encriptada.

GetEncryptedPasscodeNonce

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

Obtén el valor del nonce asociado con una contraseña encriptada.

Detalles
Parámetros
[in] encPasscode
Es un puntero a un búfer que contiene la contraseña encriptada.
[in] encPasscodeLen
Longitud de la contraseña encriptada.
[out] nonce
El valor del nonce asociado con una contraseña encriptada.

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

Muestra true si la configuración de encriptación de contraseña proporcionada es compatible con las APIs de encriptación/desencriptación de contraseña.