קריפטו – פלטפורמה

מודול זה כולל הפשטת פלטפורמה עבור 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
}
טיפוסים בני מנייה (enum)
ספירה זו מגדירה את סימוני השימוש העיקריים.
otCryptoKeyAlgorithm{
  OT_CRYPTO_KEY_ALG_VENDOR,
  OT_CRYPTO_KEY_ALG_AES_ECB,
  OT_CRYPTO_KEY_ALG_HMAC_SHA_256
}
טיפוסים בני מנייה (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
}
טיפוסים בני מנייה (enum)
ספירה זו מגדירה את סוגי המפתחות.

סוג מגן

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
סוג הנתונים הזה מייצג את ההפניה העיקרית.

פונקציות

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)
יש להשמיד מפתח המאוחסן ב-PSA ITS.
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
עליך לייצא מפתח המאוחסן ב-PSA ITS.
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
מאתחלים את מודול הקריפטו.
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

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

הדמיות

אנום אנונימי

 anonymous enum

ספירה זו מגדירה את סימוני השימוש העיקריים.

מאפיינים
OT_CRYPTO_KEY_USAGE_DECRYPT

שימוש חשוב: ב-AES ECB.

OT_CRYPTO_KEY_USAGE_ENCRYPT

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

OT_CRYPTO_KEY_USAGE_EXPORT

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

OT_CRYPTO_KEY_USAGE_NONE

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

OT_CRYPTO_KEY_USAGE_SIGN_HASH

שימוש במפתח: HMAC SHA-256.

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

ספירה זו מגדירה את האלגוריתמים המרכזיים.

מאפיינים
OT_CRYPTO_KEY_ALG_AES_ECB

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

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

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

OT_CRYPTO_KEY_ALG_VENDOR

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

otCryptoKeyStorage

 otCryptoKeyStorage

הספירה הזו מגדירה את סוגי האחסון העיקריים.

מאפיינים
OT_CRYPTO_KEY_STORAGE_PERSISTENT

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

OT_CRYPTO_KEY_STORAGE_VOLATILE

שמירה על עקביות: המפתח תנודתי.

OTCryptoKeyType

 otCryptoKeyType

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

מאפיינים
OT_CRYPTO_KEY_TYPE_AES

סוג מפתח: AES.

OT_CRYPTO_KEY_TYPE_HMAC

סוג מפתח: HMAC.

OT_CRYPTO_KEY_TYPE_RAW

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

סוג מגן

otCryptoContext

struct otCryptoContext otCryptoContext

OTCryptoKey

struct otCryptoKey otCryptoKey

OTCryptoKeyRef

uint32_t otCryptoKeyRef

סוג הנתונים הזה מייצג את ההפניה העיקרית.

פונקציות

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
)

יש להשמיד מפתח המאוחסן ב-PSA ITS.

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

otPlatCryptoExportKey

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

עליך לייצא מפתח המאוחסן ב-PSA ITS.

פרטים
פרמטרים
[in] aKeyRef
ה-ref key שישמש לפעולות הצפנה.
[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

חילוץ otPlatCryptoHkdf

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

otPlatCryptoHmacSha256סיום

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_PERSISTENT עבור AKeyPersistence, אז aKeyRef הוא קלט והפלטפורמה צריכה להשתמש ב-aKeyRef הנתון ו-MUST לא יכול לשנות אותו. אם OT_CRYPTO_KEY_STORAGE_VOLATILE מועבר עבור AKeyPersistence, לאחר מכן הפלט הוא aKeyRef, הערך הראשוני לא משנה ו-API של הפלטפורמה חייב לעדכן אותו כדי להחזיר את ה-ref החדש של המפתח.

פרטים
פרמטרים
[in,out] aKeyRef
מצביע אל הפניית המפתחות כדי להשתמש בפעולות הצפנה.
[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
)

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

otPlatCryptoOfficialDeinit

void otPlatCryptoRandomDeinit(
  void
)

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

otPlatCryptoOfficialGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

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

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

otPlatCryptoInitialInit

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

otPlatCryptoSha256סיום

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

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

פרטים
פרמטרים
[in] aContext
הקשר לפעולת SHA-256.
[in] aHash
מצביע למאגר הפלט, שבו יש לאחסן גיבוב (hash).
[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

מקורות מידע

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