Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

nl::Weave::Profil::Keamanan::Kode sandi

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
Tenun jenis konfigurasi enkripsi kode sandi.
@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
Menenun ukuran parameter protokol enkripsi kode sandi.

Variabel

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Pembagi kunci yang digunakan untuk turunan kunci enkripsi kode sandi Weave.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Pembagi 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 Kode Sandi 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)
Mendekripsi kode sandi yang dienkripsi menggunakan skema Enkripsi Kode Sandi 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)
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 yang dienkripsi.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
Dapatkan ID kunci yang digunakan untuk mengenkripsi kode sandi yang dienkripsi.
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 nilai benar jika konfigurasi enkripsi kode sandi yang diberikan didukung oleh API enkripsi/dekripsi kode sandi.

Struct

nl::Tenun::Profil::Keamanan::Kode sandi::EncryptedPasscodeStruct

Enumerasi

@278

 @278

Tenun jenis konfigurasi enkripsi kode sandi.

Properti
kPasscodeConfig1_KeyId

ID kunci contoh yang digunakan untuk konfigurasi kode sandi pengujian #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 SEBAIKNYA digunakan untuk tujuan PENGUJIAN 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

Menenun ukuran parameter protokol enkripsi kode sandi.

Properti
kPasscodeAuthenticationKeyLen

Panjang kunci autentikasi kode sandi (SHA-1).

kPasscodeAuthenticatorLen

Panjang pengautentikasi kode sandi.

kPasscodeEncKeyDiversifierSize

Ukuran pembagi kunci aplikasi enkripsi kode sandi.

kPasscodeEncryptionKeyLen

Panjang kunci enkripsi kode sandi (AES-128).

kPasscodeFingerprintKeyDiversifierSize

Ukuran pembagi kunci sidik jari kode sandi.

kPasscodeFingerprintKeyLen

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

kPasscodeFingerprintLen

Panjang sidik jari kode sandi.

kPasscodeMaxEncryptedLen

Panjang kode sandi yang dienkripsi maksimal.

kPasscodeMaxLen

Panjang kode sandi maksimum yang tidak dienkripsi.

kPasscodePaddedLen

Panjang kode sandi (ditambahkan ke panjang blok AES-128).

kPasscodeTotalDerivedKeyLen

Panjang kunci total kode sandi (enkripsi & integritas).

Variabel

kPasscodeEncKeyDiversifier

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

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

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

kPassCodeFingerprintKeyDiversifier

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

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

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

Fungsi

Kode Dekripsi

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 Kode Sandi Nest.

Detail
Parameter
[in] encPasscode
Pointer ke buffering kode sandi terenkripsi.
[in] encPasscodeLen
Panjang kode sandi yang dienkripsi.
[in] passcodeBuf
Pointer ke buffer untuk menerima kode sandi yang didekripsi.
[in] passcodeBufSize
Ukuran buffer yang ditunjukkan oleh codebaseBuf.
[out] passcodeLen
Tetapkan ke panjang kode sandi yang didekripsi.
[in] groupKeyStore
Pointer ke objek penyimpanan kunci grup.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika 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 diberikan terlalu kecil.
WEAVE_ERROR_INVALID_ARGUMENT
Jika kode sandi yang dienkripsi terlalu pendek atau terlalu panjang; Atau jika penunjuk ke penyimpanan kunci grup tidak diberikan atau penyimpanan kunci platform menampilkan parameter kunci yang tidak valid.
other
Error khusus platform lainnya yang ditampilkan oleh API penyimpanan kunci platform.

Kode Dekripsi

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 Kode Sandi Nest.

Detail
Parameter
[in] encPasscode
Pointer ke buffering kode sandi terenkripsi.
[in] encPasscodeLen
Panjang kode sandi yang dienkripsi.
[in] encKey
Pointer ke kunci yang akan digunakan untuk mengenkripsi kode sandi. Panjang kunci harus cocok dengan algoritme enkripsi yang dikaitkan dengan konfigurasi yang ditentukan.
[in] authKey
Pointer ke kunci yang akan digunakan untuk mengautentikasi kode sandi. Panjang kunci harus cocok dengan algoritme 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 algoritme sidik jari yang terkait dengan konfigurasi yang ditentukan.
[in] passcodeBuf
Pointer ke buffer untuk menerima kode sandi yang didekripsi.
[in] passcodeBufSize
Ukuran buffer yang ditunjukkan oleh codebaseBuf.
[out] passcodeLen
Tetapkan ke panjang kode sandi yang didekripsi.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika 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 diberikan terlalu kecil.
WEAVE_ERROR_INVALID_ARGUMENT
Jika kode sandi yang dienkripsi terlalu pendek atau terlalu panjang.

EnkripsiKode Sandi

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 untuk kode sandi yang dienkripsi.
[in] passcode
Pointer ke kode sandi yang akan dienkripsi.
[in] passcodeLen
Panjang kode sandi.
[out] encPasscode
Pointer buffer untuk menyimpan kode sandi terenkripsi.
[in] encPasscodeBufSize
Ukuran buffer untuk penyimpanan kode sandi yang dienkripsi.
[out] encPasscodeLen
Panjang kode sandi yang dienkripsi.
[in] groupKeyStore
Pointer ke objek penyimpanan kunci grup.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika 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 penunjuk ke penyimpanan kunci grup tidak diberikan atau penyimpanan kunci platform menampilkan parameter kunci yang tidak valid.
other
Error khusus platform lainnya yang ditampilkan oleh API penyimpanan kunci platform.

EnkripsiKode Sandi

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 untuk 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 cocok dengan algoritme enkripsi yang dikaitkan dengan konfigurasi yang ditentukan.
[in] authKey
Pointer ke kunci yang akan digunakan untuk mengautentikasi kode sandi. Panjang kunci harus cocok dengan algoritme 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 algoritme sidik jari yang terkait dengan konfigurasi yang ditentukan.
[out] encPasscode
Pointer ke buffer tempat kode sandi terenkripsi akan disimpan. Buffering ini harus berukuran setidaknya kPasscodeMaxEncryptedLen.
[in] encPasscodeBufSize
Ukuran buffer yang diarahkan oleh encPasscode.
[out] encPasscodeLen
Panjang kode sandi yang dienkripsi.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika 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 yang dienkripsi.
[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 yang dienkripsi.

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

GetEncryptedPasscodeKeyId

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

Dapatkan ID kunci yang digunakan untuk mengenkripsi kode sandi yang dienkripsi.

Detail
Parameter
[in] encPasscode
Pointer ke buffer yang berisi kode sandi terenkripsi.
[in] encPasscodeLen
Panjang kode sandi yang dienkripsi.
[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 yang dienkripsi.
[out] nonce
Nilai nonce yang terkait dengan kode sandi terenkripsi.

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

Menampilkan nilai benar jika konfigurasi enkripsi kode sandi yang diberikan didukung oleh API enkripsi/dekripsi kode sandi.