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

Namespace ini mencakup semua antarmuka dalam Weave untuk library kode sandi Weave dalam profil keamanan Weave.

Ringkasan

Enumerasi

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum
Jenis konfigurasi enkripsi kode sandi 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
Ukuran parameter protokol enkripsi kode sandi Weave.

Variabel

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Diversifier kunci yang digunakan untuk turunan kunci enkripsi kode sandi Weave.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Diversifier kunci yang digunakan untuk turunan kunci enkripsi kode sandi Weave.

Fungsi

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
Mendekripsi kode sandi yang dienkripsi menggunakan skema Enkripsi 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)
Mendekripsi kode sandi yang dienkripsi menggunakan skema Enkripsi 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)
Enkripsi kode sandi menggunakan skema Enkripsi Kode Sandi 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)
Enkripsi kode sandi menggunakan skema Enkripsi Kode Sandi Nest.
GetEncryptedPasscodeConfig(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config)
Mendapatkan jenis konfigurasi kode sandi terenkripsi.
GetEncryptedPasscodeFingerprint(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen)
Mendapatkan nilai sidik jari yang terkait dengan kode sandi terenkripsi.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
Mendapatkan ID kunci yang digunakan untuk mengenkripsi kode sandi terenkripsi.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
Mendapatkan nilai nonce yang terkait dengan kode sandi terenkripsi.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
Menampilkan true (benar) jika konfigurasi enkripsi kode sandi yang diberikan didukung oleh API enkripsi/dekripsi kode sandi.

Struct

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

Enumerasi

@278

 @278

Jenis konfigurasi enkripsi kode sandi Weave.

Properti
kPasscodeConfig1_KeyId

ID kunci contoh yang digunakan untuk konfigurasi kode sandi uji coba #1.

kPasscode_Config1_TEST_ONLY

Konfigurasi enkripsi kode sandi #1 tidak menggunakan enkripsi dan kunci rahasia untuk mengautentikasi dan kode sandi sidik jari.

Konfigurasi ini SEHARUSNYA digunakan untuk tujuan TEST saja.

kPasscode_Config2

Konfigurasi enkripsi kode sandi #2 menggunakan enkripsi AES-128-ECB dengan integritas HMAC-SHA-1 8 byte dan sidik jari HMAC-SHA-1 8 byte.

@279

 @279

Ukuran parameter protokol enkripsi kode sandi Weave.

Properti
kPasscodeAuthenticationKeyLen

Panjang kunci autentikasi kode sandi (SHA-1).

kPasscodeAuthenticatorLen

Panjang pengautentikasi kode sandi.

kPasscodeEncKeyDiversifierSize

Ukuran diversifier kunci aplikasi enkripsi kode sandi.

kPasscodeEncryptionKeyLen

Panjang kunci enkripsi kode sandi (AES-128).

kPasscodeFingerprintKeyDiversifierSize

Ukuran diversifier kunci sidik jari kode sandi.

kPasscodeFingerprintKeyLen

Panjang kunci sidik jari kode sandi (SHA-1).

kPasscodeFingerprintLen

Panjang sidik jari kode sandi.

kPasscodeMaxEncryptedLen

Panjang kode sandi terenkripsi maksimum.

kPasscodeMaxLen

Panjang kode sandi maksimum yang tidak dienkripsi.

kPasscodePaddedLen

Panjang kode sandi (dengan padding sesuai panjang blok AES-128).

kPasscodeTotalDerivedKeyLen

Panjang kunci total kode sandi (enkripsi &integritas).

Variabel

kPasscodeEncKeyDiversifier

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

Diversifier kunci yang digunakan untuk turunan kunci enkripsi kode sandi Weave.

Nilai ini mewakili 4 byte pertama SHA-1 HASH "Nest Passcode EK and AK" frasa.

kPasscodeFingerprintKeyDiversifier

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

Diversifier kunci yang digunakan untuk turunan kunci enkripsi kode sandi Weave.

Nilai ini mewakili 4 byte pertama SHA-1 HASH "Nest Passcode EK and AK" frasa.

Fungsi

DecryptPasscode

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

Mendekripsi kode sandi yang dienkripsi menggunakan skema Enkripsi Nest Passcode.

Detail
Parameter
[in] encPasscode
Pointer ke buffer kode sandi terenkripsi.
[in] encPasscodeLen
Panjang kode sandi terenkripsi.
[in] passcodeBuf
Pointer ke buffer untuk menerima kode sandi yang didekripsi.
[in] passcodeBufSize
Ukuran buffer yang ditunjuk oleh kode sandiBuf.
[out] passcodeLen
Tetapkan ke panjang kode sandi yang didekripsi.
[in] groupKeyStore
Pointer ke objek key store grup.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Jika konfigurasi kode sandi yang ditentukan tidak didukung.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Jika autentikasi kode sandi gagal.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Jika pemeriksaan sidik jari kode sandi gagal.
WEAVE_ERROR_INVALID_KEY_ID
Jika kunci yang diminta memiliki ID kunci yang tidak valid.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika buffer kode sandi yang disediakan terlalu kecil.
WEAVE_ERROR_INVALID_ARGUMENT
Jika kode sandi yang dienkripsi terlalu pendek atau terlalu panjang; Atau, jika pointer ke key store grup tidak disediakan atau key store platform menampilkan parameter kunci yang tidak valid.
other
Error khusus platform lainnya yang ditampilkan oleh API key store platform.

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
)

Mendekripsi kode sandi yang dienkripsi menggunakan skema Enkripsi Nest Passcode.

Detail
Parameter
[in] encPasscode
Pointer ke buffer kode sandi terenkripsi.
[in] encPasscodeLen
Panjang kode sandi terenkripsi.
[in] encKey
Pointer ke kunci yang akan digunakan untuk mengenkripsi kode sandi. Panjang kunci harus sesuai dengan algoritma enkripsi yang terkait dengan konfigurasi yang ditentukan.
[in] authKey
Pointer ke kunci yang akan digunakan untuk mengautentikasi kode sandi. Panjang kunci harus sesuai dengan algoritma autentikasi yang terkait dengan konfigurasi yang ditentukan.
[in] fingerprintKey
Pointer ke kunci yang akan digunakan untuk membuat sidik jari kode sandi. Panjang kunci harus sesuai dengan algoritma sidik jari yang terkait dengan konfigurasi yang ditentukan.
[in] passcodeBuf
Pointer ke buffer untuk menerima kode sandi yang didekripsi.
[in] passcodeBufSize
Ukuran buffer yang ditunjuk oleh kode sandiBuf.
[out] passcodeLen
Tetapkan ke panjang kode sandi yang didekripsi.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Jika konfigurasi kode sandi yang ditentukan tidak didukung.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Jika autentikasi kode sandi gagal.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Jika pemeriksaan sidik jari kode sandi gagal.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika buffer kode sandi yang disediakan terlalu kecil.
WEAVE_ERROR_INVALID_ARGUMENT
Jika kode sandi yang dienkripsi terlalu pendek atau terlalu panjang.

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
)

Enkripsi kode sandi menggunakan skema Enkripsi Kode Sandi Nest.

Detail
Parameter
[in] config
Konfigurasi enkripsi kode sandi yang akan digunakan.
[in] keyId
ID kunci enkripsi kode sandi yang diminta.
[in] nonce
Nilai unik yang ditetapkan ke kode sandi terenkripsi.
[in] passcode
Pointer ke kode sandi yang akan dienkripsi.
[in] passcodeLen
Panjang kode sandi.
[out] encPasscode
Pointer ke buffer untuk menyimpan kode sandi terenkripsi.
[in] encPasscodeBufSize
Ukuran buffer untuk penyimpanan kode sandi terenkripsi.
[out] encPasscodeLen
Panjang kode sandi terenkripsi.
[in] groupKeyStore
Pointer ke objek key store grup.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Jika konfigurasi kode sandi yang ditentukan tidak didukung.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika buffer output yang diberikan terlalu kecil untuk kode sandi terenkripsi.
WEAVE_ERROR_INVALID_KEY_ID
Jika kunci yang diminta memiliki ID kunci yang tidak valid.
WEAVE_ERROR_INVALID_ARGUMENT
Jika kode sandi yang diberikan terlalu pendek atau terlalu panjang; Atau, jika pointer ke key store grup tidak disediakan atau key store platform menampilkan parameter kunci yang tidak valid.
other
Error khusus platform lainnya yang ditampilkan oleh API key store platform.

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
)

Enkripsi kode sandi menggunakan skema Enkripsi Kode Sandi Nest.

Detail
Parameter
[in] config
Konfigurasi enkripsi kode sandi Weave yang akan digunakan.
[in] keyId
ID kunci enkripsi kode sandi yang diminta.
[in] nonce
Nilai unik yang ditetapkan ke kode sandi.
[in] passcode
Pointer ke kode sandi yang akan dienkripsi.
[in] passcodeLen
Panjang kode sandi.
[in] encKey
Pointer ke kunci yang akan digunakan untuk mengenkripsi kode sandi. Panjang kunci harus sesuai dengan algoritma enkripsi yang terkait dengan konfigurasi yang ditentukan.
[in] authKey
Pointer ke kunci yang akan digunakan untuk mengautentikasi kode sandi. Panjang kunci harus sesuai dengan algoritma autentikasi yang terkait dengan konfigurasi yang ditentukan.
[in] fingerprintKey
Pointer ke kunci yang akan digunakan untuk membuat sidik jari kode sandi. Panjang kunci harus sesuai dengan algoritma sidik jari yang terkait dengan konfigurasi yang ditentukan.
[out] encPasscode
Pointer ke buffer tempat kode sandi terenkripsi akan disimpan. Buffer ini harus berukuran minimal kPasscodeMaxEncryptedLen.
[in] encPasscodeBufSize
Ukuran buffer yang ditunjuk oleh encPasscode.
[out] encPasscodeLen
Panjang kode sandi terenkripsi.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Jika konfigurasi kode sandi yang ditentukan tidak didukung.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika buffer output yang diberikan terlalu kecil untuk kode sandi terenkripsi.
WEAVE_ERROR_INVALID_ARGUMENT
Jika kode sandi yang diberikan terlalu pendek atau terlalu panjang.

GetEncryptedPasscodeConfig

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

Mendapatkan jenis konfigurasi kode sandi terenkripsi.

Detail
Parameter
[in] encPasscode
Pointer ke buffer yang berisi kode sandi terenkripsi.
[in] encPasscodeLen
Panjang kode sandi terenkripsi.
[out] config
Konfigurasi enkripsi kode sandi Weave yang digunakan oleh kode sandi terenkripsi.

GetEncryptedPasscodeFingerprint

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

Mendapatkan nilai sidik jari yang terkait dengan kode sandi terenkripsi.

Detail
Parameter
[in] encPasscode
Pointer ke buffer yang berisi kode sandi terenkripsi.
[in] encPasscodeLen
Panjang kode sandi terenkripsi.
[in] fingerprintBuf
Buffer untuk menerima nilai sidik jari.
[in] fingerprintBufSize
Ukuran buffer yang ditunjuk oleh sidik jariBuf.
[out] fingerprintLen
Panjang nilai sidik jari yang ditampilkan.

GetEncryptedPasscodeKeyId

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

Mendapatkan ID kunci yang digunakan untuk mengenkripsi kode sandi terenkripsi.

Detail
Parameter
[in] encPasscode
Pointer ke buffer yang berisi kode sandi terenkripsi.
[in] encPasscodeLen
Panjang kode sandi terenkripsi.
[out] keyId
ID kunci yang digunakan untuk mengenkripsi kode sandi terenkripsi.

GetEncryptedPasscodeNonce

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

Mendapatkan nilai nonce yang terkait dengan kode sandi terenkripsi.

Detail
Parameter
[in] encPasscode
Pointer ke buffer yang berisi kode sandi terenkripsi.
[in] encPasscodeLen
Panjang kode sandi terenkripsi.
[out] nonce
Nilai nonce yang terkait dengan kode sandi terenkripsi.

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

Menampilkan true (benar) jika konfigurasi enkripsi kode sandi yang diberikan didukung oleh API enkripsi/dekripsi kode sandi.