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

تشمل مساحة الاسم هذه جميع الواجهات ضمن 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
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
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".
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".
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)
احصل على القيمة nonce المرتبطة برمز مرور مشفّر.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
تُعرض القيمة "صحيح" إذا كانت إعدادات تشفير رمز المرور المُقدَّمة متوافقة مع واجهات برمجة تطبيقات تشفير رمز المرور أو فك التشفير.

الهياكل

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

عمليات التعداد

@278

 @278

يتم ربط أنواع إعدادات تشفير رمز المرور.

أماكن إقامة
kPasscodeConfig1_KeyId

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

kPasscode_Config1_TEST_ONLY

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

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

kPasscode_Config2

تستخدم الإعدادات الثانية لتشفير رمز المرور تشفير 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

طول مفتاح إجمالي رمز المرور (التشفير والتكامل).

المتغيرات

kPasscodeEncKeyDiversifier

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

متنوّع المفتاح المستخدم في اشتقاق مفتاح تشفير رمز مرور Weave.

تمثل هذه القيمة أول 4 بايت من عبارة SHA-1 HASH من عبارة "EK وAK لرمز مرور Nest".

kPasscodeFingerprintKeyDiversifier

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

متنوّع المفتاح المستخدم في اشتقاق مفتاح تشفير رمز مرور Weave.

تمثل هذه القيمة أول 4 بايت من عبارة SHA-1 HASH من عبارة "EK وAK لرمز مرور Nest".

الدوال

DecryptPasscode

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

فك تشفير رمز مرور تم تشفيره باستخدام نظام تشفير رمز مرور Nest

التفاصيل
المَعلمات
[in] encPasscode
مؤشر إلى المخزن المؤقت لرمز المرور المشفر.
[in] encPasscodeLen
طول رمز المرور المشفّر
[in] passcodeBuf
مؤشر يشير إلى مخزن مؤقّت لتلقّي رمز المرور الذي تم فك تشفيره
[in] passcodeBufSize
حجم المخزن المؤقت الذي يتم التوجيه إليه من خلال passwordsBuf.
[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
الأخطاء الأخرى الخاصة بالنظام الأساسي التي تعرضها واجهات برمجة تطبيقات ملف تخزين مفاتيح النظام الأساسي.

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

التفاصيل
المَعلمات
[in] encPasscode
مؤشر إلى المخزن المؤقت لرمز المرور المشفر.
[in] encPasscodeLen
طول رمز المرور المشفّر
[in] encKey
مؤشر إلى المفتاح المراد استخدامه لتشفير رمز المرور يجب أن يتطابق طول المفتاح مع خوارزمية التشفير المرتبطة بالإعداد المحدّد.
[in] authKey
مؤشر للمفتاح المراد استخدامه لمصادقة رمز المرور. يجب أن يتطابق طول المفتاح مع خوارزمية المصادقة المرتبطة بالإعداد المحدَّد.
[in] fingerprintKey
مؤشر للمفتاح المطلوب استخدامه لإنشاء بصمة رمز المرور. يجب أن يتطابق طول المفتاح مع خوارزمية بصمة الإصبع المرتبطة بالإعداد المحدّد.
[in] passcodeBuf
مؤشر يشير إلى مخزن مؤقّت لتلقّي رمز المرور الذي تم فك تشفيره
[in] passcodeBufSize
حجم المخزن المؤقت الذي يتم التوجيه إليه من خلال passwordsBuf.
[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
ما إذا كان رمز المرور المشفَّرة قصيرًا جدًا أو طويلاً جدًا

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

التفاصيل
المَعلمات
[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
الأخطاء الأخرى الخاصة بالنظام الأساسي التي تعرضها واجهات برمجة تطبيقات ملف تخزين مفاتيح النظام الأساسي.

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

التفاصيل
المَعلمات
[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 الذي يستخدمه رمز المرور المشفّر.

GetEncryptedPasscodeFingerprint

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
حجم المخزن المؤقت المشار إليه من خلال printBuf.
[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
)

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

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

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

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