nl::Weave::Perfiles::Seguridad:Contraseñas

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

Variables

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

Functions

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 dactilar 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
El resultado es verdadero si las API de encriptación y desencriptación de contraseña admiten la configuración de encriptación de contraseña.

Structs

nl::Weave::Perfiles::Seguridad::Contraseñas::EncryptedPasscodeStruct

Enumeraciones

@278

 @278

Tejimos los tipos de configuración de encriptación de contraseña.

Properties
kPasscodeConfig1_KeyId

Se utiliza el ID de la clave ficticia 1.

kPasscode_Config1_TEST_ONLY

La configuración de encriptación de la contraseña no 1 no usa encriptación ni claves secretas para la autenticación ni el uso de contraseñas de la huella dactilar.

Esta configuración solo se debe usar para realizar PRUEBAs.

kPasscode_Config2

La configuración de encriptación de la contraseña no 2 usa la encriptación AES-128-ECB con integridad HMAC-SHA-1 de 8 bytes y huella digital HMAC-SHA-1 de 8 bytes.

@279

 @279

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

Properties
kPasscodeAuthenticationKeyLen

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

kPasscodeAuthenticatorLen

Longitud del autenticador de la contraseña.

kPasscodeEncKeyDiversifierSize

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

kPasscodeEncryptionKeyLen

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

kPasscodeFingerprintKeyDiversifierSize

Tamaño del diversificador de clave de huella dactilar.

kPasscodeFingerprintKeyLen

Longitud de la clave de la huella digital (SHA-1)

kPasscodeFingerprintLen

Longitud de la huella dactilar de la contraseña.

kPasscodeMaxEncryptedLen

Longitud máxima de las contraseñas encriptadas.

kPasscodeMaxLen

Longitud máxima de las contraseñas no encriptadas

kPasscodePaddedLen

Longitud de la contraseña (acolchada a la longitud 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 }

El diversificador de claves se usa para la derivación de claves de encriptación de contraseñas de Weave.

Este valor representa los primeros 4 bytes de la SHA-1 HASH de la frase de contraseña de Nest EK y AK.

DiversificadordeKkcodecodeFingerprintKeyDiversifier

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

El diversificador de claves se usa para la derivación de claves de encriptación de contraseñas de Weave.

Este valor representa los primeros 4 bytes de la SHA-1 HASH de la frase de contraseña de Nest EK y AK.

Functions

Desencriptar código

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 encriptado.
[in] encPasscodeLen
La longitud de la contraseña encriptada.
[in] passcodeBuf
Un puntero para un búfer a fin de recibir la contraseña desencriptada.
[in] passcodeBufSize
El tamaño del búfer al que apunta PasswordBuf.
[out] passcodeLen
Se establece en la longitud de la contraseña desencriptada.
[in] groupKeyStore
Un puntero para el objeto de almacenamiento de claves de grupo.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación se realiza correctamente
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si no se admite la configuración de contraseña especificada.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Si se produce un error en la autenticación con contraseña
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Si se produce un error en la comprobación de la 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 demasiado larga, o si no se proporciona un puntero al almacén de claves de grupo o 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 API del almacén de claves de la plataforma.

Desencriptar código

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 encriptado.
[in] encPasscodeLen
La longitud de la contraseña encriptada.
[in] encKey
Un puntero para 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 para la clave que se usará a fin de 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 para un búfer a fin de recibir la contraseña desencriptada.
[in] passcodeBufSize
El tamaño del búfer al que apunta PasswordBuf.
[out] passcodeLen
Se establece en la longitud de la contraseña desencriptada.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación se realiza correctamente
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si no se admite la configuración de contraseña especificada.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Si se produce un error en la autenticación con contraseña
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Si se produce un error en la comprobación de la 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 incrustada es demasiado corta o demasiado larga.

Encriptar contraseña

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ña que se utilizará.
[in] keyId
El ID de la clave de encriptación de contraseña solicitada.
[in] nonce
Es 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 la contraseña encriptada.
[in] encPasscodeBufSize
El tamaño del búfer para el almacenamiento encriptado de contraseñas.
[out] encPasscodeLen
La longitud de la contraseña encriptada.
[in] groupKeyStore
Un puntero para el objeto de almacenamiento de claves de grupo.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación se realiza correctamente
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si no se admite la configuración de contraseña especificada.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si se proporcionó un búfer de salida 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 si no se proporciona un puntero al almacén de claves de grupo o 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 API del almacén de claves de la plataforma.

Encriptar contraseña

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ña de Weave que se usará.
[in] keyId
El ID de la clave de encriptación de 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 para 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 para la clave que se usará a fin de 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 para un búfer en el que se almacenará la contraseña encriptada. Este búfer debe tener al menos kPasscodeMaxEncryptedLen.
[in] encPasscodeBufSize
Tamaño del búfer al que apunta encccode.
[out] encPasscodeLen
La longitud de la contraseña encriptada.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación se realiza correctamente
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Si no se admite la configuración de contraseña especificada.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si se proporcionó un búfer de salida 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 un 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ña de Weave que utiliza 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 dactilar 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
Es un búfer que recibe el valor de la huella digital.
[in] fingerprintBufSize
Es el tamaño del búfer al que apunta huellas dactilares.
[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 de nonce asociado con una contraseña encriptada.

IsSupportedPasscodeencryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

El resultado es verdadero si las API de encriptación y desencriptación de contraseña admiten la configuración de encriptación de contraseña.