2018年7月12日 星期四

UEFI Application - support HTTPS

原本撰寫 UEFI Application with C
關於網路部份我使用的是 HP porting 的 CurlLib
但這裡並沒有加上 HTTPS 的支援
CurlLib可以使用多種 SSL Lib
因為 UDK2014 在 CryptoLib porting 的是 openssl-0.9.8w
故我在這裡是選擇在 CurlLib 中打開 openssl

底下是我的步驟及遇到的問題,還有個人認為的解決方案
0. 使用 VC and UDK2014
1. 依照 "CryptoPkg\Library\OpensslLib\Patch-HOWTO.txt",安裝 openssl
2. Modify "HpNetworkPkg\HpNetworkPkg.dsc",add "OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf" in "[LibraryClasses]"
3. Modify "HpNetworkPkg\HpNetworkPkg.dec",add "../CryptoPkg/Include" in "[Includes]"
4. Modify "HpNetworkPkg\Library\CurlLib\lib\CurlLib.inf",add "CryptoPkg/CryptoPkg.dec" in "[Packages]" and "OpensslLib" in "[LibraryClasses]"
5. Modify "HpNetworkPkg\Library\CurlLib\lib\CurlLib.inf",add "/DUSE_SSLEAY /DUSE_OPENSSL" in "MSFT:*_*_*_CC_FLAGS"

此時會遇到很多 SSL 開頭函數的 Link Error
之所以會有這些問題是 UDK2014 雖然有 porting openssl-0.9.8w
但在 "OpensslLib.inf" 並沒有去編譯相關檔案
舉例來說 "CryptoPkg\Library\OpensslLib\openssl-0.9.8w\ssl" 裡的檔案都不在 "OpensslLib.inf"

故我認為有 2 個方式可以解決
1. Modify "OpensslLib.inf",編譯相關檔案,但我認為這是大工程
2. 使用 UEFI 原生的 HTTP_PROTOCOL,但不確定有沒有支援 HTTPS

留下測試的相關步驟以做記錄

沒有留言:

張貼留言