nl::Weave::Profiles::Security::Passcodes

Esse namespace inclui todas as interfaces do Weave para a biblioteca de senhas do Weave dentro do perfil de segurança do Weave.

Resumo

Enumerações

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum
Criar tipos de configuração de criptografia de senha.
@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
Tamanhos de parâmetros do protocolo de criptografia de senha do Weave.

Variáveis

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Diversificador de chaves usado para derivação de chaves de criptografia de senha do Weave.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Diversificador de chaves usado para derivação de chaves de criptografia de senha do Weave.

Funções

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
Descriptografe uma senha que foi criptografada usando o esquema de criptografia de senha 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)
Descriptografe uma senha que foi criptografada usando o esquema de criptografia de senha 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)
Criptografe uma senha usando o esquema de criptografia de senha 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)
Criptografe uma senha usando o esquema de criptografia de senha Nest.
GetEncryptedPasscodeConfig(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config)
Descubra o tipo de configuração de uma senha criptografada.
GetEncryptedPasscodeFingerprint(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen)
Descubra o valor da impressão digital associado a uma senha criptografada.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
Encontre o ID da chave usada para criptografar uma senha criptografada.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
Confira o valor de uso único associado a uma senha criptografada.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
Retorna verdadeiro se a configuração de criptografia da senha fornecida for compatível com as APIs de criptografia/descriptografia de senha.

Estruturas

nl::Weave::Profiles::Security::Passcodes::EncryptedPasscodeStruct

Enumerações

@278

 @278

Criar tipos de configuração de criptografia de senha.

Propriedades
kPasscodeConfig1_KeyId

ID da chave fictícia usada para a configuração da senha de teste no 1.

kPasscode_Config1_TEST_ONLY

A configuração de criptografia de senha 1 não está usando criptografia e chaves secretas para autenticar e usar a impressão digital.

Esta configuração DEVE ser usada apenas para TESTES.

kPasscode_Config2

A configuração de criptografia de senha 2 usa a criptografia AES-128-ECB com integridade HMAC-SHA-1 de 8 bytes e impressão digital HMAC-SHA-1 de 8 bytes.

@279

 @279

Tamanhos de parâmetros do protocolo de criptografia de senha do Weave.

Propriedades
kPasscodeAuthenticationKeyLen

Comprimento da chave de autenticação por senha (SHA-1).

kPasscodeAuthenticatorLen

Comprimento do autenticador de senha.

kPasscodeEncKeyDiversifierSize

Tamanho do diversificador da chave de aplicativo de criptografia de senha.

kPasscodeEncryptionKeyLen

Comprimento da chave de criptografia de senha (AES-128).

kPasscodeFingerprintKeyDiversifierSize

Tamanho do diversificador da chave de impressão digital da senha.

kPasscodeFingerprintKeyLen

Comprimento da chave da impressão digital de senha (SHA-1).

kPasscodeFingerprintLen

Comprimento da impressão digital da senha.

kPasscodeMaxEncryptedLen

Tamanho máximo da senha criptografada.

kPasscodeMaxLen

Tamanho máximo da senha descriptografada.

kPasscodePaddedLen

Comprimento da senha (preenchido com o comprimento do bloco AES-128).

kPasscodeTotalDerivedKeyLen

Comprimento total da chave (criptografia e integridade) da senha.

Variáveis

kPasscodeEncKeyDiversifier

const uint8_t kPasscodeEncKeyDiversifier[] = { 0x1A, 0x65, 0x5D, 0x96 }

Diversificador de chaves usado para derivação de chaves de criptografia de senha do Weave.

Esse valor representa os primeiros 4 bytes do SHA-1 HASH de "Nest Passcode EK and AK" frase

kPasscodeFingerprintKeyDiversifier

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

Diversificador de chaves usado para derivação de chaves de criptografia de senha do Weave.

Esse valor representa os primeiros 4 bytes do SHA-1 HASH de "Nest Passcode EK and AK" frase

Funções

DecryptPasscode

WEAVE_ERROR DecryptPasscode(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint8_t *passcodeBuf,
  size_t passcodeBufSize,
  size_t & passcodeLen,
  GroupKeyStoreBase *groupKeyStore
)

Descriptografe uma senha que foi criptografada usando o esquema de criptografia de senha Nest.

Detalhes
Parâmetros
[in] encPasscode
Um ponteiro para o buffer da senha criptografada.
[in] encPasscodeLen
O tamanho da senha criptografada.
[in] passcodeBuf
Um ponteiro para um buffer para receber a senha descriptografada.
[in] passcodeBufSize
O tamanho do buffer apontado por codeBuf.
[out] passcodeLen
Defina o tamanho da senha descriptografada.
[in] groupKeyStore
Um ponteiro para o objeto de armazenamento de chaves de grupo.
Valores de retorno
WEAVE_NO_ERROR
Se a operação for bem-sucedida.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Se a configuração de senha especificada não for compatível.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Se a autenticação por senha falhar.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Se a verificação de impressão digital da senha falhar.
WEAVE_ERROR_INVALID_KEY_ID
Se a chave solicitada tiver um ID inválido.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se o buffer de senha fornecido for muito pequeno.
WEAVE_ERROR_INVALID_ARGUMENT
Se a senha criptografada for muito curta ou muito longa, Ou se o ponteiro para o repositório de chaves do grupo não for fornecido ou o repositório de chaves da plataforma retornar parâmetros de chave inválidos.
other
Outros erros específicos da plataforma retornados pelas APIs de armazenamento de chaves da plataforma.

DecryptPasscode

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
)

Descriptografe uma senha que foi criptografada usando o esquema de criptografia de senha Nest.

Detalhes
Parâmetros
[in] encPasscode
Um ponteiro para o buffer da senha criptografada.
[in] encPasscodeLen
O tamanho da senha criptografada.
[in] encKey
Um ponteiro para a chave a ser usada para criptografar a senha. O comprimento da chave precisa corresponder ao algoritmo de criptografia associado à configuração especificada.
[in] authKey
Um ponteiro para a chave a ser usada para autenticar a senha. O comprimento da chave precisa corresponder ao algoritmo de autenticação associado à configuração especificada.
[in] fingerprintKey
Um ponteiro para a chave a ser usado para gerar a impressão digital da senha. O comprimento da chave precisa corresponder ao algoritmo de impressão digital associado à configuração especificada.
[in] passcodeBuf
Um ponteiro para um buffer para receber a senha descriptografada.
[in] passcodeBufSize
O tamanho do buffer apontado por codeBuf.
[out] passcodeLen
Defina o tamanho da senha descriptografada.
Valores de retorno
WEAVE_NO_ERROR
Se a operação for bem-sucedida.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Se a configuração de senha especificada não for compatível.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Se a autenticação por senha falhar.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Se a verificação de impressão digital da senha falhar.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se o buffer de senha fornecido for muito pequeno.
WEAVE_ERROR_INVALID_ARGUMENT
Se a senha criptografada for muito curta ou muito longa.

EncryptPasscode

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
)

Criptografe uma senha usando o esquema de criptografia de senha Nest.

Detalhes
Parâmetros
[in] config
A configuração de criptografia da senha a ser usada.
[in] keyId
O ID da chave de criptografia da senha solicitada.
[in] nonce
Um valor exclusivo atribuído à senha criptografada.
[in] passcode
Um ponteiro para a senha a ser criptografada.
[in] passcodeLen
O tamanho da senha.
[out] encPasscode
Um ponteiro para o buffer para armazenar a senha criptografada.
[in] encPasscodeBufSize
O tamanho do buffer para armazenamento de senha criptografada.
[out] encPasscodeLen
O tamanho da senha criptografada.
[in] groupKeyStore
Um ponteiro para o objeto de armazenamento de chaves de grupo.
Valores de retorno
WEAVE_NO_ERROR
Se a operação for bem-sucedida.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Se a configuração de senha especificada não for compatível.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se o buffer de saída fornecido for muito pequeno para a senha criptografada.
WEAVE_ERROR_INVALID_KEY_ID
Se a chave solicitada tiver um ID inválido.
WEAVE_ERROR_INVALID_ARGUMENT
Se a senha fornecida for muito curta ou muito longa; Ou se o ponteiro para o repositório de chaves do grupo não for fornecido ou o repositório de chaves da plataforma retornar parâmetros de chave inválidos.
other
Outros erros específicos da plataforma retornados pelas APIs de armazenamento de chaves da plataforma.

EncryptPasscode

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
)

Criptografe uma senha usando o esquema de criptografia de senha Nest.

Detalhes
Parâmetros
[in] config
A configuração de criptografia de senha do Weave a ser usada.
[in] keyId
O ID da chave de criptografia da senha solicitada.
[in] nonce
Um valor exclusivo atribuído à senha.
[in] passcode
Um ponteiro para a senha a ser criptografada.
[in] passcodeLen
O tamanho da senha.
[in] encKey
Um ponteiro para a chave a ser usada para criptografar a senha. O comprimento da chave precisa corresponder ao algoritmo de criptografia associado à configuração especificada.
[in] authKey
Um ponteiro para a chave a ser usada para autenticar a senha. O comprimento da chave precisa corresponder ao algoritmo de autenticação associado à configuração especificada.
[in] fingerprintKey
Um ponteiro para a chave a ser usado para gerar a impressão digital da senha. O comprimento da chave precisa corresponder ao algoritmo de impressão digital associado à configuração especificada.
[out] encPasscode
Um ponteiro para um buffer em que a senha criptografada será armazenada. O tamanho desse buffer precisa ser de pelo menos kPasscodeMaxEncryptedLen.
[in] encPasscodeBufSize
O tamanho do buffer para o qual encPasscode aponta.
[out] encPasscodeLen
O tamanho da senha criptografada.
Valores de retorno
WEAVE_NO_ERROR
Se a operação for bem-sucedida.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Se a configuração de senha especificada não for compatível.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se o buffer de saída fornecido for muito pequeno para a senha criptografada.
WEAVE_ERROR_INVALID_ARGUMENT
Se a senha fornecida for muito curta ou muito longa.

GetEncryptedPasscodeConfig

WEAVE_ERROR GetEncryptedPasscodeConfig(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint8_t & config
)

Descubra o tipo de configuração de uma senha criptografada.

Detalhes
Parâmetros
[in] encPasscode
Ponteiro para um buffer que contém a senha criptografada.
[in] encPasscodeLen
Tamanho da senha criptografada.
[out] config
A configuração de criptografia da senha do Weave usada pela senha criptografada.

GetEncryptedPasscodeFingerprint

WEAVE_ERROR GetEncryptedPasscodeFingerprint(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint8_t *fingerprintBuf,
  size_t fingerprintBufSize,
  size_t & fingerprintLen
)

Descubra o valor da impressão digital associado a uma senha criptografada.

Detalhes
Parâmetros
[in] encPasscode
Ponteiro para um buffer que contém a senha criptografada.
[in] encPasscodeLen
Tamanho da senha criptografada.
[in] fingerprintBuf
Um buffer para receber o valor da impressão digital.
[in] fingerprintBufSize
O tamanho do buffer apontado por printBuf.
[out] fingerprintLen
O comprimento do valor de impressão digital retornado.

GetEncryptedPasscodeKeyId

WEAVE_ERROR GetEncryptedPasscodeKeyId(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint32_t & keyId
)

Encontre o ID da chave usada para criptografar uma senha criptografada.

Detalhes
Parâmetros
[in] encPasscode
Ponteiro para um buffer que contém a senha criptografada.
[in] encPasscodeLen
Tamanho da senha criptografada.
[out] keyId
O ID da chave usada para criptografar a senha criptografada.

GetEncryptedPasscodeNonce

WEAVE_ERROR GetEncryptedPasscodeNonce(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint32_t & nonce
)

Confira o valor de uso único associado a uma senha criptografada.

Detalhes
Parâmetros
[in] encPasscode
Ponteiro para um buffer que contém a senha criptografada.
[in] encPasscodeLen
Tamanho da senha criptografada.
[out] nonce
O valor de uso único associado a uma senha criptografada.

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

Retorna verdadeiro se a configuração de criptografia da senha fornecida for compatível com as APIs de criptografia/descriptografia de senha.