模塊、USB鍵盤模塊、USB鼠標模塊、USB存儲模塊、USB串口模塊、Flash存儲器、主存、處理器、USB主機控制器、VGA顯示適配器、和視頻輸出選擇開關(guān)。其中USB鍵盤模塊用來通過USB集線器模塊向通用計算機提供鍵盤輸入;USB鼠標模塊用來通過USB集線器模塊向通用計算機提供鼠標輸入;USB存儲模塊用來通過USB集線器模塊向通用計算機提供U盤存儲;USB串口模塊用來通過USB集線器模塊,與通用計算機建立串口通信關(guān)系;所述Flash存儲器被劃分為兩部分,一部分用來存儲所述可信計算附件的固件,另外一部分被格式化為FAT32分區(qū),作為所述USB存儲模塊對應(yīng)的存儲器,用來存儲可信應(yīng)用代碼和數(shù)據(jù);所述主存被劃分為兩部分,一部分用來運行所述可信計算附件的固件和可信應(yīng)用,另外一部分用來緩存可信應(yīng)用與通用計算機交換的數(shù)據(jù);VGA顯示適配器用來為所述可信計算附件內(nèi)的應(yīng)用提供顯示支持;視頻輸出選擇開關(guān)用來實現(xiàn)在VGA顯示適配器輸出和來自VGA-HOST的視頻信號之間進行切換;USB主機控制器用來幫助處理器接收來自USB-1Nl和USB-1N2的鍵盤、鼠標輸入信息。
[0023]軟件組成
[0024]所述可信計算附件的軟件包括兩部分,一部分為可信計算輔助軟件,另一部分為可信計算固件。其中:
[0025]可信計算輔助軟件運行于通用計算機上,其功能有:1)封裝可信計算附件的功能,使得通用計算機應(yīng)用可以使用可信計算附件的功能;2)為可信計算附件提供服務(wù),如網(wǎng)絡(luò)收發(fā)服務(wù)。
[0026]可信計算固件被存儲在可信計算附件的Flash存儲器中,在可信計算附件加電后啟動運行,其功能為:1)為加載于可信計算附件上的應(yīng)用提供運行環(huán)境;2)當所述視頻輸出選擇開關(guān)選擇輸出來自VGA-HOST的信號時,接收來自USB-1Nl和USB-1N2的USB鍵盤鼠標事件,并通過USB-HOST輸出相應(yīng)的事件;3)對來自于USB-1Nl或USB-1N2的USB鍵盤事件進行監(jiān)視,當監(jiān)測到特定的組合鍵被按下時,通知所述視頻輸出選擇開關(guān)切換輸出信號;4)當所述視頻輸出選擇開關(guān)選擇輸出來自所述可信計算附件內(nèi)部顯示適配器的VGA信號時,將來自USB-1Nl和USB-1N2的USB鍵盤、鼠標事件交給所述可信計算附件內(nèi)部的應(yīng)用運行環(huán)境處理。
[0027](一 )可信計算輔助軟件相關(guān)的流程
[0028]為了方便通用計算機應(yīng)用使用所述可信計算附件,所述可信計算輔助軟件提供如下API接口:
[0029]I)加載軟件包load_package,其功能為將某個軟件包加載到所述可信計算附件包含的存儲器中。其輸入?yún)?shù)為軟件包路徑名,返回結(jié)果為加載成功給失敗標志,且當加載成功時,返回該軟件包在所述可信計算附件中對應(yīng)的訪問標識,以便未來通過此訪問標識執(zhí)行此軟件包中的功能。
[0030]所述可信計算輔助軟件執(zhí)行包括如下步驟的流程以完成1acLpackage:
[0031]UPLOAD I向所述USB存儲模塊對應(yīng)的通用計算機U盤寫入待加載的軟件包;
[0032]UPL0AD2向調(diào)用者返回該軟件包的存儲位置。
[0033]2)卸載軟件包unload_package,其功能為將某個已加載到所述可信計算附件中的軟件包從所述可信計算附件的存儲器中刪除。
[0034]所述可信計算輔助軟件執(zhí)行包括如下步驟的流程以完成unloacLpackage:
[0035]UNLOAD I從所述USB存儲模塊對應(yīng)的通用計算機U盤中刪除指定的軟件包;
[0036]UNL0AD2向調(diào)用者返回軟件包刪除操作執(zhí)行情況。
[0037]3)執(zhí)行軟件包特定功能call_package_func,其功能為調(diào)用執(zhí)行已加載到所述可信計算附件中某個軟件包的某個子功能,其輸入?yún)?shù)為欲調(diào)用軟件包的訪問標識,可選參數(shù)為該軟件包的子功能號和調(diào)用參數(shù)。
[0038]所述可信計算輔助軟件執(zhí)行包括如下步驟的流程以完成call_package_func (此流程中假設(shè)未使用“物理結(jié)構(gòu)”部分描述的“將主存劃分為兩部分,一部分用來緩存可信應(yīng)用與通用計算機交換的數(shù)據(jù)”):
[0039]CALLl向所述USB串口模塊對應(yīng)的通用計算機串口寫入控制請求及其參數(shù);
[0040]CALL2從所述USB串口模塊對應(yīng)的通用計算機串口讀取所述可信計算附件對步驟CALLl所發(fā)送請求的執(zhí)行情況報告;
[0041]CALL3若步驟CALL2獲得的值指示執(zhí)行錯誤,則向調(diào)用者報告錯誤碼;
[0042]CALL4若步驟CALLl發(fā)送的請求要求有返回結(jié)果,則執(zhí)行步驟CALL5,否則轉(zhuǎn)到步驟 CALL7 ;
[0043]CALL5從所述USB串口模塊對應(yīng)的通用計算機串口讀取返回結(jié)果;
[0044]CALL7將調(diào)用情況返回本流程的調(diào)用者。
[0045]所述可信計算輔助軟件執(zhí)行包括如下步驟的流程,以方便所述可信計算附件調(diào)用通用計算機的功能:
[0046]SVCl打開所述USB串口模塊對應(yīng)的通用計算機串口 ;
[0047]SVC2mset — {fd},其中mset為當前監(jiān)聽的數(shù)據(jù)通信關(guān)系的集合,fd為步驟SVCl所獲得的串口對應(yīng)的數(shù)據(jù)通信關(guān)系,如串口的文件描述符;
[0048]SVC3等待mset中有數(shù)據(jù)通信關(guān)系有事件到達;
[0049]SVC4若步驟SVCl所述串口有數(shù)據(jù)到達,則執(zhí)行步驟SVC5,否則轉(zhuǎn)到步驟SVC7 ;
[0050]SVC5從步驟SVCl所述串口讀取事件編碼event ;
[0051]SVC6根據(jù)步驟SVC3獲得的事件編碼,進行相應(yīng)的處理:
[0052]Case I請求與遠地主機建立網(wǎng)絡(luò)連接
[0053]CONNl從所述USB串口模塊對應(yīng)的通用計算機串口中讀取遠程計算機地址;
[0054]C0NN2與所述遠地主機建立數(shù)據(jù)通信關(guān)系;
[0055]C0NN3將步驟C0NN2建立的數(shù)據(jù)通信關(guān)系添加到數(shù)據(jù)通信描述符集合mset中;
[0056]C0NN4 轉(zhuǎn)到步驟 SVC7 ;
[0057]Case 2請求發(fā)送數(shù)據(jù)到遠地主機
[0058]SENDl從所述USB串口模塊對應(yīng)的通用計算機串口中讀取通信地址和消息內(nèi)容;
[0059]SEND2根據(jù)步驟SENDl獲得的信息,調(diào)用通用計算機本地的網(wǎng)絡(luò)發(fā)送功能;
[0060]SVC7對于有報文到達的每個網(wǎng)絡(luò)連接,執(zhí)行包括如下步驟的操作:
[0061]RECVl從網(wǎng)絡(luò)連接中接收報文;
[0062]RECV2通過所述USB串口模塊對應(yīng)的通用計算機串口,向可信計算附件發(fā)送步驟RECVl收到的網(wǎng)絡(luò)數(shù)據(jù);
[0063]SVC7 轉(zhuǎn)到步驟 SVC3 ;
[0064]( 二)可信計算附件中固件相關(guān)的流程
[0065]可信計算附件中的固件包括:1)嵌入式Linux操作系統(tǒng);2) Android運行環(huán)境;3)Linux內(nèi)鍵盤鼠標監(jiān)聽模塊;4)Linux內(nèi)網(wǎng)絡(luò)收發(fā)重定向服務(wù);5)視頻輸出切換模塊。其中嵌入式Linux操作系統(tǒng)負責啟動可信計算附件,并為可信計算附件的其它固件和可信應(yīng)用提供運行支持;Android運行環(huán)境用于運行基于Android開發(fā)的可信應(yīng)用;Linux內(nèi)鍵盤鼠標監(jiān)聽模塊用于負責接收并處理連接到USB-1Nl和USB-1N2的鍵盤鼠標所產(chǎn)生