GP TEE Client API基本概念


TEE Client API關鍵原則是:

C語言

阻塞式函數

源碼級別的可移植性

客戶端內存分配

零拷貝數據傳輸

通過指針共享內存

專注於定義基礎通信機制

 

TEE Client AP基礎概念:

TEE Context:TEE Context是CA和TEE之間的邏輯連接的抽象。

必須先初始化TEE Context,然后才能在該TEE Context所表示的TEE中創建CA與TA間的會話。當不再需要與TEE的連接時,應終止TEE Context,從而釋放系統資源。

Session:Session是CA和TA之間的邏輯連接的抽象。會話由CA在特定的TEE Context內打開。

在創建新會話時,CA必須使用UUID標識其希望連接的TA。

Command:Command是一個會話中CA和TA的通信單元。

當啟動新命令時,CA通過傳遞數字標識符來標識其希望執行TA中的對應功能,並提供TA需要的數據。命令調用將阻塞CA線程,等待來自TA的答復,CA可以使用多線程來並發處理多個命令。

Operation Payload:OpenSession和InvokeCommand可以攜帶payload,載荷存儲在TEEC_Parameter數據結構中,可以攜帶四個TEEC_Parameter。

每個Parameter是內存引用或值參數,內存引用參數用於通過共享內存緩沖區交換數據,值參數以兩個32位整數的形式攜帶少量數據。

內存引用包含已注冊內存引用或臨時內存引用,注冊內存引用是在操作之前創建的共享內存塊中的區域,臨時內存引用直接指定了CA擁有的一塊內存緩沖區,該緩沖區在執行操作期間由TEE Client API臨時注冊。

Shared Memory:共享內存是在CA內存空間中分配的內存區域,可用於在CA和TA之間傳輸數據。

共享內存可以是現有的CA內存,該內存隨后通過TEE Client API注冊,也可以是CA使用TEE Client API分配的內存。共享內存可以注冊或分配一次,然后在多個命令中使用,甚至可以在多個會話中使用,前提是它們存在於創建共享內存的TEE Context范圍內。

零拷貝數據傳輸——在可能的情況下,TEE Client API下的通信通道的實現應嘗試將共享內存直接映射到TA內存空間,從而實現真正的零拷貝數據傳輸。CA開發人員應注意,讓TEE Client API使用TEEC_AllocateSharedMemory函數分配內存緩沖區可最大程度地利用零拷貝交換成功共享它。

Memory References:內存引用是某個特定操作實際共享的字節范圍,表示為TEEC_MemoryReference或TEEC_TempMemoryReference數據結構。

內存引用類型包含有,

TEEC_MEMREF_TEMP_INPUT、TEEC_MEMREF_TEMP_OUTPUT、TEEC_MEMREF_TEMP_INOUT,臨時內存引用預示着該參數指向要共享的內存緩沖區,而不是指向共享內存控制結構。在執行操作期間,此CA緩沖區將被臨時共享。

TEEC_MEMREF_WHOLE,整個內存引用實現了一種輕量級的機制,可以共享整個父級共享內存塊,而無需復制內存引用中共享內存結構控制字段的內容。使用此內存類型時,整個共享內存區域將與父共享內存指定的方向標志共享。

TEEC_MEMREF_PARTIAL_INPUT、TEEC_MEMREF_PARTIAL_OUTPUT、TEEC_MEMREF_PARTIAL_INOUT,部分內存引用是指父共享內存塊的子區域,允許該塊內的任何區域與TA共享。

 

 

 

Resource Cleanup:

釋放Shared Memory時,客戶端代碼必須確保在掛起的操作中未引用它

關閉會話時,會話中不得有任何待處理的操作

在終止TEE Context時,其范圍內不得有任何打開的會話


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM