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
Teje los tamaños de los parámetros del protocolo de encriptación de contraseñas.

Variables

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Diversificador de claves que se usa 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 que se usa para la derivación de claves de encriptación de contraseñas de Weave.

Funciones

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
Desencriptar una contraseña que se encriptó con el esquema de encriptación de contraseñas 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)
Desencriptar una contraseña que se encriptó con el esquema de encriptación de contraseñas 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)
Para encriptar una contraseña, usa el esquema de encriptación de contraseñas 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)
Para encriptar una contraseña, usa el esquema de encriptación de contraseñas 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)
Obtiene el valor del nonce asociado con una contraseña encriptada.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
Muestra el valor true si la configuración de encriptación de contraseñas proporcionada es compatible con las APIs de encriptación/desencriptación de contraseñas.

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 la clave ficticia utilizada para probar la configuración de la contraseña #1.

kPasscode_Config1_TEST_ONLY

La configuración de encriptación de contraseña n.o 1 no utiliza encriptación ni claves secretas para realizar la autenticación y la contraseña de huella digital.

Esta configuración SE DEBE utilizar únicamente para realizar PRUEBAs.

kPasscode_Config2

La configuración de encriptación de contraseña #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

Teje los tamaños de los parámetros del protocolo de encriptación de contraseñas.

Propiedades
kPasscodeAuthenticationKeyLen

Longitud de la clave de autenticación de contraseña (SHA-1).

kPasscodeAuthenticatorLen

Longitud del autenticador de la contraseña.

kPasscodeEncKeyDiversifierSize

Tamaño del multiplicador 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 la contraseña.

kPasscodeFingerprintKeyLen

Longitud de la clave de la huella digital de la contraseña (SHA-1).

kPasscodeFingerprintLen

Longitud de la huella digital de la contraseña.

kPasscodeMaxEncryptedLen

Longitud máxima de la contraseña encriptada.

kPasscodeMaxLen

Longitud máxima de la contraseña sin encriptación.

kPasscodePaddedLen

Longitud de la contraseña (rellenada al largo del bloque AES-128).

kPasscodeTotalDerivedKeyLen

Longitud total de la clave de la contraseña (integridad y encriptación).

Variables

kPasscodeEncKeyDiversifier

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

Diversificador de claves que se usa para la derivación de claves de encriptación de contraseñas de Weave.

Este valor representa los primeros 4 bytes del HASH SHA-1 del "código de acceso de Nest EK y AK". frase.

kPasscodeFingerprintKeyDiversifier

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

Diversificador de claves que se usa para la derivación de claves de encriptación de contraseñas de Weave.

Este valor representa los primeros 4 bytes del HASH SHA-1 del "código de acceso de Nest EK y AK". frase.

Funciones

DecryptPasscode

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

Desencriptar una contraseña que se encriptó con el esquema de encriptación de contraseñas de Nest

Detalles
Parámetros
[in] encPasscode
Un puntero al búfer de contraseñas encriptado.
[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
El tamaño del búfer al que apunta contraseñaBuf.
[out] passcodeLen
Se establece en la longitud de la contraseña desencriptada.
[in] groupKeyStore
Un puntero al objeto del almacén de claves del grupo.
Valores de retorno
WEAVE_NO_ERROR
Si tiene éxito.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si no se admite la configuración especificada de la contraseña.
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 suministrado es demasiado pequeño.
WEAVE_ERROR_INVALID_ARGUMENT
Si la contraseña encriptada es demasiado corta o demasiado larga. O bien si no se proporciona un puntero al almacén de claves de 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 de la tienda 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
)

Desencriptar una contraseña que se encriptó con el esquema de encriptación de contraseñas de Nest

Detalles
Parámetros
[in] encPasscode
Un puntero al búfer de contraseñas encriptado.
[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 llave que se usará para autenticar el código. 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 huella digital asociado con la configuración especificada.
[in] passcodeBuf
Un puntero a un búfer para recibir la contraseña desencriptada.
[in] passcodeBufSize
El tamaño del búfer al que apunta contraseñaBuf.
[out] passcodeLen
Se establece en la longitud de la contraseña desencriptada.
Valores de retorno
WEAVE_NO_ERROR
Si tiene éxito.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si no se admite la configuración especificada de la contraseña.
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 suministrado es demasiado pequeño.
WEAVE_ERROR_INVALID_ARGUMENT
Si la contraseña encriptada es demasiado corta o demasiado 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
)

Para encriptar una contraseña, usa el esquema de encriptación de contraseñas 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 contraseña de acceso solicitado.
[in] nonce
Un valor único asignado a la contraseña encriptada.
[in] passcode
Un puntero a la contraseña que se encriptará.
[in] passcodeLen
La longitud del código.
[out] encPasscode
Un puntero al búfer para almacenar una contraseña encriptada.
[in] encPasscodeBufSize
El tamaño del búfer para el almacenamiento encriptado con contraseñas.
[out] encPasscodeLen
La longitud de la contraseña encriptada.
[in] groupKeyStore
Un puntero al objeto del almacén de claves del grupo.
Valores de retorno
WEAVE_NO_ERROR
Si tiene éxito.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si no se admite la configuración especificada de la contraseña.
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 demasiado larga. O bien si no se proporciona un puntero al almacén de claves de 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 de la tienda 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
)

Para encriptar una contraseña, usa el esquema de encriptación de contraseñas 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 contraseña de acceso solicitado.
[in] nonce
Un valor único asignado a la contraseña.
[in] passcode
Un puntero a la contraseña que se encriptará.
[in] passcodeLen
La longitud del código.
[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 llave que se usará para autenticar el código. 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 huella digital 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 mínimo de kPasscodeMaxEncryptedLen.
[in] encPasscodeBufSize
El tamaño del búfer al que hace referencia encPasscode.
[out] encPasscodeLen
La longitud de la contraseña encriptada.
Valores de retorno
WEAVE_NO_ERROR
Si tiene éxito.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si no se admite la configuración especificada de la contraseña.
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 demasiado 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 el puntero a un búfer que contiene la contraseña encriptada.
[in] encPasscodeLen
Longitud de la contraseña encriptada.
[out] config
La 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 el 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 huella digitalBuf.
[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 el 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
)

Obtiene el valor del nonce asociado con una contraseña encriptada.

Detalles
Parámetros
[in] encPasscode
Es el 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 el valor true si la configuración de encriptación de contraseña proporcionada es compatible con las APIs de encriptación/desencriptación de contraseñas.