הצפנה – פלטפורמה

המודול הזה כולל את הפשטת הפלטפורמה עבור Crypto.

סיכום

ספירות

anonymous enum{
  OT_CRYPTO_KEY_USAGE_NONE = 0,
  OT_CRYPTO_KEY_USAGE_EXPORT = 1 << 0,
  OT_CRYPTO_KEY_USAGE_ENCRYPT = 1 << 1,
  OT_CRYPTO_KEY_USAGE_DECRYPT = 1 << 2,
  OT_CRYPTO_KEY_USAGE_SIGN_HASH = 1 << 3,
  OT_CRYPTO_KEY_USAGE_VERIFY_HASH = 1 << 4
}
טיפוסים בני מנייה (enum)
מגדיר את הסימונים לשימוש במפתחות.
otCryptoKeyAlgorithm{
  OT_CRYPTO_KEY_ALG_VENDOR,
  OT_CRYPTO_KEY_ALG_AES_ECB,
  OT_CRYPTO_KEY_ALG_HMAC_SHA_256,
  OT_CRYPTO_KEY_ALG_ECDSA
}
טיפוסים בני מנייה (enum)
מגדיר את האלגוריתמים העיקריים.
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
טיפוסים בני מנייה (enum)
הגדרת סוגי האחסון של המפתחות.
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC,
  OT_CRYPTO_KEY_TYPE_ECDSA
}
טיפוסים בני מנייה (enum)
מגדיר את סוגי המפתחות.

ערכי דף

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
סוג הנתונים הזה מייצג את ההפניה למפתח.
otPlatCryptoEcdsaKeyPair typedef
otPlatCryptoEcdsaPublicKey typedef
otPlatCryptoEcdsaSignature typedef
otPlatCryptoSha256Hash typedef
מייצג גיבוב (hash) מסוג SHA-256.

משתנים

OT_TOOL_PACKED_END

פונקציות

otPlatCryptoAesEncrypt(otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
הצפן את הנתונים הנתונים.
otPlatCryptoAesFree(otCryptoContext *aContext)
ללא הקשר של AES.
otPlatCryptoAesInit(otCryptoContext *aContext)
מאתחלים את פעולת ה-AES.
otPlatCryptoAesSetKey(otCryptoContext *aContext, const otCryptoKey *aKey)
הגדרת המפתח לפעולת AES.
otPlatCryptoDestroyKey(otCryptoKeyRef aKeyRef)
להשמיד מפתח ששמור במודעות לשירות הציבור.
otPlatCryptoEcdsaExportPublicKey(otCryptoKeyRef aKeyRef, otPlatCryptoEcdsaPublicKey *aPublicKey)
מקבלים את המפתח הציבורי המשויך מההפניה למפתח שהועבר.
otPlatCryptoEcdsaGenerateAndImportKey(otCryptoKeyRef aKeyRef)
יצירה וייבוא של זוג מפתחות ECDSA חדש במועד שנקבע.
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
יוצרים ומאכלסים את מאגר הפלט עם זוג מפתחות חדש של ECDSA.
otPlatCryptoEcdsaGetPublicKey(const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
מקבלים את המפתח הציבורי המשויך מהקשר הקלט.
otPlatCryptoEcdsaSign(const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
חישוב החתימה של ECDSA להודעה מגובבת באמצעות המפתח הפרטי מהקשר הקלט.
otPlatCryptoEcdsaSignUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
חישוב החתימה של ECDSA להודעה מגובבת באמצעות ההפניה למפתח שהועברה.
otPlatCryptoEcdsaVerify(const otPlatCryptoEcdsaPublicKey *aPublicKey, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
משתמשים במפתח מהקשר הקלט כדי לאמת את חתימת ה-ECDSA של הודעה מגובבת.
otPlatCryptoEcdsaVerifyUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
משתמשים ב-keyref כדי לאמת את חתימת ה-ECDSA של הודעה מגובבת.
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
ייצוא מפתח שמאוחסן במודעות לשירות הציבור.
otPlatCryptoHasKey(otCryptoKeyRef aKeyRef)
bool
בדוק אם להפניה למפתח שעבר יש מפתח משויך במודעות PSA ITS.
otPlatCryptoHkdfDeinit(otCryptoContext *aContext)
מבטלים את האתחול של ההקשר של HKDF.
otPlatCryptoHkdfExpand(otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
ביצוע שלב הרחבת HKDF.
otPlatCryptoHkdfExtract(otCryptoContext *aContext, const uint8_t *aSalt, uint16_t aSaltLength, const otCryptoKey *aInputKey)
ביצוע שלב חילוץ HKDF.
otPlatCryptoHkdfInit(otCryptoContext *aContext)
מפעילים את ההקשר ל-HKDF.
otPlatCryptoHmacSha256Deinit(otCryptoContext *aContext)
ביטול האתחול של פעולת ה-HMAC.
otPlatCryptoHmacSha256Finish(otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
משלימים את פעולת ה-HMAC.
otPlatCryptoHmacSha256Init(otCryptoContext *aContext)
מאתחלים את פעולת ה-HMAC.
otPlatCryptoHmacSha256Start(otCryptoContext *aContext, const otCryptoKey *aKey)
מתחילים את פעולת HMAC.
otPlatCryptoHmacSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
יש לעדכן את פעולת ה-HMAC בקלט חדש.
otPlatCryptoImportKey(otCryptoKeyRef *aKeyRef, otCryptoKeyType aKeyType, otCryptoKeyAlgorithm aKeyAlgorithm, int aKeyUsage, otCryptoKeyStorage aKeyPersistence, const uint8_t *aKey, size_t aKeyLen)
ייבא מפתח אל תשדירי שירות (PSA ITS).
otPlatCryptoInit(void)
void
מפעילים את מודול הקריפטו.
otPlatCryptoPbkdf2GenerateKey(const uint8_t *aPassword, uint16_t aPasswordLen, const uint8_t *aSalt, uint16_t aSaltLen, uint32_t aIterationCounter, uint16_t aKeyLen, uint8_t *aKey)
מבצעים PKCS#5 PBKDF2 באמצעות CMAC (AES-CMAC-PRF-128).
otPlatCryptoRandomDeinit(void)
void
מחולל מספרים פסאודו אקראיים מאובטחים מבחינה קריפטוגרפית (CSPRNG) – ביטול אתחול.
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
מילוי מאגר נתונים זמני בבייטים אקראיים מאובטחים מבחינה קריפטוגרפית.
otPlatCryptoRandomInit(void)
void
הפעלה של מחולל מספרים פסאודו אקראיים מאובטחים מבחינה קריפטוגרפית (CSPRNG).
otPlatCryptoSha256Deinit(otCryptoContext *aContext)
מבטלים את האתחול של הפעולה SHA-256.
otPlatCryptoSha256Finish(otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize)
מסיימים את פעולת SHA-256.
otPlatCryptoSha256Init(otCryptoContext *aContext)
מפעילים את פעולת SHA-256.
otPlatCryptoSha256Start(otCryptoContext *aContext)
מתחילים את פעולת SHA-256.
otPlatCryptoSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
עדכון פעולת SHA-256 עם קלט חדש.

מבנים

otCryptoContext

שומר את אובייקט ההקשר עבור ממשקי ה-API של הפלטפורמה.

otCryptoKey

מייצג את חומר המפתח הנדרש לפעולות הצפנה.

otPlatCryptoEcdsaKeyPair

מייצג זוג מפתחות ECDSA (מפתחות ציבוריים ופרטיים).

otPlatCryptoEcdsaPublicKey

מייצג מפתח ציבורי ECDSA.

otPlatCryptoEcdsaSignature

מייצג חתימה של ECDSA.

otPlatCryptoSha256Hash

מייצג גיבוב (hash) מסוג SHA-256.

ספירות

טיפוסים אנונימיים

 anonymous enum

מגדיר את הסימונים לשימוש במפתחות.

תכונות
OT_CRYPTO_KEY_USAGE_DECRYPT

שימוש במפתח: AES ECB.

OT_CRYPTO_KEY_USAGE_ENCRYPT

שימוש במפתח: הצפנה (מוגדר על ידי ספק).

OT_CRYPTO_KEY_USAGE_EXPORT

שימוש במפתח: ניתן לייצא את המפתח.

OT_CRYPTO_KEY_USAGE_NONE

שימוש במפתחות: השימוש במפתח ריק.

OT_CRYPTO_KEY_USAGE_SIGN_HASH

שימוש במפתח: Sign Hash.

OT_CRYPTO_KEY_USAGE_VERIFY_HASH

שימוש במפתח: אימות גיבוב (hash).

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

מגדיר את האלגוריתמים העיקריים.

תכונות
OT_CRYPTO_KEY_ALG_AES_ECB

אלגוריתם מפתח: AES ECB.

OT_CRYPTO_KEY_ALG_ECDSA

אלגוריתם מפתח: ECDSA.

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

אלגוריתם מפתח: HMAC SHA-256.

OT_CRYPTO_KEY_ALG_VENDOR

אלגוריתם מפתח: מוגדר ספק.

otCryptoKeyStorage

 otCryptoKeyStorage

הגדרת סוגי האחסון של המפתחות.

תכונות
OT_CRYPTO_KEY_STORAGE_PERSISTENT

מפתח מתמיד (Key): המפתח הוא מתמיד.

OT_CRYPTO_KEY_STORAGE_VOLATILE

Key assistence (המפתח מתמיד): המפתח תנודתי.

otCryptoKeyType

 otCryptoKeyType

מגדיר את סוגי המפתחות.

תכונות
OT_CRYPTO_KEY_TYPE_AES

סוג מפתח: AES.

OT_CRYPTO_KEY_TYPE_ECDSA

סוג מפתח: ECDSA.

OT_CRYPTO_KEY_TYPE_HMAC

סוג מפתח: HMAC.

OT_CRYPTO_KEY_TYPE_RAW

סוג מפתח: נתונים גולמיים.

ערכי דף

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

סוג הנתונים הזה מייצג את ההפניה למפתח.

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsaSignature

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

מייצג גיבוב (hash) מסוג SHA-256.

משתנים

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

פונקציות

otPlatCryptoAesEncrypt

otError otPlatCryptoAesEncrypt(
  otCryptoContext *aContext,
  const uint8_t *aInput,
  uint8_t *aOutput
)

הצפן את הנתונים הנתונים.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת AES.
[in] aInput
מצביעים על מאגר הקלט.
[in] aOutput
מצביעים על מאגר הנתונים הזמני של הפלט.
ערכים מוחזרים
OT_ERROR_NONE
הקובץ aInput הוצפן בהצלחה.
OT_ERROR_FAILED
ההצפנה של aInput נכשלה.
OT_ERROR_INVALID_ARGS
aContext או aKey או aOutput היו NULL

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

ללא הקשר של AES.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת AES.
ערכים מוחזרים
OT_ERROR_NONE
הקשר של תקן AES שוחרר בהצלחה.
OT_ERROR_FAILED
שחרור ההקשר של שיתוף AES נכשל.
OT_ERROR_INVALID_ARGS
הערך של aContext היה NULL

otPlatCryptoAesInit

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

מאתחלים את פעולת ה-AES.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת AES.
ערכים מוחזרים
OT_ERROR_NONE
פעולת AES הופעלה בהצלחה.
OT_ERROR_FAILED
לא הצלחנו להתחיל את פעולת AES.
OT_ERROR_INVALID_ARGS
הערך של aContext היה NULL
OT_ERROR_NO_BUFS
לא ניתן להקצות את ההקשר.

otPlatCryptoAesSetKey

otError otPlatCryptoAesSetKey(
  otCryptoContext *aContext,
  const otCryptoKey *aKey
)

הגדרת המפתח לפעולת AES.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת AES.
[out] aKey
מפתח לשימוש לפעולת AES.
ערכים מוחזרים
OT_ERROR_NONE
המפתח לפעולת AES הוגדר בהצלחה.
OT_ERROR_FAILED
הגדרת המפתח לפעולת AES נכשלה.
OT_ERROR_INVALID_ARGS
הערך של aContext או של aKey היה NULL

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

להשמיד מפתח ששמור במודעות לשירות הציבור.

פרטים
פרמטרים
[in] aKeyRef
יש להשמיד את המפתח
ערכים מוחזרים
OT_ERROR_NONE
המפתח השמד בהצלחה.
OT_ERROR_FAILED
השמדת המפתח נכשלה.

otPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

מקבלים את המפתח הציבורי המשויך מההפניה למפתח שהועבר.

המפתח הציבורי מאוחסן באופן שונה בהתאם לספריית הקצה העורפי של ההצפנה שבה נעשה שימוש (OPENthread_CONFIG_CRYPTO_LIB).

צריך לוודא שה-API הזה מחזיר את המפתח הציבורי כייצוג של רצף בייטים של נקודת עקומה לא דחוסה (RFC 6605 - sec 4)

פרטים
פרמטרים
[in] aKeyRef
הפניה למפתח לחריץ שבו מאוחסן זוג המפתחות.
[out] aPublicKey
הפניה למבנה של מפתח ציבורי ECDSA כדי לאחסן את המפתח הציבורי.
ערכים מוחזרים
OT_ERROR_NONE
המפתח הציבורי אוחזר בהצלחה, ו-aBuffer מתעדכן.
OT_ERROR_PARSE
לא ניתן היה לנתח את פורמט DER של זוג המפתחות (פורמט לא חוקי).
OT_ERROR_INVALID_ARGS
הערך של aContext הוא NULL.

otPlatCryptoEcdsaGenerateAndImportKey

otError otPlatCryptoEcdsaGenerateAndImportKey(
  otCryptoKeyRef aKeyRef
)

יצירה וייבוא של זוג מפתחות ECDSA חדש במועד שנקבע.

פרטים
פרמטרים
[in] aKeyRef
הפניה למפתח לחריץ שבו מאוחסן זוג המפתחות.
ערכים מוחזרים
OT_ERROR_NONE
זוג מפתחות חדש נוצר בהצלחה.
OT_ERROR_NO_BUFS
נכשלה הקצאת מאגר נתונים זמני ליצירת מפתחות.
OT_ERROR_NOT_CAPABLE
התכונה לא נתמכת.
OT_ERROR_FAILED
יצירת זוג המפתחות נכשלה.

otPlatCryptoEcdsaGenerateKey

otError otPlatCryptoEcdsaGenerateKey(
  otPlatCryptoEcdsaKeyPair *aKeyPair
)

יוצרים ומאכלסים את מאגר הפלט עם זוג מפתחות חדש של ECDSA.

פרטים
פרמטרים
[out] aKeyPair
מצביע על מבנה של זוג מפתחות ECDSA כדי לאחסן את זוג המפתחות שנוצר.
ערכים מוחזרים
OT_ERROR_NONE
זוג מפתחות חדש נוצר בהצלחה.
OT_ERROR_NO_BUFS
נכשלה הקצאת מאגר נתונים זמני ליצירת מפתחות.
OT_ERROR_NOT_CAPABLE
התכונה לא נתמכת.
OT_ERROR_FAILED
יצירת זוג המפתחות נכשלה.

otPlatCryptoEcdsaGetPublicKey

otError otPlatCryptoEcdsaGetPublicKey(
  const otPlatCryptoEcdsaKeyPair *aKeyPair,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

מקבלים את המפתח הציבורי המשויך מהקשר הקלט.

פרטים
פרמטרים
[in] aKeyPair
מצביע למבנה של זוג מפתחות ECDSA שבו שמור זוג המפתחות.
[out] aPublicKey
הפניה למבנה של מפתח ציבורי ECDSA כדי לאחסן את המפתח הציבורי.
ערכים מוחזרים
OT_ERROR_NONE
המפתח הציבורי אוחזר בהצלחה, ו-aBuffer מתעדכן.
OT_ERROR_PARSE
לא ניתן היה לנתח את פורמט DER של זוג המפתחות (פורמט לא חוקי).
OT_ERROR_INVALID_ARGS
הערך של aContext הוא NULL.

otPlatCryptoEcdsaSign

otError otPlatCryptoEcdsaSign(
  const otPlatCryptoEcdsaKeyPair *aKeyPair,
  const otPlatCryptoSha256Hash *aHash,
  otPlatCryptoEcdsaSignature *aSignature
)

חישוב החתימה של ECDSA להודעה מגובבת באמצעות המפתח הפרטי מהקשר הקלט.

משתמשת בהליך הדטרמיניסטי ליצירת חתימה דיגיטלית מ-RFC 6979.

פרטים
פרמטרים
[in] aKeyPair
מצביע למבנה של זוג מפתחות ECDSA שבו שמור זוג המפתחות.
[in] aHash
מצביע על מבנה גיבוב (hash) מסוג SHA-256 שבו נשמר ערך הגיבוב לחישוב החתימה.
[out] aSignature
הפניה למבנה של חתימה ב-ECDSA כדי ליצור פלט של החתימה המחושבת.
ערכים מוחזרים
OT_ERROR_NONE
החתימה חושבה בהצלחה, aSignature עודכנה.
OT_ERROR_PARSE
לא ניתן היה לנתח את פורמט DER של זוג המפתחות (פורמט לא חוקי).
OT_ERROR_NO_BUFS
נכשלה הקצאת מאגר נתונים זמני לחישוב החתימה.
OT_ERROR_INVALID_ARGS
הערך של aContext הוא NULL.

otPlatCryptoEcdsaSignUsingKeyRef

otError otPlatCryptoEcdsaSignUsingKeyRef(
  otCryptoKeyRef aKeyRef,
  const otPlatCryptoSha256Hash *aHash,
  otPlatCryptoEcdsaSignature *aSignature
)

חישוב החתימה של ECDSA להודעה מגובבת באמצעות ההפניה למפתח שהועברה.

משתמשת בהליך הדטרמיניסטי ליצירת חתימה דיגיטלית מ-RFC 6979.

פרטים
פרמטרים
[in] aKeyRef
הפניה למפתח לחריץ שבו מאוחסן זוג המפתחות.
[in] aHash
מצביע על מבנה גיבוב (hash) מסוג SHA-256 שבו נשמר ערך הגיבוב לחישוב החתימה.
[out] aSignature
הפניה למבנה של חתימה ב-ECDSA כדי ליצור פלט של החתימה המחושבת.
ערכים מוחזרים
OT_ERROR_NONE
החתימה חושבה בהצלחה, aSignature עודכנה.
OT_ERROR_PARSE
לא ניתן היה לנתח את פורמט DER של זוג המפתחות (פורמט לא חוקי).
OT_ERROR_NO_BUFS
נכשלה הקצאת מאגר נתונים זמני לחישוב החתימה.
OT_ERROR_INVALID_ARGS
הערך של aContext הוא NULL.

otPlatCryptoEcdsaVerify

otError otPlatCryptoEcdsaVerify(
  const otPlatCryptoEcdsaPublicKey *aPublicKey,
  const otPlatCryptoSha256Hash *aHash,
  const otPlatCryptoEcdsaSignature *aSignature
)

משתמשים במפתח מהקשר הקלט כדי לאמת את חתימת ה-ECDSA של הודעה מגובבת.

פרטים
פרמטרים
[in] aPublicKey
הפניה למבנה של מפתח ציבורי ECDSA שבו שמור המפתח הציבורי לאימות החתימה.
[in] aHash
מצביע על מבנה גיבוב (hash) מסוג SHA-256 שבו מאוחסן ערך הגיבוב לאימות החתימה.
[in] aSignature
הפניה למבנה של חתימה ב-ECDSA שבו נשמר ערך החתימה שמיועד לאימות.
ערכים מוחזרים
OT_ERROR_NONE
החתימה אומתה בהצלחה.
OT_ERROR_SECURITY
החתימה לא חוקית.
OT_ERROR_INVALID_ARGS
המפתח או הגיבוב לא חוקיים.
OT_ERROR_NO_BUFS
נכשלה הקצאת מאגר נתונים זמני לאימות החתימה.

otPlatCryptoEcdsaVerifyUsingKeyRef

otError otPlatCryptoEcdsaVerifyUsingKeyRef(
  otCryptoKeyRef aKeyRef,
  const otPlatCryptoSha256Hash *aHash,
  const otPlatCryptoEcdsaSignature *aSignature
)

משתמשים ב-keyref כדי לאמת את חתימת ה-ECDSA של הודעה מגובבת.

פרטים
פרמטרים
[in] aKeyRef
הפניה למפתח לחריץ שבו מאוחסן זוג המפתחות.
[in] aHash
מצביע על מבנה גיבוב (hash) מסוג SHA-256 שבו מאוחסן ערך הגיבוב לאימות החתימה.
[in] aSignature
הפניה למבנה של חתימה ב-ECDSA שבו נשמר ערך החתימה שמיועד לאימות.
ערכים מוחזרים
OT_ERROR_NONE
החתימה אומתה בהצלחה.
OT_ERROR_SECURITY
החתימה לא חוקית.
OT_ERROR_INVALID_ARGS
המפתח או הגיבוב לא חוקיים.
OT_ERROR_NO_BUFS
נכשלה הקצאת מאגר נתונים זמני לאימות החתימה.

otPlatCryptoExportKey

otError otPlatCryptoExportKey(
  otCryptoKeyRef aKeyRef,
  uint8_t *aBuffer,
  size_t aBufferLen,
  size_t *aKeyLen
)

ייצוא מפתח שמאוחסן במודעות לשירות הציבור.

פרטים
פרמטרים
[in] aKeyRef
ה-ref של המפתח שמשמש לפעולות הצפנה.
[out] aBuffer
מצביעים על מאגר הנתונים הזמני שבו יש לייצא את המפתח.
[in] aBufferLen
משך הזמן במאגר הנתונים הזמני שהועבר לאחסון המפתח שיוצא.
[out] aKeyLen
מצביע על מנת להחזיר את אורך המפתח המיוצא.
ערכים מוחזרים
OT_ERROR_NONE
הייצוא של aKeyRef הסתיים בהצלחה.
OT_ERROR_FAILED
הייצוא של aKeyRef נכשל.
OT_ERROR_INVALID_ARGS
הערך של aBuffer היה NULL

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

בדוק אם להפניה למפתח שעבר יש מפתח משויך במודעות PSA ITS.

פרטים
פרמטרים
[in] aKeyRef
מהו סיכום המפתח שצריך לבדוק.
ערכים מוחזרים
TRUE
יש מפתח שמשויך אל aKeyRef.
FALSE
אין מפתח שמשויך אל aKeyRef.

otPlatCryptoHkdfDeinit

otError otPlatCryptoHkdfDeinit(
  otCryptoContext *aContext
)

מבטלים את האתחול של ההקשר של HKDF.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת HKDF.
ערכים מוחזרים
OT_ERROR_NONE
פעולת HKDF בוטלה בהצלחה.
OT_ERROR_FAILED
פעולת HKDF שלא אותחלה נכשלה.
OT_ERROR_INVALID_ARGS
הערך של aContext היה NULL

otPlatCryptoHkdfExpand

otError otPlatCryptoHkdfExpand(
  otCryptoContext *aContext,
  const uint8_t *aInfo,
  uint16_t aInfoLength,
  uint8_t *aOutputKey,
  uint16_t aOutputKeyLength
)

ביצוע שלב הרחבת HKDF.

פרטים
פרמטרים
[in] aContext
הקשר פעולה לפעולת HKDF.
[in] aInfo
מצביעים על רצף המידע.
[in] aInfoLength
אורך רצף המידע.
[out] aOutputKey
מצביעים על מפתח הפלט.
[in] aOutputKeyLength
גודל מאגר הנתונים הזמני של מפתח הפלט.
ערכים מוחזרים
OT_ERROR_NONE
הרחבת HKDF בוצעה בהצלחה.
OT_ERROR_FAILED
הרחבת HKDF נכשלה.
OT_ERROR_INVALID_ARGS
הערך של aContext היה NULL

otPlatCryptoHkdfExtract

otError otPlatCryptoHkdfExtract(
  otCryptoContext *aContext,
  const uint8_t *aSalt,
  uint16_t aSaltLength,
  const otCryptoKey *aInputKey
)

ביצוע שלב חילוץ HKDF.

פרטים
פרמטרים
[in] aContext
הקשר פעולה לפעולת HKDF.
[in] aSalt
מצביעים על המלח ל-HKDF.
[in] aSaltLength
אורך המלח.
[in] aInputKey
מציבים את הסמן על מקש הקלט.
ערכים מוחזרים
OT_ERROR_NONE
חילוץ HKDF בוצע בהצלחה.
OT_ERROR_FAILED
חילוץ HKDF נכשל.

otPlatCryptoHkdfInit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

מפעילים את ההקשר ל-HKDF.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת HKDF.
ערכים מוחזרים
OT_ERROR_NONE
פעולת AES הופעלה בהצלחה.
OT_ERROR_FAILED
לא הצלחנו להתחיל את פעולת AES.
OT_ERROR_INVALID_ARGS
הערך של aContext היה NULL

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

ביטול האתחול של פעולת ה-HMAC.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת HMAC.
ערכים מוחזרים
OT_ERROR_NONE
פעולת HMAC לא אותחלה בהצלחה.
OT_ERROR_FAILED
פעולת HMAC לא מאותחלת נכשלה.
OT_ERROR_INVALID_ARGS
הערך של aContext היה NULL

otPlatCryptoHmacSha256Finish

otError otPlatCryptoHmacSha256Finish(
  otCryptoContext *aContext,
  uint8_t *aBuf,
  size_t aBufLength
)

משלימים את פעולת ה-HMAC.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת HMAC.
[out] aBuf
הפניה למאגר הפלט.
[in] aBufLength
האורך של aBuf בבייטים.
ערכים מוחזרים
OT_ERROR_NONE
פעולת HMAC הושלמה בהצלחה.
OT_ERROR_FAILED
השלמת פעולת HMAC נכשלה.
OT_ERROR_INVALID_ARGS
הערך של aContext או של aBuf היה NULL

otPlatCryptoHmacSha256Init

otError otPlatCryptoHmacSha256Init(
  otCryptoContext *aContext
)

מאתחלים את פעולת ה-HMAC.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת HMAC.
ערכים מוחזרים
OT_ERROR_NONE
פעולת HMAC אותחלה בהצלחה.
OT_ERROR_FAILED
אתחול פעולת HMAC נכשל.
OT_ERROR_INVALID_ARGS
הערך של aContext היה NULL

otPlatCryptoHmacSha256Start

otError otPlatCryptoHmacSha256Start(
  otCryptoContext *aContext,
  const otCryptoKey *aKey
)

מתחילים את פעולת HMAC.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת HMAC.
[in] aKey
חומר מפתח לשימוש לפעולת HMAC.
ערכים מוחזרים
OT_ERROR_NONE
פעולת HMAC התחילה בהצלחה.
OT_ERROR_FAILED
הניסיון להתחיל את פעולת HMAC נכשל.
OT_ERROR_INVALID_ARGS
הערך של aContext או של aKey היה NULL

otPlatCryptoHmacSha256Update

otError otPlatCryptoHmacSha256Update(
  otCryptoContext *aContext,
  const void *aBuf,
  uint16_t aBufLength
)

יש לעדכן את פעולת ה-HMAC בקלט חדש.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת HMAC.
[in] aBuf
מצביע למאגר הנתונים הזמני.
[in] aBufLength
האורך של aBuf בבייטים.
ערכים מוחזרים
OT_ERROR_NONE
HMAC עודכן בהצלחה עם פעולת קלט חדשה.
OT_ERROR_FAILED
העדכון של פעולת HMAC נכשל.
OT_ERROR_INVALID_ARGS
הערך של aContext או של aBuf היה NULL

otPlatCryptoImportKey

otError otPlatCryptoImportKey(
  otCryptoKeyRef *aKeyRef,
  otCryptoKeyType aKeyType,
  otCryptoKeyAlgorithm aKeyAlgorithm,
  int aKeyUsage,
  otCryptoKeyStorage aKeyPersistence,
  const uint8_t *aKey,
  size_t aKeyLen
)

ייבא מפתח אל תשדירי שירות (PSA ITS).

אם OT_CRYPTO_KEY_STORAGE_VOLATILE מועבר עבור aKeyPersistence, aKeyRef נוצר, הערך הראשוני לא משנה ו-Platform API חייב לעדכן אותו כך שיחזיר את ההפניה החדשה של המפתח.

פרטים
פרמטרים
[in,out] aKeyRef
מצביעים על ההפניה (ref) המפתח שיש להשתמש בה לפעולות הצפנה.
[in] aKeyType
קידוד סוג מקש עבור המפתח.
[in] aKeyAlgorithm
קידוד אלגוריתם המפתח למַפְתח.
[in] aKeyUsage
קידוד השימוש במפתח (שילובים של OT_CRYPTO_KEY_USAGE_*).
[in] aKeyPersistence
מפתח קבוע למפתח הזה
[in] aKey
המפתח בפועל לייבוא.
[in] aKeyLen
אורך המפתח לייבוא.
ערכים מוחזרים
OT_ERROR_NONE
המפתח יובא בהצלחה.
OT_ERROR_FAILED
ייבוא המפתח נכשל.
OT_ERROR_INVALID_ARGS
הערך של aKey הוגדר כ-NULL.

ב-API הזה נעשה שימוש רק בליבת OT כאשר OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE מופעל.

otPlatCryptoInit

void otPlatCryptoInit(
  void
)

מפעילים את מודול הקריפטו.

otPlatCryptoPbkdf2GenerateKey

otError otPlatCryptoPbkdf2GenerateKey(
  const uint8_t *aPassword,
  uint16_t aPasswordLen,
  const uint8_t *aSalt,
  uint16_t aSaltLen,
  uint32_t aIterationCounter,
  uint16_t aKeyLen,
  uint8_t *aKey
)

מבצעים PKCS#5 PBKDF2 באמצעות CMAC (AES-CMAC-PRF-128).

פרטים
פרמטרים
[in] aPassword
סיסמה לשימוש בעת יצירת מפתח.
[in] aPasswordLen
אורך הסיסמה.
[in] aSalt
מלח לשימוש במהלך יצירת מפתח.
[in] aSaltLen
אורך המלח.
[in] aIterationCounter
מספר החזרות.
[in] aKeyLen
אורך המפתח שנוצר בבייטים.
[out] aKey
מצביע על המפתח שנוצר.
ערכים מוחזרים
OT_ERROR_NONE
זוג מפתחות חדש נוצר בהצלחה.
OT_ERROR_NO_BUFS
נכשלה הקצאת מאגר נתונים זמני ליצירת מפתחות.
OT_ERROR_NOT_CAPABLE
התכונה לא נתמכת.
OT_ERROR_FAILED
יצירת המפתח נכשלה.

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

מחולל מספרים פסאודו אקראיים מאובטחים מבחינה קריפטוגרפית (CSPRNG) – ביטול אתחול.

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

מילוי מאגר נתונים זמני בבייטים אקראיים מאובטחים מבחינה קריפטוגרפית.

פרטים
פרמטרים
[out] aBuffer
מצביע למאגר נתונים זמני למילוי הבייטים האקראיים.
[in] aSize
גודל מאגר הנתונים הזמני (מספר הבייטים למילוי).
ערכים מוחזרים
OT_ERROR_NONE
מאגר הנתונים הזמני מולאו בהצלחה עם ערכים אקראיים.
OT_ERROR_FAILED
הפעולה נכשלה.

otPlatCryptoRandomInit

void otPlatCryptoRandomInit(
  void
)

הפעלה של מחולל מספרים פסאודו אקראיים מאובטחים מבחינה קריפטוגרפית (CSPRNG).

otPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

מבטלים את האתחול של הפעולה SHA-256.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת SHA-256.
ערכים מוחזרים
OT_ERROR_NONE
פעולת SHA-256 לא אותחלה בהצלחה.
OT_ERROR_FAILED
פעולת SHA-256 שלא אותחלה נכשלה.
OT_ERROR_INVALID_ARGS
הערך של aContext היה NULL

otPlatCryptoSha256Finish

otError otPlatCryptoSha256Finish(
  otCryptoContext *aContext,
  uint8_t *aHash,
  uint16_t aHashSize
)

מסיימים את פעולת SHA-256.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת SHA-256.
[in] aHash
הפניה למאגר הפלט, שבו צריך לשמור את הגיבוב.
[in] aHashSize
האורך של aHash בבייטים.
ערכים מוחזרים
OT_ERROR_NONE
הפעולה SHA-256 הושלמה בהצלחה.
OT_ERROR_FAILED
לא ניתן להשלים את פעולת SHA-256.
OT_ERROR_INVALID_ARGS
הערך של aContext או של aHash היה NULL

otPlatCryptoSha256Init

otError otPlatCryptoSha256Init(
  otCryptoContext *aContext
)

מפעילים את פעולת SHA-256.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת SHA-256.
ערכים מוחזרים
OT_ERROR_NONE
פעולת SHA-256 הופעלה בהצלחה.
OT_ERROR_FAILED
לא הצלחנו להתחיל את פעולת SHA-256.
OT_ERROR_INVALID_ARGS
הערך של aContext היה NULL

otPlatCryptoSha256Start

otError otPlatCryptoSha256Start(
  otCryptoContext *aContext
)

מתחילים את פעולת SHA-256.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת SHA-256.
ערכים מוחזרים
OT_ERROR_NONE
פעולת SHA-256 התחילה.
OT_ERROR_FAILED
לא ניתן להתחיל את פעולת SHA-256.
OT_ERROR_INVALID_ARGS
הערך של aContext היה NULL

otPlatCryptoSha256Update

otError otPlatCryptoSha256Update(
  otCryptoContext *aContext,
  const void *aBuf,
  uint16_t aBufLength
)

עדכון פעולת SHA-256 עם קלט חדש.

פרטים
פרמטרים
[in] aContext
הקשר לפעולת SHA-256.
[in] aBuf
מצביע למאגר הנתונים הזמני.
[in] aBufLength
האורך של aBuf בבייטים.
ערכים מוחזרים
OT_ERROR_NONE
SHA-256 עודכן בהצלחה עם פעולת קלט חדשה.
OT_ERROR_FAILED
העדכון של פעולת SHA-256 נכשל.
OT_ERROR_INVALID_ARGS
הערך של aContext או של aBuf היה NULL

פקודות מאקרו

OT_CRYPTO_ECDSA_MAX_DER_SIZE

 OT_CRYPTO_ECDSA_MAX_DER_SIZE 125

גודל מאגר נתונים זמני מקסימלי (בבייטים) לייצוג זוג מפתחות EDCSA בפורמט DER.

OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE

 OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE 64

גודל מאגר נתונים זמני (בבייטים) לייצוג המפתח הציבורי EDCSA.

OT_CRYPTO_ECDSA_SIGNATURE_SIZE

 OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64

גודל מאגר נתונים זמני (בבייטים) לייצוג חתימת EDCSA.

OT_CRYPTO_PBDKF2_MAX_SALT_SIZE

 OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30

אורך מקסימלי של PBKDF2 SALT: תחילית salt (6) + panid מורחב (8) + שם רשת (16)

OT_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

אורך של גיבוב SHA256 (בבייטים).

מקורות מידע

המקור של נושאי העזר של OpenThread API הוא קוד המקור, שזמין ב-GitHub. אפשר לקרוא מידע נוסף או לתרום למסמכי התיעוד שלנו בדף מקורות מידע.