nl:: بافت:: پروفایل ها:: امنیت:: رمزهای عبور

این فضای نام شامل تمام رابط های موجود در Weave برای کتابخانه رمزهای Weave در نمایه امنیتی Weave است.

خلاصه

شمارش ها

@278 {
kPasscode_Config1_TEST_ONLY = 0x01,
kPasscode_Config2 = 0x02,
kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum
انواع پیکربندی رمزگذاری رمز عبور را ببافید.
@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
اندازه پارامترهای پروتکل رمزگذاری رمز عبور را ببافید.

متغیرها

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 رمزگذاری شده است، رمزگشایی کنید.
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 رمزگذاری شده است، رمزگشایی کنید.
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)
مقدار nonce مربوط به یک رمز عبور رمزگذاری شده را دریافت کنید.
IsSupportedPasscodeEncryptionConfig (uint8_t config)
bool
اگر پیکربندی رمزگذاری گذرواژه ارائه شده توسط APIهای رمزگذاری/رمزگشایی رمز عبور پشتیبانی شود، درست برمی‌گردد.

سازه ها

nl:: بافت:: پروفایل ها:: امنیت:: رمز عبور:: EncryptedPasscodeStruct

شمارش ها

@278

 @278

انواع پیکربندی رمزگذاری رمز عبور را ببافید.

خواص
kPasscodeConfig1_KeyId

شناسه کلید ساختگی برای پیکربندی رمز عبور آزمایشی شماره 1 استفاده می شود.

kPasscode_Config1_TEST_ONLY

پیکربندی رمزگذاری رمز عبور شماره 1 از رمزگذاری و کلیدهای مخفی برای احراز هویت و اثرانگشت رمز عبور استفاده نمی‌کند.

این پیکربندی باید فقط برای اهداف تست استفاده شود.

kPasscode_Config2

پیکربندی رمزگذاری رمز عبور شماره 2 از رمزگذاری AES-128-ECB با یکپارچگی 8 بایتی HMAC-SHA-1 و اثر انگشت 8 بایتی HMAC-SHA-1 استفاده می کند.

@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" را نشان می دهد.

توابع

رمزگشایی رمز عبور

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

رمز عبوری را که با استفاده از طرح رمزگذاری Nest Passcode رمزگذاری شده است، رمزگشایی کنید.

جزئیات
پارامترها
[in] encPasscode
یک اشاره گر به بافر رمز عبور رمزگذاری شده.
[in] encPasscodeLen
طول رمز عبور رمزگذاری شده
[in] passcodeBuf
اشاره گر به بافر برای دریافت رمز رمزگشایی شده.
[in] passcodeBufSize
اندازه بافر که توسط passcodeBuf به آن اشاره شده است.
[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
سایر خطاهای پلتفرم خاص که توسط API های فروشگاه کلید پلتفرم برگردانده شده اند.

رمزگشایی رمز عبور

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 رمزگذاری شده است، رمزگشایی کنید.

جزئیات
پارامترها
[in] encPasscode
یک اشاره گر به بافر رمز عبور رمزگذاری شده.
[in] encPasscodeLen
طول رمز عبور رمزگذاری شده
[in] encKey
اشاره گر به کلیدی که برای رمزگذاری رمز عبور استفاده می شود. طول کلید باید با الگوریتم رمزگذاری مرتبط با پیکربندی مشخص شده مطابقت داشته باشد.
[in] authKey
اشاره گر به کلیدی که برای احراز هویت رمز عبور استفاده می شود. طول کلید باید با الگوریتم احراز هویت مرتبط با پیکربندی مشخص شده مطابقت داشته باشد.
[in] fingerprintKey
یک اشاره گر به کلیدی که برای ایجاد اثر انگشت رمز عبور استفاده می شود. طول کلید باید با الگوریتم اثر انگشت مرتبط با پیکربندی مشخص شده مطابقت داشته باشد.
[in] passcodeBuf
اشاره گر به بافر برای دریافت رمز رمزگشایی شده.
[in] passcodeBufSize
اندازه بافر که توسط passcodeBuf به آن اشاره شده است.
[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
سایر خطاهای پلتفرم خاص که توسط API های فروشگاه کلید پلتفرم برگردانده شده اند.

رمز عبور را رمزگذاری کنید

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 که توسط رمز عبور رمزگذاری شده استفاده می شود.

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
اندازه بافر که با انگشت انگشت اشاره شده است.
[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
)

اگر پیکربندی رمزگذاری گذرواژه ارائه شده توسط APIهای رمزگذاری/رمزگشایی رمز عبور پشتیبانی شود، درست برمی‌گردد.