nl :: Tejido:: Perfiles: Seguridad:: Contraseñas
Este espacio de nombres incluye todas las interfaces dentro de Weave para la biblioteca de códigos de acceso de Weave dentro del perfil de seguridad de Weave.
Resumen
Enumeraciones |
---|
@278 { kPasscode_Config1_TEST_ONLY = 0x01, kPasscode_Config2 = 0x02, kPasscodeConfig1_KeyId = WeaveKeyId::kNone } | enumeración Teje los tipos de configuración de cifrado de código de acceso. |
@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) } | enumeración Tejido tamaños de parámetros de protocolo de cifrado de código de acceso. |
Variables |
---|
kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[] | const uint8_t Diversificador de claves utilizado para la derivación de claves de cifrado de códigos de acceso de Weave. |
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[] | const uint8_t Diversificador de claves utilizado para la derivación de claves de cifrado de códigos de acceso de Weave. |
Funciones |
---|
DecryptPasscode (const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore) | Descifre un código de acceso que se cifró con el esquema de cifrado de código de acceso 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) | Descifre un código de acceso que se cifró con el esquema de cifrado de código de acceso 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) | Cifre un código de acceso con el esquema de cifrado de código de acceso 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) | Cifre un código de acceso con el esquema de cifrado de código de acceso de Nest. |
GetEncryptedPasscodeConfig (const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config) | Obtenga el tipo de configuración de un código de acceso cifrado. |
GetEncryptedPasscodeFingerprint (const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen) | Obtenga el valor de la huella digital asociado con un código de acceso cifrado. |
GetEncryptedPasscodeKeyId (const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId) | Obtenga la identificación de la clave utilizada para cifrar un código de acceso cifrado. |
GetEncryptedPasscodeNonce (const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce) | Obtenga el valor nonce asociado con un código de acceso cifrado. |
IsSupportedPasscodeEncryptionConfig (uint8_t config) | bool Devuelve verdadero si la configuración de cifrado de código de acceso proporcionada es compatible con las API de cifrado / descifrado de código de acceso. |
Enumeraciones
@ 278
@278
Tejer tipos de configuración de cifrado de código de acceso.
Propiedades |
---|
kPasscodeConfig1_KeyId | Identificación de clave ficticia utilizada para la configuración del código de acceso de prueba # 1. |
kPasscode_Config1_TEST_ONLY | La configuración de cifrado de código de acceso n. ° 1 no utiliza cifrado ni claves secretas para autenticarse y el código de acceso de huellas dactilares. Esta configuración DEBE usarse solo con fines de PRUEBA. |
kPasscode_Config2 | La configuración de cifrado de contraseña n. ° 2 utiliza cifrado AES-128-ECB con integridad HMAC-SHA-1 de 8 bytes y huella digital HMAC-SHA-1 de 8 bytes. |
@ 279
@279
Tejido tamaños de parámetros de protocolo de cifrado de código de acceso.
Propiedades |
---|
kPasscodeAuthenticationKeyLen | Longitud de la clave de autenticación de código de acceso (SHA-1). |
kPasscodeAuthenticatorLen | Longitud del autenticador del código de acceso. |
kPasscodeEncKeyDiversifierSize | Tamaño del diversificador de claves de la aplicación de cifrado de código de acceso. |
kPasscodeEncryptionKeyLen | Longitud de la clave de cifrado de código de acceso (AES-128). |
kPasscodeFingerprintKeyDiversifierSize | Tamaño del diversificador de clave de huella digital de código de acceso. |
kPasscodeFingerprintKeyLen | Longitud de la clave de la huella digital del código de acceso (SHA-1). |
kPasscodeFingerprintLen | Longitud de la huella digital del código de acceso. |
kPasscodeMaxEncryptedLen | Longitud máxima del código de acceso cifrado. |
kPasscodeMaxLen | Longitud máxima del código de acceso sin cifrar. |
kPasscodePaddedLen | Longitud del código de acceso (acolchado hasta la longitud del bloque AES-128). |
kPasscodeTotalDerivedKeyLen | Longitud total de la clave (cifrado e integridad) del código de acceso. |
Variables
kPasscodeEncKeyDiversifier
const uint8_t kPasscodeEncKeyDiversifier[] = { 0x1A, 0x65, 0x5D, 0x96 }
Diversificador de claves utilizado para la derivación de claves de cifrado de códigos de acceso de Weave.
Este valor representa los primeros 4 bytes del SHA-1 HASH de la frase "Nest Passcode EK y AK".
kPasscodeFingerprintKeyDiversifier
const uint8_t kPasscodeFingerprintKeyDiversifier[] = { 0xD1, 0xA1, 0xD9, 0x6C }
Diversificador de claves utilizado para la derivación de claves de cifrado de códigos de acceso de Weave.
Este valor representa los primeros 4 bytes del SHA-1 HASH de la frase "Nest Passcode EK y AK".
Funciones
Descifrar contraseña
WEAVE_ERROR DecryptPasscode(
const uint8_t *encPasscode,
size_t encPasscodeLen,
uint8_t *passcodeBuf,
size_t passcodeBufSize,
size_t & passcodeLen,
GroupKeyStoreBase *groupKeyStore
)
Descifre un código de acceso que se cifró con el esquema de cifrado de código de acceso de Nest.
Detalles | Parámetros | [in] encPasscode | Un puntero al búfer del código de acceso cifrado. | [in] encPasscodeLen | La longitud del código de acceso cifrado. | [in] passcodeBuf | Un puntero a un búfer para recibir el código de acceso descifrado. | [in] passcodeBufSize | El tamaño del búfer al que apunta passcodeBuf. | [out] passcodeLen | Establezca la longitud del código de acceso descifrado. | [in] groupKeyStore | Un puntero al objeto de almacenamiento de claves de grupo. |
|
Valores devueltos | WEAVE_NO_ERROR | Sobre el éxito. | WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG | Si no se admite la configuración de contraseña especificada. | WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED | Si falla la autenticación del código de acceso. | WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED | Si falla la verificación de huellas dactilares del código de acceso. | 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 código de acceso suministrado es demasiado pequeño. | WEAVE_ERROR_INVALID_ARGUMENT | Si el código de acceso encriptado es demasiado corto o demasiado largo; O si no se proporciona el puntero al almacén de claves de grupo o el almacén de claves de la plataforma devuelve parámetros de clave no válidos. | other | Otros errores específicos de la plataforma devueltos por las API del almacén de claves de la plataforma. |
|
Descifrar contraseña
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
)
Descifre un código de acceso que se cifró con el esquema de cifrado de código de acceso de Nest.
Detalles | Parámetros | [in] encPasscode | Un puntero al búfer del código de acceso cifrado. | [in] encPasscodeLen | La longitud del código de acceso cifrado. | [in] encKey | Un puntero a la clave que se utilizará para cifrar el código de acceso. La longitud de la clave debe coincidir con el algoritmo de cifrado asociado con la configuración especificada. | [in] authKey | Un puntero a la clave que se utilizará para autenticar el código de acceso. 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 utilizará para generar la huella digital del código de acceso. La longitud de la clave debe coincidir con el algoritmo de huellas dactilares asociado con la configuración especificada. | [in] passcodeBuf | Un puntero a un búfer para recibir el código de acceso descifrado. | [in] passcodeBufSize | El tamaño del búfer al que apunta passcodeBuf. | [out] passcodeLen | Establezca la longitud del código de acceso descifrado. |
|
Valores devueltos | WEAVE_NO_ERROR | Sobre el éxito. | WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG | Si no se admite la configuración de contraseña especificada. | WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED | Si falla la autenticación del código de acceso. | WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED | Si falla la verificación de huellas dactilares del código de acceso. | WEAVE_ERROR_BUFFER_TOO_SMALL | Si el búfer de código de acceso suministrado es demasiado pequeño. | WEAVE_ERROR_INVALID_ARGUMENT | Si el código de acceso encriptado es demasiado corto o demasiado largo. |
|
Cifrar 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
)
Cifre un código de acceso con el esquema de cifrado de código de acceso de Nest.
Detalles | Parámetros | [in] config | La configuración de cifrado del código de acceso que se utilizará. | [in] keyId | El ID de clave de cifrado del código de acceso solicitado. | [in] nonce | Un valor único asignado al código de acceso cifrado. | [in] passcode | Un puntero al código de acceso que se va a cifrar. | [in] passcodeLen | La longitud del código de acceso. | [out] encPasscode | Un puntero al búfer para almacenar el código de acceso cifrado. | [in] encPasscodeBufSize | El tamaño del búfer para el almacenamiento de códigos de acceso cifrados. | [out] encPasscodeLen | La longitud del código de acceso cifrado. | [in] groupKeyStore | Un puntero al objeto de almacenamiento de claves de grupo. |
|
Valores devueltos | WEAVE_NO_ERROR | Sobre el éxito. | WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG | Si no se admite la configuración de contraseña especificada. | WEAVE_ERROR_BUFFER_TOO_SMALL | Si el búfer de salida proporcionado es demasiado pequeño para el código de acceso cifrado. | WEAVE_ERROR_INVALID_KEY_ID | Si la clave solicitada tiene un ID de clave no válido. | WEAVE_ERROR_INVALID_ARGUMENT | Si el código de acceso proporcionado es demasiado corto o demasiado largo; O si no se proporciona el puntero al almacén de claves de grupo o el almacén de claves de la plataforma devuelve parámetros de clave no válidos. | other | Otros errores específicos de la plataforma devueltos por las API del almacén de claves de la plataforma. |
|
Cifrar 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
)
Cifre un código de acceso con el esquema de cifrado de código de acceso de Nest.
Detalles | Parámetros | [in] config | La configuración de cifrado del código de acceso de Weave que se utilizará. | [in] keyId | El ID de clave de cifrado del código de acceso solicitado. | [in] nonce | Un valor único asignado al código de acceso. | [in] passcode | Un puntero al código de acceso que se va a cifrar. | [in] passcodeLen | La longitud del código de acceso. | [in] encKey | Un puntero a la clave que se utilizará para cifrar el código de acceso. La longitud de la clave debe coincidir con el algoritmo de cifrado asociado con la configuración especificada. | [in] authKey | Un puntero a la clave que se utilizará para autenticar el código de acceso. 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 utilizará para generar la huella digital del código de acceso. La longitud de la clave debe coincidir con el algoritmo de huellas dactilares asociado con la configuración especificada. | [out] encPasscode | Un puntero a un búfer en el que se almacenará el código de acceso cifrado. Este búfer debe tener al menos un tamaño de kPasscodeMaxEncryptedLen. | [in] encPasscodeBufSize | El tamaño del búfer al que apunta encPasscode. | [out] encPasscodeLen | La longitud del código de acceso cifrado. |
|
Valores devueltos | WEAVE_NO_ERROR | Sobre el éxito. | WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG | Si no se admite la configuración de contraseña especificada. | WEAVE_ERROR_BUFFER_TOO_SMALL | Si el búfer de salida proporcionado es demasiado pequeño para el código de acceso cifrado. | WEAVE_ERROR_INVALID_ARGUMENT | Si el código de acceso proporcionado es demasiado corto o demasiado largo. |
|
GetEncryptedPasscodeConfig
WEAVE_ERROR GetEncryptedPasscodeConfig(
const uint8_t *encPasscode,
size_t encPasscodeLen,
uint8_t & config
)
Obtenga el tipo de configuración de un código de acceso cifrado.
Detalles | Parámetros | [in] encPasscode | Puntero a un búfer que contiene el código de acceso cifrado. | [in] encPasscodeLen | Longitud del código de acceso cifrado. | [out] config | La configuración de cifrado del código de acceso de Weave utilizada por el código de acceso cifrado. |
|
GetEncryptedPasscodeHuella digital
WEAVE_ERROR GetEncryptedPasscodeFingerprint(
const uint8_t *encPasscode,
size_t encPasscodeLen,
uint8_t *fingerprintBuf,
size_t fingerprintBufSize,
size_t & fingerprintLen
)
Obtenga el valor de la huella digital asociado con un código de acceso cifrado.
Detalles | Parámetros | [in] encPasscode | Puntero a un búfer que contiene el código de acceso cifrado. | [in] encPasscodeLen | Longitud del código de acceso cifrado. | [in] fingerprintBuf | Un búfer para recibir el valor de la huella digital. | [in] fingerprintBufSize | El tamaño del búfer al que apunta fingerprintBuf. | [out] fingerprintLen | La longitud del valor de huella dactilar devuelto. |
|
GetEncryptedPasscodeKeyId
WEAVE_ERROR GetEncryptedPasscodeKeyId(
const uint8_t *encPasscode,
size_t encPasscodeLen,
uint32_t & keyId
)
Obtenga la identificación de la clave utilizada para cifrar un código de acceso cifrado.
Detalles | Parámetros | [in] encPasscode | Puntero a un búfer que contiene el código de acceso cifrado. | [in] encPasscodeLen | Longitud del código de acceso cifrado. | [out] keyId | La identificación de la clave utilizada para cifrar el código de acceso cifrado. |
|
GetEncryptedPasscodeNonce
WEAVE_ERROR GetEncryptedPasscodeNonce(
const uint8_t *encPasscode,
size_t encPasscodeLen,
uint32_t & nonce
)
Obtenga el valor nonce asociado con un código de acceso encriptado.
Detalles | Parámetros | [in] encPasscode | Puntero a un búfer que contiene el código de acceso cifrado. | [in] encPasscodeLen | Longitud del código de acceso cifrado. | [out] nonce | El valor nonce asociado con un código de acceso cifrado. |
|
IsSupportedPasscodeEncryptionConfig
bool IsSupportedPasscodeEncryptionConfig(
uint8_t config
)
Devuelve verdadero si la configuración de cifrado de código de acceso proporcionada es compatible con las API de cifrado / descifrado de código de acceso.