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

تستخدم عملية الإعداد رقم 2 لتشفير رمز المرور تشفير AES-128-ECB مع تفعيل ميزة تشفير 8 بايت HMAC-SHA-1 وبصمة إصبع 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 من "Nest Passcode EK and AK". عبارة.

kPasscodeFingerprintKeyDiversifier

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

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

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

الدوال

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
حجم المخزن المؤقت الذي أشار إليه الرمز passwordBuf.
[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
حجم المخزن المؤقت الذي أشار إليه الرمز passwordBuf.
[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
حجم المخزن المؤقت الذي يشار إليه بالبصمة الكربونية 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
)

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

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

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

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