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

Ta przestrzeń nazw obejmuje wszystkie interfejsy Weave dla biblioteki haseł 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ł.

Zmienne

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Zróżnicowanie kluczy używane do pobierania kluczy szyfrowania haseł Weave.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Zróżnicowanie kluczy używane do pobierania 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 hasło zaszyfrowane za pomocą schematu szyfrowania Nest Passcode.
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 hasło zaszyfrowane za pomocą schematu szyfrowania Nest Passcode.
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 Nest Passcode Encryption.
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 Nest Passcode Encryption.
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)
Uzyskaj odcisk palca powiązany z zaszyfrowanym hasłem.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
Uzyskaj identyfikator klucza używanego do zaszyfrowania zaszyfrowanego kodu dostępu.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
Pobierz wartość jednorazową powiązaną z zaszyfrowanym hasłem.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
Zwraca wartość „prawda”, jeśli podana konfiguracja szyfrowania kodu dostępu jest obsługiwana przez interfejsy API szyfrowania/odszyfrowywania haseł.

Struktura

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

Wyliczenia

@278

 @278

Typy konfiguracji szyfrowania haseł Weave.

Właściwości
kPasscodeConfig1_KeyId

Identyfikator klucza zastępczego używany do testowej konfiguracji kodu dostępu nr 1.

kPasscode_Config1_TEST_ONLY

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

Ta konfiguracja POWINNA być używana wyłącznie do celów TESTOWYCH.

kPasscode_Config2

Druga konfiguracja szyfrowania kodu dostępu korzysta z szyfrowania AES-128-ECB z 8-bajtową integralnością HMAC-SHA-1 i 8-bajtowym odciskiem cyfrowym HMAC-SHA-1.

@279

 @279

Rozmiary parametrów protokołu szyfrowania haseł.

Właściwości
kPasscodeAuthenticationKeyLen

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

kPasscodeAuthenticatorLen

Długość kodu uwierzytelniającego.

kPasscodeEncKeyDiversifierSize

Rozmiar dywersyfikatora klucza aplikacji szyfrowania kodu dostępu.

kPasscodeEncryptionKeyLen

Długość klucza szyfrowania kodu dostępu (AES-128).

kPasscodeFingerprintKeyDiversifierSize

Rozmiar dywersyfikatora odcisku cyfrowego klucza dostępu.

kPasscodeFingerprintKeyLen

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

kPasscodeFingerprintLen

Długość odcisku cyfrowego kodu dostępu.

kPasscodeMaxEncryptedLen

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

kPasscodeMaxLen

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

kPasscodePaddedLen

Długość kodu dostępu (dostosowana 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 }

Zróżnicowanie kluczy używane do pobierania kluczy szyfrowania haseł Weave.

Ta wartość reprezentuje pierwsze 4 bajty haszowania SHA-1 „kodu dostępu Nest EK i AK” do wyrażenia.

kPasscodeFingerprintKeyDiversifier

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

Zróżnicowanie kluczy używane do pobierania kluczy szyfrowania haseł Weave.

Ta wartość reprezentuje pierwsze 4 bajty haszowania SHA-1 „kodu dostępu Nest EK i AK” do wyrażenia.

Funkcje

DecryptPasscode

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

Odszyfruj hasło zaszyfrowane za pomocą schematu szyfrowania Nest Passcode.

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, do którego można odebrać odszyfrowany kod dostępu.
[in] passcodeBufSize
Rozmiar bufora wskazywanego przez wartość codeBuf.
[out] passcodeLen
Ustaw długość odszyfrowanego kodu dostępu.
[in] groupKeyStore
Wskaźnik do obiektu magazynu kluczy grupy.
Zwracane wartości
WEAVE_NO_ERROR
Powodzenie.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Jeśli określona konfiguracja kodu dostępu nie jest obsługiwana.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Jeśli uwierzytelnienie za pomocą kodu dostępu nie powiedzie się
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Jeśli odcisk palca nie powiedzie się,
WEAVE_ERROR_INVALID_KEY_ID
Jeśli żądany klucz ma nieprawidłowy identyfikator.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jeśli bufor kodu dostępu jest za mały.
WEAVE_ERROR_INVALID_ARGUMENT
Jeśli zaszyfrowany kod dostępu jest za krótki lub za długi. Jeśli nie podano wskaźnika do magazynu kluczy grupy lub magazyn kluczy platformy zwraca nieprawidłowe parametry kluczy.
other
Inne błędy specyficzne dla platformy zwracane 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 hasło zaszyfrowane za pomocą schematu szyfrowania Nest Passcode.

Szczegóły
Parametry
[in] encPasscode
Wskaźnik do zaszyfrowanego bufora haseł.
[in] encPasscodeLen
Długość zaszyfrowanego kodu dostępu.
[in] encKey
Wskaźnik do klucza, który ma być używany do zaszyfrowania hasła. Długość klucza musi być zgodna z algorytmem szyfrowania powiązanym z określoną konfiguracją.
[in] authKey
Wskaźnik do 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 na klucz, który ma być używany do wygenerowania odcisku cyfrowego kodu dostępu. Długość klucza musi odpowiadać algorytmowi odcisku cyfrowego powiązanego z określoną konfiguracją.
[in] passcodeBuf
wskaźnik do bufora, do którego można odebrać odszyfrowany kod dostępu.
[in] passcodeBufSize
Rozmiar bufora wskazywanego przez wartość codeBuf.
[out] passcodeLen
Ustaw długość odszyfrowanego kodu dostępu.
Zwracane wartości
WEAVE_NO_ERROR
Powodzenie.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Jeśli określona konfiguracja kodu dostępu nie jest obsługiwana.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Jeśli uwierzytelnienie za pomocą kodu dostępu nie powiedzie się
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Jeśli odcisk palca nie powiedzie się,
WEAVE_ERROR_BUFFER_TOO_SMALL
Jeśli bufor kodu dostępu jest za mały.
WEAVE_ERROR_INVALID_ARGUMENT
Jeśli zaszyfrowany kod dostępu jest za krótki lub za długi.

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 Nest Passcode Encryption.

Szczegóły
Parametry
[in] config
Konfiguracja szyfrowania kodu dostępu, która ma być używana.
[in] keyId
Identyfikator żądanego klucza szyfrowania hasła.
[in] nonce
Unikalna wartość przypisana do zaszyfrowanego kodu dostępu.
[in] passcode
wskaźnik do zaszyfrowanego kodu dostępu.
[in] passcodeLen
Długość kodu dostępu.
[out] encPasscode
wskaźnik do bufora do zapisania 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
Powodzenie.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Jeśli określona konfiguracja kodu dostępu nie jest obsługiwana.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jeśli podany bufor wyjściowy jest zbyt mały dla zaszyfrowanego kodu 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 za krótki lub za długi. Jeśli nie podano wskaźnika do magazynu kluczy grupy lub magazyn kluczy platformy zwraca nieprawidłowe parametry kluczy.
other
Inne błędy specyficzne dla platformy zwracane 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 Nest Passcode Encryption.

Szczegóły
Parametry
[in] config
Konfiguracja szyfrowania hasła Weave, która ma być używana.
[in] keyId
Identyfikator żądanego klucza szyfrowania hasła.
[in] nonce
Unikalna wartość przypisana do kodu dostępu.
[in] passcode
wskaźnik do zaszyfrowanego kodu dostępu.
[in] passcodeLen
Długość kodu dostępu.
[in] encKey
Wskaźnik do klucza, który ma być używany do zaszyfrowania hasła. Długość klucza musi być zgodna z algorytmem szyfrowania powiązanym z określoną konfiguracją.
[in] authKey
Wskaźnik do 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 na klucz, który ma być używany do wygenerowania odcisku cyfrowego kodu dostępu. Długość klucza musi odpowiadać algorytmowi odcisku cyfrowego powiązanego z określoną konfiguracją.
[out] encPasscode
wskaźnik do bufora, w którym zostanie zapisany zaszyfrowany kod dostępu. Bufor musi mieć co najmniej kPasscodeMaxEncryptedLen.
[in] encPasscodeBufSize
Rozmiar bufora wskazywanego przez parametr encPasscode.
[out] encPasscodeLen
Długość zaszyfrowanego kodu dostępu.
Zwracane wartości
WEAVE_NO_ERROR
Powodzenie.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Jeśli określona konfiguracja kodu dostępu nie jest obsługiwana.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jeśli podany bufor wyjściowy jest zbyt mały dla zaszyfrowanego kodu 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 kodu dostępu.
[out] config
Konfiguracja szyfrowania kodu dostępu 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
)

Uzyskaj odcisk palca powiązany z zaszyfrowanym hasłem.

Szczegóły
Parametry
[in] encPasscode
Wskaźnik do bufora zawierającego zaszyfrowany kod dostępu.
[in] encPasscodeLen
Długość zaszyfrowanego kodu dostępu.
[in] fingerprintBuf
Bufor do odbioru wartości odcisku cyfrowego.
[in] fingerprintBufSize
Rozmiar bufora wskazany przez odcisk palcaBuf.
[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żywanego do zaszyfrowania zaszyfrowanego kodu dostępu.

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

GetEncryptedPasscodeNonce

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

Pobierz wartość jednorazową powiązaną z zaszyfrowanym hasłem.

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

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

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