нл:: Переплетение:: Профили:: Безопасность:: Пароли

Это пространство имен включает в себя все интерфейсы внутри 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-интерфейсами шифрования/дешифрования пароля.

Структуры

nl:: Weave:: Профили:: Безопасность:: Пароли:: EncryptedPasscodeStruct

Перечисления

@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-интерфейсами шифрования/дешифрования пароля.