nl::Weave::Platform::Security

تشمل مساحة الاسم هذه جميع الواجهات داخل Weave لمدير الذاكرة Security Monitor.

ملخّص

سيتم تنفيذ الدوال في مساحة الاسم هذه بواسطة الأنظمة الأساسية التي تستخدم Weave، وفقًا لاحتياجات/قيود البيئة الخاصة.

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

BlockSetParamFields{
  kBlockSetSizeMask = 0x07,
  kBlockSetSizeShift = 0,
  kBlockSetSizeValueShift = 7,
  kBlockSetCountMask = 0x18,
  kBlockSetCountShift = 3,
  kBlockSetBufferIndexMask = 0x60,
  kBlockSetBufferIndexShift = 5,
  kBlockSetIsLongTermMask = 0x80,
  kBlockSetIsLongTermShift = 7
}
تعداد
حظر موقع حقول مجموعة المعلَمات في نموذج مرمّز 8 بت
BlockSetParams{
  kNumberOfNetworkBuffers = 2,
  kNumberOfBlockSets = 4,
  kNetworkBuffer0BlockAllocationMask = 0x07,
  kNetworkBuffer1BlockAllocationMask = 0x18,
  kBlockSet1Size = 1,
  kBlockSet1Count = 1,
  kBlockSet1BufferIndex = 0,
  kBlockSet1isLongTerm = 1,
  kBlockSet2Size = 4,
  kBlockSet2Count = 1,
  kBlockSet2BufferIndex = 0,
  kBlockSet2isLongTerm = 1,
  kBlockSet3Size = 4,
  kBlockSet3Count = 1,
  kBlockSet3BufferIndex = 0,
  kBlockSet3isLongTerm = 0,
  kBlockSet4Size = 5,
  kBlockSet4Count = 2,
  kBlockSet4BufferIndex = 1,
  kBlockSet4isLongTerm = 0,
  kTotalMemorySize = (kBlockSet1Size * kBlockSet1Count + kBlockSet2Size * kBlockSet2Count + kBlockSet3Size * kBlockSet3Count + kBlockSet4Size * kBlockSet4Count) << kBlockSetSizeValueShift,
  kMaxBlockSize = 600,
  kMinBufferSize = 1240
}
تعداد
تحدّد مَعلمات مجموعة الكتل.

تحديدات النوع

BlockMark_t typedef
uint8_t
النوع المستخدَم لوضع علامة على المجموعة المخصّصة حاليًا/غير المخصّصة.
BlockSetParams_t typedef
uint8_t
يُستخدم هذا النوع لترميز معلومات مجموعة الكتل.

المتغيرات

sBlockSetParams = { ((kBlockSet1Size << kBlockSetSizeShift) & kBlockSetSizeMask) | ((kBlockSet1Count << kBlockSetCountShift) & kBlockSetCountMask) | ((kBlockSet1BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | ((kBlockSet1isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask), ((kBlockSet2Size << kBlockSetSizeShift) & kBlockSetSizeMask) | ((kBlockSet2Count << kBlockSetCountShift) & kBlockSetCountMask) | ((kBlockSet2BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | ((kBlockSet2isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask), ((kBlockSet3Size << kBlockSetSizeShift) & kBlockSetSizeMask) | ((kBlockSet3Count << kBlockSetCountShift) & kBlockSetCountMask) | ((kBlockSet3BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | ((kBlockSet3isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask), ((kBlockSet4Size << kBlockSetSizeShift) & kBlockSetSizeMask) | ((kBlockSet4Count << kBlockSetCountShift) & kBlockSetCountMask) | ((kBlockSet4BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | ((kBlockSet4isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask), }[kNumberOfBlockSets]
تُحدِّد الكتل المشفرة معلَمات.
sBufferAllocationMask = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }[kNumberOfNetworkBuffers]
const BlockMark_t
مجموعة من أقنعة وحدة المخزن المؤقت
sMemBlocksAllocated = 0
يشير إلى المجموعة التي تم تخصيصها/غيرها.
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
void *
المؤشرات إلى مخازن الذاكرة المؤقتة التي تم إعدادها على قيمة فارغة (NULL).
sNetworkBuffersUsed = true
bool
قيمة منطقية تشير إلى ما إذا كان (true) أم لا (false) يتم استخدام المخازن المؤقتة للشبكة بواسطة Simple Allocator.

الدوال

DecodeBlockSetParams(BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm)
void
GetSecureRandomData(uint8_t *buf, uint16_t len)
تُسمى هذه الدالة طبقة Weave لإنشاء بيانات عشوائية.
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
تُسمى هذه الدالة طبقة Weave لتهيئة مصدر البيانات العشوائي.
MemoryAlloc(size_t size)
void *
تستدعي طبقة Weave هذه الدالة لتخصيص كتلة من ذاكرة "الحجم" بايت.
MemoryAlloc(size_t size, bool isLongTermAlloc)
void *
تستدعي طبقة Weave هذه الدالة لتخصيص كتلة من ذاكرة "الحجم" بايت.
MemoryFree(void *p)
void
يتم استدعاء هذه الدالة بواسطة طبقة Weave لإصدار كتلة ذاكرة مخصصة بواسطة الدالة MemeoryAlloc().
MemoryInit(void *buf, size_t bufSize)
تستدعي طبقة Weave هذه الدالة لإعداد الذاكرة والموارد المطلوبة لأداء وظائف تخصيص ذاكرة Weave Security Manager بشكل مناسب.
MemoryShutdown(void)
void
تستدعي طبقة Weave هذه الدالة لإصدار جميع الموارد التي تم تخصيصها من خلال الدالة MemoryInit().
OnTimeConsumingCryptoDone(void)
void
ويتم استدعاء هذه الدالة لإشعار التطبيق عند انتهاء عملية تشفير تستهلك الكثير من الوقت.
OnTimeConsumingCryptoStart(void)
void
ويتم استدعاء هذه الدالة لإشعار التطبيق عندما تكون عملية التشفير على وشك البدء.

صفوف

nl::Weave::Platform::Security::AES128BlockCipher
nl::Weave::Platform::Security::AES128BlockCipherDec
nl::Weave::Platform::Security::AES128BlockCipherEnc
nl::Weave::Platform::Security::AES256BlockCipher
nl::Weave::Platform::Security::AES256BlockCipherDec
nl::Weave::Platform::Security::AES256BlockCipherEnc
nl::Weave::Platform::Security::SHA1
nl::Weave::Platform::Security::SHA256

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

BlockSetParamFields

 BlockSetParamFields

حظر موقع حقول مجموعة المعلَمات في نموذج مرمّز 8 بت

أماكن إقامة
kBlockSetBufferIndexMask

قناع حقل فهرس المخزن المؤقت

kBlockSetBufferIndexShift

تم تغيير حقل فهرس المخزن المؤقت.

kBlockSetCountMask

قناع حقل الإحصاء.

kBlockSetCountShift

حساب تغيُّر الحقول.

kBlockSetIsLongTermMask

اكتب قناع الحقل.

kBlockSetIsLongTermShift

أدخِل "تحويل الحقل".

kBlockSetSizeMask

قناع حقل الحجم:

kBlockSetSizeShift

تغيير حقل الحجم

kBlockSetSizeValueShift

تغيير ترميز حقل الحجم (اضرب في 128)

BlockSetParams

 BlockSetParams

تحدّد مَعلمات مجموعة الكتل.

أماكن إقامة
kBlockSet1BufferIndex

ضبط مؤشر المخزن المؤقت رقم 1 هي 0

kBlockSet1Count

ضبط عدد الوحدات السكنية على الرقم 1 هو 1.

kBlockSet1Size

حجم المجموعة الأولى هو 128 بايت.

kBlockSet1isLongTerm

النوع رقم 1 طويل المدى.

kBlockSet2BufferIndex

ضبط مؤشر المخزن المؤقت رقم 2 هي 0

kBlockSet2Count

ضبط رقم 2 لعدد الوحدات السكنية هو 1.

kBlockSet2Size

حجم المجموعة الثانية هو 512 بايت.

kBlockSet2isLongTerm

النوع رقم 2 طويل المدى.

kBlockSet3BufferIndex

ضبط مؤشر المخزن المؤقت رقم 3 هي 0

kBlockSet3Count

ضبط رقم 3 لعدد المربّعات هو 1.

kBlockSet3Size

حجم المجموعة رقم 3 هو 512 بايت.

kBlockSet3isLongTerm

النوع رقم 3 هو قصير المدى.

kBlockSet4BufferIndex

ضبط مؤشر المخزن المؤقت رقم 4 هي 1.

kBlockSet4Count

ضبط رقم 4 لعدد المربّعات هو 2.

kBlockSet4Size

حجم تعيين #4 هو 640 بايت.

kBlockSet4isLongTerm

المجموعة رقم 4 هي النوع قصير المدى.

kMaxBlockSize

الحد الأقصى لحجم الكتلة الذي يدعمه تطبيق Simple Allocator.

kMinBufferSize

الحد الأدنى لحجم المخزن المؤقت للشبكة المطلوب لدعم حالات استخدام Simple Allocator.

هذه المعلمة مشتقة من أحجام كتلة ذاكرة (640 + 600) تم تخصيصها في المخزن المؤقت للشبكة رقم 1.

kNetworkBuffer0BlockAllocationMask

يحدد هذا القناع جميع عمليات حظر الذاكرة التي تم تخصيصها من المخزن المؤقت للشبكة رقم 0.

kNetworkBuffer1BlockAllocationMask

يحدد هذا القناع جميع عمليات حظر الذاكرة التي تم تخصيصها من المخزن المؤقت رقم 1 للشبكة.

kNumberOfBlockSets

عدد مجموعات الكتل التي يستخدمها Simple Allocator.

kNumberOfNetworkBuffers

عدد المخازن المؤقتة للشبكة التي يستخدمها تطبيق Simple Allocator.

kTotalMemorySize

إجمالي الذاكرة التي يستخدمها تطبيق Simple Allocator.

تحديدات النوع

BlockMark_t

uint8_t BlockMark_t

النوع المستخدَم لوضع علامة على المجموعة المخصّصة حاليًا/غير المخصّصة.

uint8_t - تدعم ما يصل إلى 8 كتل ذاكرة إجمالية uint16_t - تدعم ما يصل إلى 16 كتلة ذاكرة إجمالي uint32_t - تدعم ما يصل إلى 32 كتلة ذاكرة إجمالاً

BlockSetParams_t

uint8_t BlockSetParams_t

يُستخدم هذا النوع لترميز معلومات مجموعة الكتل.

مجموعة الكتل هي مجموعة من مقاطع الذاكرة التي لها نفس الخصائص (الحجم والنوع وتنتمي إلى نفس المخزن المؤقت). ويوضح الرسم البياني التالي كيفية ترميز معلومات مجموعة الكتل بتنسيق 8 بت:

طويلة الأجل حظر الفهرس عدد القوالب حجم القطع
[7] [6:5] [4:3] [2:0]
[2:0] - حجم جزء الذاكرة في مجموعة يتم ترميز قيمة الحجم بدقة 128 بايت.
[2:0] فك الترميز
000 0 بايت
001 128 بايت
010 256 بايت
... -
111 896 بايت
[4:3] - عدد القوالب في المجموعة.
[4:3] فك الترميز
00 4 مربّعات
01 مربّع واحد
10 مربّعان
11 3 مربّعات
[6:5] - فهرس المخزن المؤقت للشبكة في مكان وجود وحدات الذاكرة تجدر الإشارة إلى أنّه عند استخدام المخزن المؤقت المخصص، يتم تخصيص جميع كتل الذاكرة من المخزن المؤقت المخصص ويتم تجاهل معلمة الفهرس هذه.
[6:5] فك الترميز
00 المخزن المؤقت للشبكة رقم 0
... -
11 المخزن المؤقت للشبكة رقم 3
[7] - تحدِّد هذه السياسة ما إذا كانت عمليات الحظر مخصَّصة للتخزين على المدى الطويل أو القصير.
[7] فك الترميز
0 وحدات ذاكرة قصيرة المدى
1 وحدات ذاكرة طويلة المدى

المتغيرات

sBlockSetParams

const BlockSetParams_t sBlockSetParams[kNumberOfBlockSets] = {
    
    ((kBlockSet1Size << kBlockSetSizeShift) & kBlockSetSizeMask) | 
    ((kBlockSet1Count << kBlockSetCountShift) & kBlockSetCountMask) | 
    ((kBlockSet1BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | 
    ((kBlockSet1isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask),
    
    ((kBlockSet2Size << kBlockSetSizeShift) & kBlockSetSizeMask) | 
    ((kBlockSet2Count << kBlockSetCountShift) & kBlockSetCountMask) | 
    ((kBlockSet2BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | 
    ((kBlockSet2isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask),
    
    ((kBlockSet3Size << kBlockSetSizeShift) & kBlockSetSizeMask) | 
    ((kBlockSet3Count << kBlockSetCountShift) & kBlockSetCountMask) | 
    ((kBlockSet3BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | 
    ((kBlockSet3isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask),
    
    ((kBlockSet4Size << kBlockSetSizeShift) & kBlockSetSizeMask) | 
    ((kBlockSet4Count << kBlockSetCountShift) & kBlockSetCountMask) | 
    ((kBlockSet4BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | 
    ((kBlockSet4isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask),







}

تُحدِّد الكتل المشفرة معلَمات.

sBufferAllocationMask

const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = {
                                                   kNetworkBuffer0BlockAllocationMask,
                                                   kNetworkBuffer1BlockAllocationMask,




                                                                                       }

مجموعة من أقنعة وحدة المخزن المؤقت

يحدد ما إذا كان يمكن إلغاء كل القوالب الموجودة في المخزن المؤقت وغير مخصص، ومن ثم يمكن إلغاء المخزن المؤقت.

sMemBlocksAllocated

BlockMark_t sMemBlocksAllocated = 0

يشير إلى المجموعة التي تم تخصيصها/غيرها.

تعني الضبط على 0 - أنّ جميع قوالب الذاكرة غير المخصّصة.

sMemBufs

void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }

المؤشرات إلى مخازن الذاكرة المؤقتة التي تم إعدادها على قيمة فارغة (NULL).

عند استخدام المخازن المؤقتة للشبكة، تشير sMemBufs[] إلى كائنات PacketBuffer. عند استخدام المخزن المؤقت المخصص، يشير sMemBufs[0] إلى ذلك المخزن المؤقت ويتم تجاهل مؤشرات sMemBufs[] الأخرى.

sNetworkBuffersUsed

bool sNetworkBuffersUsed = true

قيمة منطقية تشير إلى ما إذا كان (true) أم لا (false) يتم استخدام المخازن المؤقتة للشبكة بواسطة Simple Allocator.

عند خطأ - يتم استخدام المخزن المؤقت المخصص الذي يتم توفيره مع الدالة MemoryInit().

الدوال

DecodeBlockSetParams

void DecodeBlockSetParams(
  BlockSetParams_t blockSetParams,
  uint16_t & blockSize,
  uint8_t & blockCount,
  uint8_t & blockBufferIndex,
  bool & blockIsLongTerm
)

GetSecureRandomData

WEAVE_ERROR GetSecureRandomData(
  uint8_t *buf,
  uint16_t len
)

تُسمى هذه الدالة طبقة Weave لإنشاء بيانات عشوائية.

التفاصيل
المَعلمات
[in] buf
يشير هذا المصطلح إلى مؤشر لمخزن ذاكرة مؤقت، حيث يجب تخزين البيانات العشوائية المطلوبة.
[in] len
تحدِّد هذه السياسة حجم البيانات العشوائية المطلوب بالبايت.
قيم الإرجاع
WEAVE_ERROR_DRBG_ENTROPY_SOURCE_FAILED
في حالة فشل مصدر القصور في إنشاء القصور المطلوب من منشئ البيانات العشوائي.
WEAVE_ERROR_RANDOM_DATA_UNAVAILABLE
إذا تعذّر على مصدر البيانات العشوائي إنشاء بيانات عشوائية.
WEAVE_ERROR_INCORRECT_STATE
إذا تم العثور على مصدر بيانات عشوائي في حالة خاطئة.
WEAVE_NO_ERROR
عند النجاح

InitSecureRandomDataSource

WEAVE_ERROR InitSecureRandomDataSource(
  nl::Weave::Crypto::EntropyFunct entropyFunct,
  uint16_t entropyLen,
  const uint8_t *personalizationData,
  uint16_t perDataLen
)

تُسمى هذه الدالة طبقة Weave لتهيئة مصدر البيانات العشوائي.

هذه الدالة خاصة بالنظام الأساسي وقد تكون فارغة عندما لا يكون إعداد مصدر البيانات العشوائي مطلوبًا.

التفاصيل
المَعلمات
[in] entropyFunct
يشير هذا المصطلح إلى مؤشر لدالة تؤدي إلى قصور في أداة إنشاء البيانات العشوائية. عندما لا تكون الخوارزمية مطلوبة لإدخال القصور، يمكن أن يكون هذا المدخل فارغًا، وهو ما يحدث عند استخدام إصدار OpenSSL من منشئ البيانات العشوائي.
[in] entropyLen
تحدِّد هذه الدالة حجم القصور بالبايت الذي يجب أن تنشئه دالة القصور عند استخدامها.
[in] personalizationData
مؤشر إلى مخزن مؤقت للذاكرة يخزِّن إدخال بيانات التخصيص يجب أن يكون إدخال البيانات هذا خاصًا بالجهاز ويساعد على تحسين الخصائص الإحصائية للبيانات العشوائية.
[in] perDataLen
تحدِّد هذه السياسة حجم بيانات التخصيص بالبايت.
قيم الإرجاع
WEAVE_ERROR_INVALID_ARGUMENT
ما إذا تم تمرير وسيطة غير صالحة إلى هذه الدالة
WEAVE_NO_ERROR
عند النجاح

MemoryAlloc

void * MemoryAlloc(
  size_t size
)

تستدعي طبقة Weave هذه الدالة لتخصيص كتلة من ذاكرة "الحجم" بايت.

هذه الدالة تعادل MemoryAlloc(size, false).

التفاصيل
المَعلمات
[in] size
تحدد هذه السمة حجم الذاكرة المطلوب بالبايت.
قيم الإرجاع
Pointer
إلى كتلة ذاكرة في حال نجاحها.
NULL-pointer
في حالة إخفاق تخصيص الذاكرة.

MemoryAlloc

void * MemoryAlloc(
  size_t size,
  bool isLongTermAlloc
)

تستدعي طبقة Weave هذه الدالة لتخصيص كتلة من ذاكرة "الحجم" بايت.

التفاصيل
المَعلمات
[in] size
تحدد هذه السمة حجم الذاكرة المطلوب بالبايت.
[in] isLongTermAlloc
قيمة منطقية تشير إلى ما إذا كانت (صحيح) أم لا (خطأ) كتلة الذاكرة المطلوبة هي للاستخدام على المدى الطويل. التخصيص طويل المدى هو الذاكرة التي يجب أن تظل مخصصة إلى أن تكتمل الجلسة/تأكيد الاتصال الآمن. تشمل الأمثلة على التخصيص على المدى الطويل الوحدات المخصّصة لعناصر CASE/PASE وبيانات سياقها. التخصيص قصير المدى هو ذاكرة مطلوبة لأداء عملية محدّدة ويمكن إطلاقها بعد ذلك مباشرةً. يساعد هذا الإدخال على تحسين استخدام الذاكرة في نظام مقيد بالذاكرة. يعد استخدام هذه المعلمة عشوائيًا ويعتمد على منفّذ الدالة. على سبيل المثال، يتم تجاهل هذه المعلمة عند استخدام مكتبة C Standard Library salesoc().
قيم الإرجاع
Pointer
إلى كتلة ذاكرة في حال نجاحها.
NULL-pointer
في حالة إخفاق تخصيص الذاكرة.

MemoryFree

void MemoryFree(
  void *p
)

يتم استدعاء هذه الدالة بواسطة طبقة Weave لإصدار كتلة ذاكرة مخصصة بواسطة الدالة MemeoryAlloc().

التفاصيل
المَعلمات
[in] p
مؤشر إلى كتلة ذاكرة يجب تحريرها

MemoryInit

WEAVE_ERROR MemoryInit(
  void *buf,
  size_t bufSize
)

تستدعي طبقة Weave هذه الدالة لإعداد الذاكرة والموارد المطلوبة لأداء وظائف تخصيص ذاكرة Weave Security Manager بشكل مناسب.

هذه الدالة خاصة بالنظام الأساسي وقد تكون فارغة في بعض الحالات. على سبيل المثال، لا تفعل هذه الدالة أي شيء عند استخدام الدالتين shopping Standard Library (alloc()) وfree() لتخصيص الذاكرة.

التفاصيل
المَعلمات
[in] buf
مؤشر يشير إلى مخزن بيانات مؤقّت مخصّص للذاكرة، والذي يجب استخدامه كوحدة تخزين للذاكرة لتخصيص الذاكرة لأداة Weave Security Manager. هذا الإدخال اختياري (يتم ضبط القيمة التلقائية على "فارغ") ولا يجب استخدامه في حال عدم استخدام مخزن مؤقت مخصّص للذاكرة.
[in] bufSize
حجم المخزن المؤقت المخصص للذاكرة هذا الإدخال اختياري (يتم ضبط القيمة التلقائية على 0) ويجب عدم استخدامه في حال عدم استخدام مخزن مؤقت مخصّص للذاكرة. عند استخدام مخزن ذاكرة مؤقت مخصّص، تتحقّق الدالة من الدالة وتنشئ رسالة خطأ إذا لم يكن حجم المخزن المؤقت كبيرًا بما يكفي لدعم حالات استخدام مدير الأمان في Weave.
قيم الإرجاع
WEAVE_ERROR_BUFFER_TOO_SMALL
في حال لم يكن حجم المخزن المؤقت المخصَّص للإدخال كافيًا لدعم حالات استخدام تطبيق Weave Security Manager.
WEAVE_NO_ERROR
عند النجاح
other
يشير هذا المصطلح إلى خطأ ناتج عن وظيفة إعداد الذاكرة الخاصة بالنظام الأساسي.

MemoryShutdown

void MemoryShutdown(
  void
)

تستدعي طبقة Weave هذه الدالة لإصدار جميع الموارد التي تم تخصيصها من خلال الدالة MemoryInit().

يمكن أن تكون هذه الدالة استدعاءً فارغًا إذا لم تكن هناك حاجة إلى إصدار الموارد. على سبيل المثال، هذه هي الحالة التي يتم فيها استخدام الدالتين C Standard Libraryalloc() وfree() لتخصيص الذاكرة.

OnTimeConsumingCryptoDone

void OnTimeConsumingCryptoDone(
  void
)

ويتم استدعاء هذه الدالة لإشعار التطبيق عند انتهاء عملية تشفير تستهلك الكثير من الوقت.

OnTimeConsumingCryptoStart

void OnTimeConsumingCryptoStart(
  void
)

ويتم استدعاء هذه الدالة لإشعار التطبيق عندما تكون عملية التشفير على وشك البدء.