nl::Weave::الملفات الشخصية::الأمان::رموز المرور

تحتوي مساحة الاسم هذه على جميع الواجهات ضمن Weave لمكتبة رموز مرور Weave ضمن الملف الشخصي لأمان Weave.

الملخّص

تعداد

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
تعداد
هناك أنواع ضبط مختلفة لتشفير كلمات المرور.
@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)
}
تعداد
تم دمج أحجام معلمات بروتوكول إدخال رمز المرور.

المتغيّرات

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
أداة تنويع المفاتيح المستخدمة لابتكار مفتاح تشفير Weave.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
أداة تنويع المفاتيح المستخدمة لابتكار مفتاح تشفير Weave.

الدوال

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
يجب فك رمز المرور الذي تم تشفيره باستخدام مخطط Nest Passcode Encryption.
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 Passcode Encryption.
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 Passcode.
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 Passcode.
GetEncryptedPasscodeConfig(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config)
تعرَّف على نوع ضبط رمز المرور المشفّر.
GetEncryptedPasscodeFingerprint(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen)
احصل على قيمة بصمة الإصبع المرتبطة برمز مرور مشفّر.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
احصل على رقم تعريف المفتاح المُستخدَم لتشفير رمز المرور المشفّر.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
احصل على القيمة غير المخصّصة المرتبطة برمز مرور مشفّر.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
عرض "صحيح" إذا كانت إعدادات تشفير رمز المرور التي تم إدخالها متوافقة مع واجهات برمجة التطبيقات لتشفير/فك التشفير.

الهياكل

nl::Weave::الملفات الشخصية::الأمان::رموز المرور::EncryptedPasscodeStrukt

تعداد

@278

 @278

هناك أنواع ضبط مختلفة لتشفير كلمات المرور.

أماكن إقامة
kPasscodeConfig1_KeyId

رقم تعريف المفتاح الوهمي المُستخدم لضبط رمز المرور التجريبي 1.

kPasscode_Config1_TEST_ONLY

لا يستخدم إعداد تشفير رمز المرور رقم 1 التشفير والمفاتيح السرية للمصادقة ورمز مرور بصمة الإصبع.

ويجب استخدام هذه الإعدادات لأغراض الاختبار فقط.

kPasscode_Config2

يستخدم إعداد تشفير رمز المرور رقم 2 تشفير AES-128-ECB مع سلامة HMAC-SHA-1 بحجم 8 بايت وبصمة إصبع HMAC-SHA-1 بحجم 8 بايت.

@279

 @279

تم دمج أحجام معلمات بروتوكول إدخال رمز المرور.

أماكن إقامة
kPasscodeAuthenticationKeyLen

طول مفتاح مصادقة رمز المرور (SHA-1).

kPasscodeAuthenticatorLen

طول مُصدِّق رمز المرور.

kPasscodeEncKeyDiversifierSize

حجم أداة تنويع مفاتيح تشفير رمز المرور.

kPasscodeEncryptionKeyLen

طول مفتاح تشفير رمز المرور (AES-128).

kPasscodeFingerprintKeyDiversifierSize

حجم أداة تنويع مفاتيح بصمة الإصبع لرمز المرور

kPasscodeFingerprintKeyLen

طول مفتاح بصمة رمز المرور (SHA-1).

kPasscodeFingerprintLen

طول بصمة رمز المرور

kPasscodeMaxEncryptedLen

الحد الأقصى لطول رمز المرور المشفّر.

kPasscodeMaxLen

الحد الأقصى لطول رمز المرور غير المشفر.

kPasscodePaddedLen

طول رمز المرور (مبطَّن بطول طول AES-128)

kPasscodeTotalDerivedKeyLen

طول مفتاح التشفير (التشفير وamp; ;ity)

المتغيّرات

kPasscodeEncKeyDiversifier

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

أداة تنويع المفاتيح المستخدمة لابتكار مفتاح تشفير Weave.

تمثل هذه القيمة أول 4 بايت من SHA-1 HasH من "Nest Passcode EK وAK".

رمز kPasscodeAppFordiver

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

أداة تنويع المفاتيح المستخدمة لابتكار مفتاح تشفير Weave.

تمثل هذه القيمة أول 4 بايت من SHA-1 HasH من "Nest Passcode EK وAK".

الدوال

رمز فك التشفير

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

يجب فك رمز المرور الذي تم تشفيره باستخدام مخطط Nest Passcode Encryption.

التفاصيل
المعلَمات
[in] encPasscode
مؤشر إلى المخزن المؤقت لرمز المرور المشفّر.
[in] encPasscodeLen
طول رمز المرور المشفّر
[in] passcodeBuf
مؤشر إلى المخزن المؤقت لتلقي رمز المرور الذي تم فك تشفيره.
[in] passcodeBufSize
حجم المخزن المؤقت الذي يُشار إليه برمز ISRCBuf.
[out] passcodeLen
اضبط طول رمز المرور غير المشفّر.
[in] groupKeyStore
مؤشر إلى عنصر تخزين مفتاح المجموعة.
قيم الإرجاع
WEAVE_NO_ERROR
النجاح.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
إذا كان إعداد رمز المرور المحدّد غير متاح.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
في حال تعذّرت مصادقة رمز المرور.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
في حال تعذُّر التحقُّق من بصمة الإصبع.
WEAVE_ERROR_INVALID_KEY_ID
إذا كان المفتاح المطلوب يحتوي على معرّف مفتاح غير صالح.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كان المخزن المؤقت ورمز المرور المزود صغيرًا جدًا.
WEAVE_ERROR_INVALID_ARGUMENT
إذا كان رمز المرور المشفّر قصيرًا جدًا أو طويلًا جدًا، أو إذا لم يتم إرسال المؤشر إلى ملف تخزين مفاتيح المجموعة أو إذا عرض مخزن مفاتيح النظام الأساسي معلَمات مفتاح غير صالحة،
other
الأخطاء الأخرى المتعلقة بالنظام الأساسي التي تعرضها واجهات برمجة تطبيقات مخزن مفاتيح النظام الأساسي.

رمز فك التشفير

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

التفاصيل
المعلَمات
[in] encPasscode
مؤشر إلى المخزن المؤقت لرمز المرور المشفّر.
[in] encPasscodeLen
طول رمز المرور المشفّر
[in] encKey
مؤشر إلى المفتاح الذي سيتم استخدامه لتشفير رمز المرور. يجب أن يتطابق طول المفتاح مع خوارزمية التشفير المرتبطة بالضبط المحدّد.
[in] authKey
مؤشر إلى المفتاح الذي سيتم استخدامه لمصادقة رمز المرور. يجب أن يتطابق طول المفتاح مع خوارزمية المصادقة المرتبطة بالضبط المحدّد.
[in] fingerprintKey
مؤشر للمفتاح ليتم استخدامه لإنشاء بصمة رمز المرور. يجب أن يتطابق طول المفتاح مع خوارزمية بصمات الأصابع المرتبطة بالضبط المحدّد.
[in] passcodeBuf
مؤشر إلى المخزن المؤقت لتلقي رمز المرور الذي تم فك تشفيره.
[in] passcodeBufSize
حجم المخزن المؤقت الذي يُشار إليه برمز ISRCBuf.
[out] passcodeLen
اضبط طول رمز المرور غير المشفّر.
قيم الإرجاع
WEAVE_NO_ERROR
النجاح.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
إذا كان إعداد رمز المرور المحدّد غير متاح.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
في حال تعذّرت مصادقة رمز المرور.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
في حال تعذُّر التحقُّق من بصمة الإصبع.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كان المخزن المؤقت ورمز المرور المزود صغيرًا جدًا.
WEAVE_ERROR_INVALID_ARGUMENT
إذا كان رمز المرور المشفّر قصيرًا جدًا أو طويلًا جدًا.

رمز المرور

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

التفاصيل
المعلَمات
[in] config
ضبط تشفير رمز المرور المراد استخدامه.
[in] keyId
رقم تعريف مفتاح تشفير رمز المرور المطلوب
[in] nonce
قيمة فريدة مُخصَّصة لرمز المرور المشفّر.
[in] passcode
مؤشر إلى رمز المرور المراد تشفيره.
[in] passcodeLen
طول رمز المرور
[out] encPasscode
مؤشر إلى المخزن المؤقت لتخزين رمز المرور المشفّر.
[in] encPasscodeBufSize
حجم المخزن المؤقت لتخزين رمز المرور المشفّر
[out] encPasscodeLen
طول رمز المرور المشفّر
[in] groupKeyStore
مؤشر إلى عنصر تخزين مفتاح المجموعة.
قيم الإرجاع
WEAVE_NO_ERROR
النجاح.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
إذا كان إعداد رمز المرور المحدّد غير متاح.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كان المخزن المؤقت للمخرجات صغيرًا جدًا بالنسبة إلى رمز المرور المشفّر.
WEAVE_ERROR_INVALID_KEY_ID
إذا كان المفتاح المطلوب يحتوي على معرّف مفتاح غير صالح.
WEAVE_ERROR_INVALID_ARGUMENT
إذا كان رمز المرور الذي تم إدخاله قصيرًا جدًا أو طويلًا جدًا، أو إذا لم يتم تقديم المؤشر إلى ملف تخزين مفاتيح المجموعة أو إذا عرض مخزن مفاتيح النظام الأساسي معلَمات مفتاح غير صالحة.
other
الأخطاء الأخرى المتعلقة بالنظام الأساسي التي تعرضها واجهات برمجة تطبيقات مخزن مفاتيح النظام الأساسي.

رمز المرور

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

التفاصيل
المعلَمات
[in] config
إعدادات تشفير رمز مرور Weave المراد استخدامه.
[in] keyId
رقم تعريف مفتاح تشفير رمز المرور المطلوب
[in] nonce
قيمة فريدة مُخصَّصة لرمز المرور.
[in] passcode
مؤشر إلى رمز المرور المراد تشفيره.
[in] passcodeLen
طول رمز المرور
[in] encKey
مؤشر إلى المفتاح الذي سيتم استخدامه لتشفير رمز المرور. يجب أن يتطابق طول المفتاح مع خوارزمية التشفير المرتبطة بالضبط المحدّد.
[in] authKey
مؤشر إلى المفتاح الذي سيتم استخدامه لمصادقة رمز المرور. يجب أن يتطابق طول المفتاح مع خوارزمية المصادقة المرتبطة بالضبط المحدّد.
[in] fingerprintKey
مؤشر للمفتاح ليتم استخدامه لإنشاء بصمة رمز المرور. يجب أن يتطابق طول المفتاح مع خوارزمية بصمات الأصابع المرتبطة بالضبط المحدّد.
[out] encPasscode
مؤشر إلى المخزن المؤقت الذي سيتم تخزين رمز المرور المشفّر فيه. يجب ألا يقل حجم هذا المخزن المؤقت عن kPasscodeMaxEncryptedLen.
[in] encPasscodeBufSize
حجم المخزن المؤقت المُشار إليه من خلال encPasscode.
[out] encPasscodeLen
طول رمز المرور المشفّر
قيم الإرجاع
WEAVE_NO_ERROR
النجاح.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
إذا كان إعداد رمز المرور المحدّد غير متاح.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كان المخزن المؤقت للمخرجات صغيرًا جدًا بالنسبة إلى رمز المرور المشفّر.
WEAVE_ERROR_INVALID_ARGUMENT
إذا كان رمز المرور الذي تم إدخاله قصيرًا جدًا أو طويلًا جدًا.

GetEncryptedPasscodeConfig

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

تعرَّف على نوع ضبط رمز المرور المشفّر.

التفاصيل
المعلَمات
[in] encPasscode
أشِر إلى المخزن المؤقت الذي يحتوي على رمز المرور المشفّر.
[in] encPasscodeLen
طول رمز المرور المشفّر
[out] config
إعدادات ترميز رمز مرور Weave التي يستخدمها رمز المرور المشفّر.

الملف المرجعي لـ GetEncryptedPasscode

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

احصل على قيمة بصمة الإصبع المرتبطة برمز مرور مشفّر.

التفاصيل
المعلَمات
[in] encPasscode
أشِر إلى المخزن المؤقت الذي يحتوي على رمز المرور المشفّر.
[in] encPasscodeLen
طول رمز المرور المشفّر
[in] fingerprintBuf
مخزن مؤقت لتلقي قيمة بصمة الإصبع.
[in] fingerprintBufSize
حجم المخزن المؤقت الذي يُشار إليه من خلال الملف المرجعيBuf.
[out] fingerprintLen
طول قيمة بصمة الإصبع المعروضة.

GetEncryptedPasscodeKeyId

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

احصل على رقم تعريف المفتاح المُستخدَم لتشفير رمز المرور المشفّر.

التفاصيل
المعلَمات
[in] encPasscode
أشِر إلى المخزن المؤقت الذي يحتوي على رمز المرور المشفّر.
[in] encPasscodeLen
طول رمز المرور المشفّر
[out] keyId
معرّف المفتاح المستخدَم لتشفير رمز المرور المشفّر.

GetEncryptedPasscodeNonce

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

احصل على القيمة غير المخصّصة المرتبطة برمز مرور مشفّر.

التفاصيل
المعلَمات
[in] encPasscode
أشِر إلى المخزن المؤقت الذي يحتوي على رمز المرور المشفّر.
[in] encPasscodeLen
طول رمز المرور المشفّر
[out] nonce
القيمة غير المخصّصة المرتبطة برمز مرور مشفّر

تكوين الترميز isSupportedPasscode

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

عرض "صحيح" إذا كانت إعدادات تشفير رمز المرور التي تم إدخالها متوافقة مع واجهات برمجة التطبيقات لتشفير/فك التشفير.