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 Tejer 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 dactilar 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 encriptado. |
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 de contraseña 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 autenticar el código de acceso de huellas digitales. Esta configuración DEBE usarse solo con fines de PRUEBA. |
kPasscode_Config2 | La configuración de cifrado de código de acceso # 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 contraseña (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 de la contraseña cifrada. |
kPasscodeMaxLen | Longitud máxima del código de acceso sin cifrar. |
kPasscodePaddedLen | Longitud de la contraseña (rellenada 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 la verificación de la huella digital del código de acceso falla. | 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 proporcionado es demasiado pequeño. | WEAVE_ERROR_INVALID_ARGUMENT | Si el código de acceso cifrado 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 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 digitales 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 la verificación de huellas dactilares del código de acceso falla. | WEAVE_ERROR_BUFFER_TOO_SMALL | Si el búfer de código de acceso proporcionado es demasiado pequeño. | WEAVE_ERROR_INVALID_ARGUMENT | Si el código de acceso cifrado 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 a la contraseña cifrada. | [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 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 digitales 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 la contraseña proporcionada es demasiado corta o demasiado larga. |
|
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 de 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 dactilar 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 la huella dactilar devuelta. |
|
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.