нл:: Переплетение:: Профили:: Безопасность:: Пароли
Это пространство имен включает в себя все интерфейсы внутри Weave для библиотеки паролей Weave в профиле безопасности Weave.
Краткое содержание
Перечисления |
---|
@278 { kPasscode_Config1_TEST_ONLY = 0x01, kPasscode_Config2 = 0x02, kPasscodeConfig1_KeyId = WeaveKeyId::kNone } | перечисление Типы конфигурации шифрования паролей 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) } | перечисление Размеры параметров протокола шифрования паролей Weave. |
Переменные |
---|
kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[] | const uint8_t Диверсификатор ключей, используемый для получения ключа шифрования пароля Weave. |
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[] | const uint8_t Диверсификатор ключей, используемый для получения ключа шифрования пароля Weave. |
Функции |
---|
DecryptPasscode (const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore) | Расшифруйте пароль, зашифрованный с помощью схемы шифрования пароля 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) | Расшифруйте пароль, зашифрованный с помощью схемы шифрования пароля 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) | Зашифруйте пароль, используя схему шифрования пароля 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) | Зашифруйте пароль, используя схему шифрования пароля Nest. |
GetEncryptedPasscodeConfig (const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config) | Получите тип конфигурации зашифрованного пароля. |
GetEncryptedPasscodeFingerprint (const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen) | Получите значение отпечатка пальца, связанное с зашифрованным паролем. |
GetEncryptedPasscodeKeyId (const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId) | Получите идентификатор ключа, используемого для шифрования зашифрованного пароля. |
GetEncryptedPasscodeNonce (const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce) | Получите значение nonce, связанное с зашифрованным паролем. |
IsSupportedPasscodeEncryptionConfig (uint8_t config) | bool Возвращает значение true, если предоставленная конфигурация шифрования пароля поддерживается API-интерфейсами шифрования/дешифрования пароля. |
Перечисления
@278
@278
Типы конфигурации шифрования паролей Weave.
Характеристики |
---|
kPasscodeConfig1_KeyId | Идентификатор фиктивного ключа, используемый для конфигурации тестового пароля №1. |
kPasscode_Config1_TEST_ONLY | Конфигурация шифрования пароля №1 не использует шифрование и секретные ключи для аутентификации и пароль по отпечатку пальца. Эту конфигурацию СЛЕДУЕТ использовать только в целях ТЕСТИРОВАНИЯ. |
kPasscode_Config2 | Конфигурация шифрования пароля №2 использует шифрование AES-128-ECB с 8-байтовой целостностью HMAC-SHA-1 и 8-байтовым отпечатком HMAC-SHA-1. |
@279
@279
Размеры параметров протокола шифрования паролей Weave.
Характеристики |
---|
kPasscodeAuthenticationKeyLen | Длина ключа аутентификации по паролю (SHA-1). |
kPasscodeAuthenticatorLen | Длина аутентификатора пароля. |
kPasscodeEncKeyDiversifierSize | Размер диверсификатора ключа приложения шифрования пароля. |
kPasscodeEncryptionKeyLen | Длина ключа шифрования пароля (AES-128). |
kPasscodeFingerprintKeyDiversifierSize | Размер диверсификатора ключа отпечатка пальца для пароля. |
kPasscodeFingerprintKeyLen | Длина ключа отпечатка пароля (SHA-1). |
kPasscodeFingerprintLen | Длина отпечатка пальца пароля. |
kPasscodeMaxEncryptedLen | Максимальная длина зашифрованного пароля. |
kPasscodeMaxLen | Максимальная длина незашифрованного пароля. |
kPasscodePaddedLen | Длина пароля (дополняется до длины блока AES-128). |
kPasscodeTotalDerivedKeyLen | Общая длина ключа пароля (шифрование и целостность). |
Переменные
kPasscodeEncKeyDiversifier
const uint8_t kPasscodeEncKeyDiversifier[] = { 0x1A, 0x65, 0x5D, 0x96 }
Диверсификатор ключей, используемый для получения ключа шифрования пароля Weave.
Это значение представляет собой первые 4 байта HASH SHA-1 фразы «Nest Passcode EK and AK».
kPasscodeFingerprintKeyDiversifier
const uint8_t kPasscodeFingerprintKeyDiversifier[] = { 0xD1, 0xA1, 0xD9, 0x6C }
Диверсификатор ключей, используемый для получения ключа шифрования пароля Weave.
Это значение представляет собой первые 4 байта HASH SHA-1 фразы «Nest Passcode EK and AK».
Функции
Расшифроватьпароль
WEAVE_ERROR DecryptPasscode(
const uint8_t *encPasscode,
size_t encPasscodeLen,
uint8_t *passcodeBuf,
size_t passcodeBufSize,
size_t & passcodeLen,
GroupKeyStoreBase *groupKeyStore
)
Расшифруйте пароль, зашифрованный с помощью схемы шифрования пароля Nest.
Подробности | Параметры | [in] encPasscode | Указатель на зашифрованный буфер пароля. | [in] encPasscodeLen | Длина зашифрованного пароля. | [in] passcodeBuf | Указатель на буфер для получения расшифрованного пароля. | [in] passcodeBufSize | Размер буфера, на который указывает passcodeBuf. | [out] passcodeLen | Установите длину расшифрованного пароля. | [in] groupKeyStore | Указатель на объект хранилища групповых ключей. |
|
Возвращаемые значения | WEAVE_NO_ERROR | Об успехе. | WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG | Если указанная конфигурация пароля не поддерживается. | WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED | Если аутентификация по паролю не удалась. | WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED | Если проверка отпечатка пальца с паролем не удалась. | WEAVE_ERROR_INVALID_KEY_ID | Если запрошенный ключ имеет неверный идентификатор ключа. | WEAVE_ERROR_BUFFER_TOO_SMALL | Если предоставленный буфер пароля слишком мал. | WEAVE_ERROR_INVALID_ARGUMENT | Если зашифрованный пароль слишком короткий или слишком длинный; Или если указатель на хранилище групповых ключей не предоставлен или хранилище ключей платформы возвращает неверные параметры ключа. | other | Другие ошибки, специфичные для платформы, возвращаемые API хранилища ключей платформы. |
|
Расшифроватьпароль
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
)
Расшифруйте пароль, зашифрованный с помощью схемы шифрования пароля Nest.
Подробности | Параметры | [in] encPasscode | Указатель на зашифрованный буфер пароля. | [in] encPasscodeLen | Длина зашифрованного пароля. | [in] encKey | Указатель на ключ, который будет использоваться для шифрования пароля. Длина ключа должна соответствовать алгоритму шифрования, связанному с указанной конфигурацией. | [in] authKey | Указатель на ключ, который будет использоваться для аутентификации пароля. Длина ключа должна соответствовать алгоритму аутентификации, связанному с указанной конфигурацией. | [in] fingerprintKey | Указатель на ключ, который будет использоваться для создания отпечатка пароля. Длина ключа должна соответствовать алгоритму отпечатка пальца, связанному с указанной конфигурацией. | [in] passcodeBuf | Указатель на буфер для получения расшифрованного пароля. | [in] passcodeBufSize | Размер буфера, на который указывает passcodeBuf. | [out] passcodeLen | Установите длину расшифрованного пароля. |
|
Возвращаемые значения | WEAVE_NO_ERROR | Об успехе. | WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG | Если указанная конфигурация пароля не поддерживается. | WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED | Если аутентификация по паролю не удалась. | WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED | Если проверка отпечатка пальца с паролем не удалась. | WEAVE_ERROR_BUFFER_TOO_SMALL | Если предоставленный буфер пароля слишком мал. | WEAVE_ERROR_INVALID_ARGUMENT | Если зашифрованный пароль слишком короткий или слишком длинный. |
|
Шифроватьпароль
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
)
Зашифруйте пароль, используя схему шифрования пароля Nest.
Подробности | Параметры | [in] config | Используемая конфигурация шифрования пароля. | [in] keyId | Идентификатор запрошенного ключа шифрования пароля. | [in] nonce | Уникальное значение, присвоенное зашифрованному паролю. | [in] passcode | Указатель на код доступа, который необходимо зашифровать. | [in] passcodeLen | Длина пароля. | [out] encPasscode | Указатель на буфер для хранения зашифрованного пароля. | [in] encPasscodeBufSize | Размер буфера для хранения зашифрованного пароля. | [out] encPasscodeLen | Длина зашифрованного пароля. | [in] groupKeyStore | Указатель на объект хранилища групповых ключей. |
|
Возвращаемые значения | WEAVE_NO_ERROR | Об успехе. | WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG | Если указанная конфигурация пароля не поддерживается. | WEAVE_ERROR_BUFFER_TOO_SMALL | Если предоставленный выходной буфер слишком мал для зашифрованного пароля. | WEAVE_ERROR_INVALID_KEY_ID | Если запрошенный ключ имеет неверный идентификатор ключа. | WEAVE_ERROR_INVALID_ARGUMENT | Если предоставленный пароль слишком короткий или слишком длинный; Или если указатель на хранилище групповых ключей не предоставлен или хранилище ключей платформы возвращает неверные параметры ключа. | other | Другие ошибки, специфичные для платформы, возвращаемые API хранилища ключей платформы. |
|
Шифроватьпароль
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
)
Зашифруйте пароль, используя схему шифрования пароля Nest.
Подробности | Параметры | [in] config | Используемая конфигурация шифрования пароля Weave. | [in] keyId | Идентификатор запрошенного ключа шифрования пароля. | [in] nonce | Уникальное значение, присвоенное паролю. | [in] passcode | Указатель на код доступа, который необходимо зашифровать. | [in] passcodeLen | Длина пароля. | [in] encKey | Указатель на ключ, который будет использоваться для шифрования пароля. Длина ключа должна соответствовать алгоритму шифрования, связанному с указанной конфигурацией. | [in] authKey | Указатель на ключ, который будет использоваться для аутентификации пароля. Длина ключа должна соответствовать алгоритму аутентификации, связанному с указанной конфигурацией. | [in] fingerprintKey | Указатель на ключ, который будет использоваться для создания отпечатка пароля. Длина ключа должна соответствовать алгоритму отпечатка пальца, связанному с указанной конфигурацией. | [out] encPasscode | Указатель на буфер, в котором будет храниться зашифрованный пароль. Размер этого буфера должен быть не менее kPasscodeMaxEncryptedLen. | [in] encPasscodeBufSize | Размер буфера, на который указывает encPasscode. | [out] encPasscodeLen | Длина зашифрованного пароля. |
|
Возвращаемые значения | WEAVE_NO_ERROR | Об успехе. | WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG | Если указанная конфигурация пароля не поддерживается. | WEAVE_ERROR_BUFFER_TOO_SMALL | Если предоставленный выходной буфер слишком мал для зашифрованного пароля. | WEAVE_ERROR_INVALID_ARGUMENT | Если предоставленный пароль слишком короткий или слишком длинный. |
|
GetEncryptedPasscodeConfig
WEAVE_ERROR GetEncryptedPasscodeConfig(
const uint8_t *encPasscode,
size_t encPasscodeLen,
uint8_t & config
)
Получите тип конфигурации зашифрованного пароля.
Подробности | Параметры | [in] encPasscode | Указатель на буфер, содержащий зашифрованный пароль. | [in] encPasscodeLen | Длина зашифрованного пароля. | [out] config | Конфигурация шифрования кода доступа Weave, используемая зашифрованным кодом доступа. |
|
GetEncryptedPasscodeFingerprint
WEAVE_ERROR GetEncryptedPasscodeFingerprint(
const uint8_t *encPasscode,
size_t encPasscodeLen,
uint8_t *fingerprintBuf,
size_t fingerprintBufSize,
size_t & fingerprintLen
)
Получите значение отпечатка пальца, связанное с зашифрованным паролем.
Подробности | Параметры | [in] encPasscode | Указатель на буфер, содержащий зашифрованный пароль. | [in] encPasscodeLen | Длина зашифрованного пароля. | [in] fingerprintBuf | Буфер для получения значения отпечатка пальца. | [in] fingerprintBufSize | Размер буфера, на который указывает отпечаток пальца. | [out] fingerprintLen | Длина возвращаемого значения отпечатка пальца. |
|
GetEncryptedPasscodeKeyId
WEAVE_ERROR GetEncryptedPasscodeKeyId(
const uint8_t *encPasscode,
size_t encPasscodeLen,
uint32_t & keyId
)
Получите идентификатор ключа, используемого для шифрования зашифрованного пароля.
Подробности | Параметры | [in] encPasscode | Указатель на буфер, содержащий зашифрованный пароль. | [in] encPasscodeLen | Длина зашифрованного пароля. | [out] keyId | Идентификатор ключа, используемого для шифрования зашифрованного пароля. |
|
GetEncryptedPasscodeNonce
WEAVE_ERROR GetEncryptedPasscodeNonce(
const uint8_t *encPasscode,
size_t encPasscodeLen,
uint32_t & nonce
)
Получите значение nonce, связанное с зашифрованным паролем.
Подробности | Параметры | [in] encPasscode | Указатель на буфер, содержащий зашифрованный пароль. | [in] encPasscodeLen | Длина зашифрованного пароля. | [out] nonce | Значение nonce, связанное с зашифрованным паролем. |
|
IsSupportedPasscodeEncryptionConfig
bool IsSupportedPasscodeEncryptionConfig(
uint8_t config
)
Возвращает значение true, если предоставленная конфигурация шифрования пароля поддерживается API-интерфейсами шифрования/дешифрования пароля.