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

Bu ad alanı, Weave güvenlik profilindeki Weave şifre kodu kitaplığı için Weave'deki tüm arayüzleri içerir.

Özet

Sıralamalar

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum
Weave şifre kodu şifreleme yapılandırma türleri.
@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
Weave şifre kodu şifreleme protokolü parametre boyutları.

Değişkenler

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Weave şifre kodu şifreleme anahtarı türetimi için kullanılan anahtar farklılaştırıcı.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Weave şifre kodu şifreleme anahtarı türetimi için kullanılan anahtar farklılaştırıcı.

İşlevler

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
Nest Şifre Kodu Şifreleme şemasını kullanarak şifrelenmiş bir şifre kodunun şifresini çözün.
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)
Nest Şifre Kodu Şifreleme şemasını kullanarak şifrelenmiş bir şifre kodunun şifresini çözün.
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)
Nest Şifre Kodu Şifreleme şemasını kullanarak şifre kodu şifreleyin.
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)
Nest Şifre Kodu Şifreleme şemasını kullanarak şifre kodu şifreleyin.
GetEncryptedPasscodeConfig(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config)
Şifrelenmiş bir şifre kodunun yapılandırma türünü alın.
GetEncryptedPasscodeFingerprint(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen)
Şifrelenmiş bir şifre koduyla ilişkilendirilmiş parmak izi değerini alın.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
Şifrelenmiş bir şifre kodunu şifrelemek için kullanılan anahtarın kimliğini alın.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
Şifrelenmiş bir şifre koduyla ilişkili tek seferlik değeri al.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
Sağlanan şifre kodu şifreleme yapılandırması, şifre kodu şifreleme/şifre çözme API'leri tarafından destekleniyorsa true değerini döndürür.

Yapılar

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

Sıralamalar

@278

 @278

Weave şifre kodu şifreleme yapılandırma türleri.

Özellikler
kPasscodeConfig1_KeyId

1. test şifre kodu yapılandırması için kullanılan sahte anahtar kimliği.

kPasscode_Config1_TEST_ONLY

1. şifre kodu şifreleme yapılandırması, kimlik doğrulaması ve parmak izi şifre kodu için şifreleme ve gizli anahtarlar kullanmıyor.

Bu yapılandırmanın yalnızca TEST amacıyla kullanılması GEREKİR.

kPasscode_Config2

Şifre kodu şifreleme yapılandırması #2, 8 baytlık HMAC-SHA-1 bütünlüğü ve 8 baytlık HMAC-SHA-1 parmak iziyle AES-128-ECB şifrelemesi kullanıyor.

@279

 @279

Weave şifre kodu şifreleme protokolü parametre boyutları.

Özellikler
kPasscodeAuthenticationKeyLen

Şifre kodu kimlik doğrulaması (SHA-1) anahtar uzunluğu.

kPasscodeAuthenticatorLen

Şifre kodu kimlik doğrulayıcı uzunluğu.

kPasscodeEncKeyDiversifierSize

Şifre kodu şifreleme uygulama anahtarı sınıflandırıcı boyutu.

kPasscodeEncryptionKeyLen

Şifre kodu şifreleme (AES-128) anahtar uzunluğu.

kPasscodeFingerprintKeyDiversifierSize

Şifre kodu parmak izi anahtarı ayırıcı boyutu.

kPasscodeFingerprintKeyLen

Şifre kodu parmak izi (SHA-1) anahtar uzunluğu.

kPasscodeFingerprintLen

Şifre kodu parmak izi uzunluğu.

kPasscodeMaxEncryptedLen

Maksimum şifrelenmiş şifre kodu uzunluğu.

kPasscodeMaxLen

Maksimum şifrelenmemiş şifre kodu uzunluğu.

kPasscodePaddedLen

Şifre kodu uzunluğu (AES-128 blok uzunluğuna göre dolgulu).

kPasscodeTotalDerivedKeyLen

Şifre kodu toplam (şifreleme ve bütünlük) anahtar uzunluğu.

Değişkenler

kPasscodeEncKeyDiversifier

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

Weave şifre kodu şifreleme anahtarı türetimi için kullanılan anahtar farklılaştırıcı.

Bu değer, "Nest Şifre Kodu EK ve AK" ifadesinin SHA-1 HASH'sinin ilk 4 baytını temsil eder.

kPasscodeFingerprintKeyDiversifier

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

Weave şifre kodu şifreleme anahtarı türetimi için kullanılan anahtar farklılaştırıcı.

Bu değer, "Nest Şifre Kodu EK ve AK" ifadesinin SHA-1 HASH'sinin ilk 4 baytını temsil eder.

İşlevler

DecryptPasscode

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

Nest Şifre Kodu Şifreleme şemasını kullanarak şifrelenmiş bir şifre kodunun şifresini çözün.

Ayrıntılar
Parametreler
[in] encPasscode
Şifrelenmiş şifre kodu arabelleğine işaret eden bir işaretçi.
[in] encPasscodeLen
Şifrelenmiş şifre kodunun uzunluğu.
[in] passcodeBuf
Şifresi çözülmüş şifre kodunu almak için bir arabelleğin işaretçisi.
[in] passcodeBufSize
PasswordBuf tarafından işaretlenen arabelleğin boyutu.
[out] passcodeLen
Şifresi çözülmüş şifre kodunun uzunluğuna ayarlanır.
[in] groupKeyStore
Grup anahtarı deposu nesnesine işaret eden bir işaret.
Döndürülen Değerler
WEAVE_NO_ERROR
Başarılı olun.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Belirtilen şifre kodu yapılandırması desteklenmiyorsa
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Şifre kodu kimlik doğrulaması başarısız olursa.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Şifre kodu parmak izi kontrolü başarısız olursa.
WEAVE_ERROR_INVALID_KEY_ID
İstenen anahtarda geçersiz anahtar kimliği varsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Sağlanan şifre kodu arabelleği çok küçükse.
WEAVE_ERROR_INVALID_ARGUMENT
Şifrelenmiş şifre kodu çok kısa veya çok uzunsa; grup anahtarı deposunun işaretçisi sağlanmamışsa veya platform anahtar deposu geçersiz anahtar parametreleri döndürüyorsa.
other
Platform anahtar deposu API'leri tarafından döndürülen diğer platforma özgü hatalar.

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
)

Nest Şifre Kodu Şifreleme şemasını kullanarak şifrelenmiş bir şifre kodunun şifresini çözün.

Ayrıntılar
Parametreler
[in] encPasscode
Şifrelenmiş şifre kodu arabelleğine işaret eden bir işaretçi.
[in] encPasscodeLen
Şifrelenmiş şifre kodunun uzunluğu.
[in] encKey
Şifre kodunu şifrelemek için kullanılacak anahtara işaret eden bir işaret. Anahtarın uzunluğu, belirtilen yapılandırmayla ilişkili şifreleme algoritmasıyla eşleşmelidir.
[in] authKey
Şifre kodunu doğrulamak için kullanılacak anahtara işaret eden bir işaretçi. Anahtarın uzunluğu, belirtilen yapılandırmayla ilişkilendirilmiş kimlik doğrulama algoritmasıyla eşleşmelidir.
[in] fingerprintKey
Şifre kodu parmak izini oluşturmak için kullanılacak anahtara işaret eden bir işaretçi. Anahtarın uzunluğu, belirtilen yapılandırmayla ilişkilendirilmiş parmak izi algoritmasıyla eşleşmelidir.
[in] passcodeBuf
Şifresi çözülmüş şifre kodunu almak için bir arabelleğin işaretçisi.
[in] passcodeBufSize
PasswordBuf tarafından işaretlenen arabelleğin boyutu.
[out] passcodeLen
Şifresi çözülmüş şifre kodunun uzunluğuna ayarlanır.
Döndürülen Değerler
WEAVE_NO_ERROR
Başarılı olun.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Belirtilen şifre kodu yapılandırması desteklenmiyorsa
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Şifre kodu kimlik doğrulaması başarısız olursa.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Şifre kodu parmak izi kontrolü başarısız olursa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Sağlanan şifre kodu arabelleği çok küçükse.
WEAVE_ERROR_INVALID_ARGUMENT
Şifrelenmiş şifre kodu çok kısa veya çok uzunsa.

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
)

Nest Şifre Kodu Şifreleme şemasını kullanarak şifre kodu şifreleyin.

Ayrıntılar
Parametreler
[in] config
Kullanılacak şifre kodu şifreleme yapılandırması.
[in] keyId
İstenen şifre kodu şifreleme anahtarı kimliği.
[in] nonce
Şifrelenmiş şifre koduna atanan benzersiz bir değer.
[in] passcode
Şifrelenecek şifre kodunun işaretçisi.
[in] passcodeLen
Şifre kodu uzunluğu.
[out] encPasscode
Şifrelenmiş şifre kodunu depolamak için arabelleğin işaretçisi.
[in] encPasscodeBufSize
Şifrelenmiş şifre kodu depolama alanı için arabelleğin boyutu.
[out] encPasscodeLen
Şifrelenmiş şifre kodunun uzunluğu.
[in] groupKeyStore
Grup anahtarı deposu nesnesine işaret eden bir işaret.
Döndürülen Değerler
WEAVE_NO_ERROR
Başarılı olun.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Belirtilen şifre kodu yapılandırması desteklenmiyorsa
WEAVE_ERROR_BUFFER_TOO_SMALL
Sağlanan çıkış arabelleği şifrelenmiş şifre kodu için çok küçükse.
WEAVE_ERROR_INVALID_KEY_ID
İstenen anahtarda geçersiz anahtar kimliği varsa.
WEAVE_ERROR_INVALID_ARGUMENT
Sağlanan şifre kodu çok kısa veya çok uzunsa; grup anahtarı deposunun işaretçisi sağlanmamışsa ya da platform anahtar deposu geçersiz anahtar parametreleri döndürüyorsa.
other
Platform anahtar deposu API'leri tarafından döndürülen diğer platforma özgü hatalar.

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
)

Nest Şifre Kodu Şifreleme şemasını kullanarak şifre kodu şifreleyin.

Ayrıntılar
Parametreler
[in] config
Kullanılacak Weave şifre kodu şifreleme yapılandırması.
[in] keyId
İstenen şifre kodu şifreleme anahtarı kimliği.
[in] nonce
Şifre koduna atanan benzersiz bir değerdir.
[in] passcode
Şifrelenecek şifre kodunun işaretçisi.
[in] passcodeLen
Şifre kodu uzunluğu.
[in] encKey
Şifre kodunu şifrelemek için kullanılacak anahtara işaret eden bir işaret. Anahtarın uzunluğu, belirtilen yapılandırmayla ilişkili şifreleme algoritmasıyla eşleşmelidir.
[in] authKey
Şifre kodunu doğrulamak için kullanılacak anahtara işaret eden bir işaretçi. Anahtarın uzunluğu, belirtilen yapılandırmayla ilişkilendirilmiş kimlik doğrulama algoritmasıyla eşleşmelidir.
[in] fingerprintKey
Şifre kodu parmak izini oluşturmak için kullanılacak anahtara işaret eden bir işaretçi. Anahtarın uzunluğu, belirtilen yapılandırmayla ilişkilendirilmiş parmak izi algoritmasıyla eşleşmelidir.
[out] encPasscode
Şifrelenmiş şifre kodunun depolanacağı bir arabelleğin işaretçisi. Bu arabellek boyutu en az kPasscodeMaxEncryptedLen olmalıdır.
[in] encPasscodeBufSize
encPasscode tarafından işaret edilen arabelleğin boyutu.
[out] encPasscodeLen
Şifrelenmiş şifre kodunun uzunluğu.
Döndürülen Değerler
WEAVE_NO_ERROR
Başarılı olun.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Belirtilen şifre kodu yapılandırması desteklenmiyorsa
WEAVE_ERROR_BUFFER_TOO_SMALL
Sağlanan çıkış arabelleği şifrelenmiş şifre kodu için çok küçükse.
WEAVE_ERROR_INVALID_ARGUMENT
Sağlanan şifre kodu çok kısa veya çok uzunsa.

GetEncryptedPasscodeConfig

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

Şifrelenmiş bir şifre kodunun yapılandırma türünü alın.

Ayrıntılar
Parametreler
[in] encPasscode
İşaretlenmiş şifre kodunu içeren arabelleğin üzerine gelin.
[in] encPasscodeLen
Şifrelenmiş şifre kodunun uzunluğu.
[out] config
Şifrelenmiş şifre kodu tarafından kullanılan Weave şifre kodu şifreleme yapılandırması.

GetEncryptedPasscodeFingerprint

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

Şifrelenmiş bir şifre koduyla ilişkilendirilmiş parmak izi değerini alın.

Ayrıntılar
Parametreler
[in] encPasscode
İşaretlenmiş şifre kodunu içeren arabelleğin üzerine gelin.
[in] encPasscodeLen
Şifrelenmiş şifre kodunun uzunluğu.
[in] fingerprintBuf
Parmak izi değerini almak için bir arabellek.
[in] fingerprintBufSize
parmak iziBuf'un işaret ettiği arabelleğin boyutu.
[out] fingerprintLen
Döndürülen dijital parmak izi değerinin uzunluğu.

GetEncryptedPasscodeKeyId

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

Şifrelenmiş bir şifre kodunu şifrelemek için kullanılan anahtarın kimliğini alın.

Ayrıntılar
Parametreler
[in] encPasscode
İşaretlenmiş şifre kodunu içeren arabelleğin üzerine gelin.
[in] encPasscodeLen
Şifrelenmiş şifre kodunun uzunluğu.
[out] keyId
Şifrelenmiş şifre kodunu şifrelemek için kullanılan anahtarın kimliği.

GetEncryptedPasscodeNonce

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

Şifrelenmiş bir şifre koduyla ilişkili tek seferlik değeri al.

Ayrıntılar
Parametreler
[in] encPasscode
İşaretlenmiş şifre kodunu içeren arabelleğin üzerine gelin.
[in] encPasscodeLen
Şifrelenmiş şifre kodunun uzunluğu.
[out] nonce
Şifrelenmiş bir şifre koduyla ilişkili tek seferlik değeri.

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

Sağlanan şifre kodu şifreleme yapılandırması, şifre kodu şifreleme/şifre çözme API'leri tarafından destekleniyorsa true değerini döndürür.