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

Ta przestrzeń nazw obejmuje wszystkie interfejsy weave biblioteki haseł do Weave w profilu zabezpieczeń Weave.

Podsumowanie

Wyliczenia

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum | typ wyliczeniowy
Typy konfiguracji szyfrowania haseł 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)
}
enum | typ wyliczeniowy
Rozmiary parametrów protokołu szyfrowania haseł Weave.

Zmienne

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Dywersyfikator kluczy używany do tworzenia kluczy szyfrowania haseł Weave.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Dywersyfikator kluczy używany do tworzenia kluczy szyfrowania haseł Weave.

Funkcje

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
Odszyfruj kod dostępu zaszyfrowany za pomocą schematu szyfrowania hasła 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)
Odszyfruj kod dostępu zaszyfrowany za pomocą schematu szyfrowania hasła 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)
Zaszyfruj kod dostępu, korzystając ze schematu szyfrowania hasła 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)
Zaszyfruj kod dostępu, korzystając ze schematu szyfrowania hasła Nest.
GetEncryptedPasscodeConfig(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config)
Uzyskaj typ konfiguracji zaszyfrowanego kodu dostępu.
GetEncryptedPasscodeFingerprint(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen)
Pobierz wartość odcisku palca powiązaną z zaszyfrowanym kodem dostępu.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
Uzyskaj identyfikator klucza użytego do zaszyfrowania zaszyfrowanego hasła.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
Pobierz wartość jednorazową powiązaną z zaszyfrowanym kodem dostępu.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
Zwraca wartość „true” (prawda), jeśli podana konfiguracja szyfrowania kodu dostępu jest obsługiwana przez interfejsy API do szyfrowania/odszyfrowywania haseł.

Konstrukcja

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

Wyliczenia

@278

 @278

Typy konfiguracji szyfrowania haseł Weave.

Właściwości
kPasscodeConfig1_KeyId

Zastępczy identyfikator klucza używany w testowej konfiguracji kodu dostępu nr 1.

kPasscode_Config1_TEST_ONLY

Konfiguracja szyfrowania kodu dostępu nr 1 nie wykorzystuje szyfrowania i tajnych kluczy do uwierzytelniania i kodu dostępu odciskiem palca.

Tej konfiguracji POWINNO używać tylko do TESTÓW.

kPasscode_Config2

W konfiguracji nr 2 szyfrowania hasła jest używane szyfrowanie AES-128-ECB o 8-bajtowej integralności HMAC-SHA-1 i 8-bajtowym odcisku cyfrowym HMAC-SHA-1.

@279

 @279

Rozmiary parametrów protokołu szyfrowania haseł Weave.

Właściwości
kPasscodeAuthenticationKeyLen

Długość klucza uwierzytelniania za pomocą kodu SHA-1.

kPasscodeAuthenticatorLen

Długość kodu uwierzytelniającego.

kPasscodeEncKeyDiversifierSize

Rozmiar dywersyfikatora kluczy aplikacji szyfrowania hasłem.

kPasscodeEncryptionKeyLen

Długość klucza szyfrowania hasłem (AES-128).

kPasscodeFingerprintKeyDiversifierSize

Rozmiar dywersyfikatora klucza dostępu kodu dostępu.

kPasscodeFingerprintKeyLen

Długość klucza kodu dostępu (SHA-1).

kPasscodeFingerprintLen

Długość odcisku palca.

kPasscodeMaxEncryptedLen

Maksymalna długość zaszyfrowanego kodu dostępu.

kPasscodeMaxLen

Maksymalna długość niezaszyfrowanego hasła.

kPasscodePaddedLen

Długość kodu dostępu (dopełniona do długości bloku AES-128).

kPasscodeTotalDerivedKeyLen

Łączna długość klucza (szyfrowania i integralności).

Zmienne

kPasscodeEncKeyDiversifier

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

Dywersyfikator kluczy używany do tworzenia kluczy szyfrowania haseł Weave.

Ta wartość reprezentuje pierwsze 4 bajty hasła SHA-1 hasła „Nest Passcode EK and AK”.

kPasscodeFingerprintKeyDiversifier

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

Dywersyfikator kluczy używany do tworzenia kluczy szyfrowania haseł Weave.

Ta wartość reprezentuje pierwsze 4 bajty hasła SHA-1 hasła „Nest Passcode EK and AK”.

Funkcje

DecryptPasscode

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

Odszyfruj kod dostępu zaszyfrowany za pomocą schematu szyfrowania hasła Nest.

Szczegóły
Parametry
[in] encPasscode
Wskaźnik do zaszyfrowanego bufora haseł.
[in] encPasscodeLen
Długość zaszyfrowanego kodu dostępu.
[in] passcodeBuf
Wskaźnik do bufora, aby otrzymać odszyfrowany kod dostępu.
[in] passcodeBufSize
Rozmiar bufora wskazywany przez hasło UPCBuf.
[out] passcodeLen
Ustaw długość odszyfrowanego hasła.
[in] groupKeyStore
Wskaźnik do obiektu magazynu kluczy grupy.
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Jeśli określona konfiguracja kodu dostępu nie jest obsługiwana.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Jeśli uwierzytelnianie przy użyciu kodu dostępu się nie powiedzie.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Jeśli sprawdzanie odcisku palca zakończy się niepowodzeniem,
WEAVE_ERROR_INVALID_KEY_ID
Jeśli żądany klucz ma nieprawidłowy identyfikator.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jeśli bufor w dokumencie jest za mały.
WEAVE_ERROR_INVALID_ARGUMENT
Zaszyfrowany kod dostępu jest zbyt krótki lub zbyt długi albo nie podano wskaźnika do magazynu kluczy grupy lub magazyn kluczy platformy zwraca nieprawidłowe parametry kluczy.
other
Inne błędy związane z platformą zwrócone przez interfejsy API magazynu kluczy platformy.

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
)

Odszyfruj kod dostępu zaszyfrowany za pomocą schematu szyfrowania hasła Nest.

Szczegóły
Parametry
[in] encPasscode
Wskaźnik do zaszyfrowanego bufora haseł.
[in] encPasscodeLen
Długość zaszyfrowanego kodu dostępu.
[in] encKey
Wskaźnik klucza, którego chcesz użyć do zaszyfrowania hasła. Długość klucza musi być zgodna z algorytmem szyfrowania powiązanym z określoną konfiguracją.
[in] authKey
Wskaźnik klucza, który ma być używany do uwierzytelnienia kodu dostępu. Długość klucza musi być zgodna z algorytmem uwierzytelniania powiązanym z określoną konfiguracją.
[in] fingerprintKey
Wskaźnik klucza, za pomocą którego zostanie wygenerowany odcisk cyfrowy kodu dostępu. Długość klucza musi być zgodna z algorytmem odcisku palca powiązanym z określoną konfiguracją.
[in] passcodeBuf
Wskaźnik do bufora, aby otrzymać odszyfrowany kod dostępu.
[in] passcodeBufSize
Rozmiar bufora wskazywany przez hasło UPCBuf.
[out] passcodeLen
Ustaw długość odszyfrowanego hasła.
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Jeśli określona konfiguracja kodu dostępu nie jest obsługiwana.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Jeśli uwierzytelnianie przy użyciu kodu dostępu się nie powiedzie.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Jeśli sprawdzanie odcisku palca zakończy się niepowodzeniem,
WEAVE_ERROR_BUFFER_TOO_SMALL
Jeśli bufor w dokumencie jest za mały.
WEAVE_ERROR_INVALID_ARGUMENT
Jeśli zaszyfrowane hasło jest za krótkie lub za długie.

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
)

Zaszyfruj kod dostępu, korzystając ze schematu szyfrowania hasła Nest.

Szczegóły
Parametry
[in] config
Konfiguracja szyfrowania kodu dostępu, która ma być używana.
[in] keyId
Identyfikator klucza szyfrowania kodu.
[in] nonce
Unikalna wartość przypisana do zaszyfrowanego kodu dostępu.
[in] passcode
Wskaźnik kodu dostępu do szyfrowania.
[in] passcodeLen
długość hasła.
[out] encPasscode
Wskaźnik do bufora do przechowywania zaszyfrowanego kodu dostępu.
[in] encPasscodeBufSize
Rozmiar bufora do przechowywania zaszyfrowanych haseł.
[out] encPasscodeLen
Długość zaszyfrowanego kodu dostępu.
[in] groupKeyStore
Wskaźnik do obiektu magazynu kluczy grupy.
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Jeśli określona konfiguracja kodu dostępu nie jest obsługiwana.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jeśli bufor danych wyjściowych jest za mały, aby zapisać zaszyfrowany kod dostępu.
WEAVE_ERROR_INVALID_KEY_ID
Jeśli żądany klucz ma nieprawidłowy identyfikator.
WEAVE_ERROR_INVALID_ARGUMENT
Jeśli podany kod dostępu jest zbyt krótki lub zbyt długi albo nie podano wskaźnika do magazynu kluczy grupy lub magazyn kluczy platformy zwraca nieprawidłowe parametry kluczy.
other
Inne błędy związane z platformą zwrócone przez interfejsy API magazynu kluczy platformy.

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
)

Zaszyfruj kod dostępu, korzystając ze schematu szyfrowania hasła Nest.

Szczegóły
Parametry
[in] config
Konfiguracja szyfrowania haseł Weave, która ma być używana.
[in] keyId
Identyfikator klucza szyfrowania kodu.
[in] nonce
Unikalna wartość przypisana do hasła.
[in] passcode
Wskaźnik kodu dostępu do szyfrowania.
[in] passcodeLen
długość hasła.
[in] encKey
Wskaźnik klucza, którego chcesz użyć do zaszyfrowania hasła. Długość klucza musi być zgodna z algorytmem szyfrowania powiązanym z określoną konfiguracją.
[in] authKey
Wskaźnik klucza, który ma być używany do uwierzytelnienia kodu dostępu. Długość klucza musi być zgodna z algorytmem uwierzytelniania powiązanym z określoną konfiguracją.
[in] fingerprintKey
Wskaźnik klucza, za pomocą którego zostanie wygenerowany odcisk cyfrowy kodu dostępu. Długość klucza musi być zgodna z algorytmem odcisku palca powiązanym z określoną konfiguracją.
[out] encPasscode
Wskaźnik do bufora, w którym będzie przechowywany zaszyfrowany kod dostępu. Ten bufor musi mieć rozmiar co najmniej kPasscodeMaxEncryptedLen.
[in] encPasscodeBufSize
Rozmiar bufora wskazywany przez kod encPasscode.
[out] encPasscodeLen
Długość zaszyfrowanego kodu dostępu.
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Jeśli określona konfiguracja kodu dostępu nie jest obsługiwana.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jeśli bufor danych wyjściowych jest za mały, aby zapisać zaszyfrowany kod dostępu.
WEAVE_ERROR_INVALID_ARGUMENT
Jeśli podany kod dostępu jest za krótki lub za długi.

GetEncryptedPasscodeConfig

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

Uzyskaj typ konfiguracji zaszyfrowanego kodu dostępu.

Szczegóły
Parametry
[in] encPasscode
Wskaźnik do bufora zawierającego zaszyfrowany kod dostępu.
[in] encPasscodeLen
Długość zaszyfrowanego hasła.
[out] config
Konfiguracja szyfrowania hasła Weave używana przez zaszyfrowany kod dostępu.

GetEncryptedPasscodeFingerprint

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

Pobierz wartość odcisku palca powiązaną z zaszyfrowanym kodem dostępu.

Szczegóły
Parametry
[in] encPasscode
Wskaźnik do bufora zawierającego zaszyfrowany kod dostępu.
[in] encPasscodeLen
Długość zaszyfrowanego hasła.
[in] fingerprintBuf
Bufor do odbioru wartości odcisku cyfrowego.
[in] fingerprintBufSize
Rozmiar bufora wskazywany przez odcisk cyfrowy.
[out] fingerprintLen
Długość zwróconej wartości odcisku cyfrowego.

GetEncryptedPasscodeKeyId

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

Uzyskaj identyfikator klucza użytego do zaszyfrowania zaszyfrowanego hasła.

Szczegóły
Parametry
[in] encPasscode
Wskaźnik do bufora zawierającego zaszyfrowany kod dostępu.
[in] encPasscodeLen
Długość zaszyfrowanego hasła.
[out] keyId
Identyfikator klucza użytego do zaszyfrowania zaszyfrowanego hasła.

GetEncryptedPasscodeNonce

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

Pobierz wartość jednorazową powiązaną z zaszyfrowanym kodem dostępu.

Szczegóły
Parametry
[in] encPasscode
Wskaźnik do bufora zawierającego zaszyfrowany kod dostępu.
[in] encPasscodeLen
Długość zaszyfrowanego hasła.
[out] nonce
Wartość jednorazowa powiązana z zaszyfrowanym kodem dostępu.

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

Zwraca wartość „true” (prawda), jeśli podana konfiguracja szyfrowania kodu dostępu jest obsługiwana przez interfejsy API do szyfrowania/odszyfrowywania haseł.