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

Numaralandırmalar

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum
Örgü şifre ş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
Örgütlü şifre şifreleme protokolü parametresi boyutları.

Değişkenler

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

İş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 kodunu çö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 kodunu çö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 bir şifre kodunu ş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 bir şifre kodunu şifreleyin.
GetEncryptedPasscodeConfig(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config)
Şifrelenmiş şifre kodunun yapılandırma türünü alma.
GetEncryptedPasscodeFingerprint(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen)
Şifrelenmiş bir şifre koduyla ilişkili 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ın.
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

Numaralandırmalar

@278

 @278

Örgü şifre ş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ında, kimlik doğrulaması yapmak ve parmak izi şifre kodu için şifreleme ve gizli anahtarlar kullanılmıyor.

Bu yapılandırma yalnızca TEST amacıyla kullanılmalıdır.

kPasscode_Config2

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

@279

 @279

Örgütlü şifre şifreleme protokolü parametresi 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ı değiştirici boyutu.

kPasscodeEncryptionKeyLen

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

kPasscodeFingerprintKeyDiversifierSize

Şifre kodu parmak izi anahtarı çeşitleyici boyutu.

kPasscodeFingerprintKeyLen

Şifre kodu dijital 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 eklenir).

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ürevi için kullanılan anahtar çeşitleyici.

Bu değer, "Nest Şifre Kodu EK ve AK"nin SHA-1 HASH'sinin ilk 4 baytını temsil eder kelime öbeğini ekleyin.

kPasscodeFingerprintKeyDiversifier

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

Weave şifre kodu şifreleme anahtarı türevi için kullanılan anahtar çeşitleyici.

Bu değer, "Nest Şifre Kodu EK ve AK"nin SHA-1 HASH'sinin ilk 4 baytını temsil eder kelime öbeğini ekleyin.

İş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 kodunu çözün.

Ayrıntılar
Parametreler
[in] encPasscode
Şifrelenmiş şifre kodu arabelleğinin işaretçisi.
[in] encPasscodeLen
Şifrelenmiş şifre kodu uzunluğu.
[in] passcodeBuf
Şifresi çözülmüş şifre kodunu almak için arabelleğe işaret eden bir işaret.
[in] passcodeBufSize
Şifre Buf tarafından gösterilen arabelleğin boyutu.
[out] passcodeLen
Şifresi çözülen şifre kodunun uzunluğuna ayarlayın.
[in] groupKeyStore
Grup anahtarı deposu nesnesinin işaretçisi.
Değerleri Döndür
WEAVE_NO_ERROR
Başarıya merhaba.
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 olup olmadığı
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ğlanmazsa veya platform anahtarı deposu geçersiz anahtar parametreleri döndürürse de bu durum geçerli olabilir.
other
Platform anahtarı deposu API'leri tarafından döndürülen, platforma özgü diğer 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 kodunu çözün.

Ayrıntılar
Parametreler
[in] encPasscode
Şifrelenmiş şifre kodu arabelleğinin işaretçisi.
[in] encPasscodeLen
Şifrelenmiş şifre kodu uzunluğu.
[in] encKey
Şifre kodunu şifrelemek için kullanılacak anahtarın işaretçisi. Anahtarın uzunluğu, belirtilen yapılandırmayla ilişkili şifreleme algoritmasıyla eşleşmelidir.
[in] authKey
Şifre kodunun kimliğini doğrulamak için kullanılacak anahtarın işaretçisi. Anahtarın uzunluğu, belirtilen yapılandırmayla ilişkili kimlik doğrulama algoritmasıyla eşleşmelidir.
[in] fingerprintKey
Şifre kodu parmak izini oluşturmak için kullanılacak anahtarın işaretçisi. Anahtarın uzunluğu, belirtilen yapılandırmayla ilişkili parmak izi algoritmasıyla eşleşmelidir.
[in] passcodeBuf
Şifresi çözülmüş şifre kodunu almak için arabelleğe işaret eden bir işaret.
[in] passcodeBufSize
Şifre Buf tarafından gösterilen arabelleğin boyutu.
[out] passcodeLen
Şifresi çözülmüş şifre kodunun uzunluğuna ayarlayın.
Değerleri Döndür
WEAVE_NO_ERROR
Başarıya merhaba.
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 bir şifre kodunu ş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 atanmış benzersiz bir değer.
[in] passcode
Şifrelenecek şifre kodunun simgesi.
[in] passcodeLen
Şifre kodu uzunluğu.
[out] encPasscode
Şifrelenmiş şifre kodunu saklamak için arabelleğe işaret eden bir işaret.
[in] encPasscodeBufSize
Şifrelenmiş şifre kodu depolama arabelleğinin boyutu.
[out] encPasscodeLen
Şifrelenmiş şifre kodu uzunluğu.
[in] groupKeyStore
Grup anahtarı deposu nesnesinin işaretçisi.
Değerleri Döndür
WEAVE_NO_ERROR
Başarıya merhaba.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Belirtilen şifre kodu yapılandırması desteklenmiyorsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Sağlanan çıktı arabelleği, şifrelenmiş şifre kodu için çok küçükse.
WEAVE_ERROR_INVALID_KEY_ID
İstenen anahtarda geçersiz anahtar kimliği olup olmadığı
WEAVE_ERROR_INVALID_ARGUMENT
Sağlanan şifre kodu çok kısa veya çok uzunsa; Grup anahtar deposunun işaretçisi sağlanmazsa veya platform anahtarı deposu geçersiz anahtar parametreleri döndürürse de bu durum geçerli olabilir.
other
Platform anahtarı deposu API'leri tarafından döndürülen, platforma özgü diğer 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 bir şifre kodunu ş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 atanmış benzersiz bir değer.
[in] passcode
Şifrelenecek şifre kodunun simgesi.
[in] passcodeLen
Şifre kodu uzunluğu.
[in] encKey
Şifre kodunu şifrelemek için kullanılacak anahtarın işaretçisi. Anahtarın uzunluğu, belirtilen yapılandırmayla ilişkili şifreleme algoritmasıyla eşleşmelidir.
[in] authKey
Şifre kodunun kimliğini doğrulamak için kullanılacak anahtarın işaretçisi. Anahtarın uzunluğu, belirtilen yapılandırmayla ilişkili kimlik doğrulama algoritmasıyla eşleşmelidir.
[in] fingerprintKey
Şifre kodu parmak izini oluşturmak için kullanılacak anahtarın işaretçisi. Anahtarın uzunluğu, belirtilen yapılandırmayla ilişkili parmak izi algoritmasıyla eşleşmelidir.
[out] encPasscode
Şifrelenmiş şifre kodunun saklanacağı arabelleğe işaret eden bir işaret. Bu arabelleğin boyutu en az kPasscodeMaxEncryptedLen olmalıdır.
[in] encPasscodeBufSize
encPasscode tarafından işaret edilen arabelleğin boyutu.
[out] encPasscodeLen
Şifrelenmiş şifre kodu uzunluğu.
Değerleri Döndür
WEAVE_NO_ERROR
Başarıya merhaba.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Belirtilen şifre kodu yapılandırması desteklenmiyorsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Sağlanan çıktı 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ş şifre kodunun yapılandırma türünü alma.

Ayrıntılar
Parametreler
[in] encPasscode
İşaretçi, şifrelenmiş şifre kodunu içeren bir arabelleğe işaret eder.
[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şkili parmak izi değerini alın.

Ayrıntılar
Parametreler
[in] encPasscode
İşaretçi, şifrelenmiş şifre kodunu içeren bir arabelleğe işaret eder.
[in] encPasscodeLen
Şifrelenmiş şifre kodunun uzunluğu.
[in] fingerprintBuf
Parmak izi değerini almak için bir arabellek.
[in] fingerprintBufSize
Parmak izi Buf'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
İşaretçi, şifrelenmiş şifre kodunu içeren bir arabelleğe işaret eder.
[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ın.

Ayrıntılar
Parametreler
[in] encPasscode
İşaretçi, şifrelenmiş şifre kodunu içeren bir arabelleğe işaret eder.
[in] encPasscodeLen
Şifrelenmiş şifre kodunun uzunluğu.
[out] nonce
Şifrelenmiş bir şifre koduyla ilişkili tek seferlik değer.

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.