linux客户端 手机,WAPI客户端在Linux系统中的实现
原標(biāo)題:WAPI客戶端在Linux系統(tǒng)中的實(shí)現(xiàn)
西電捷通互操作性技術(shù)研究
摘要:在Linux系統(tǒng)中,欲實(shí)現(xiàn)WAPI客戶端的功能,不但需要先將WAPI安全協(xié)議棧移植到系統(tǒng)中,還需要對(duì)系統(tǒng)原有的一個(gè)名叫wpa_supplicant(無(wú)線網(wǎng)絡(luò)請(qǐng)求者程序,后文簡(jiǎn)稱“請(qǐng)求者軟件”)的應(yīng)用程序進(jìn)行適當(dāng)修改。請(qǐng)求者軟件是一款開(kāi)源的無(wú)線局域網(wǎng)客戶端側(cè)接入管理軟件,但是該軟件沒(méi)有實(shí)現(xiàn)WAPI功能,本文介紹了如何實(shí)現(xiàn)帶WAPI功能的請(qǐng)求者軟件,設(shè)計(jì)與實(shí)現(xiàn)兼顧了請(qǐng)求者軟件原有結(jié)構(gòu)的完整性,同時(shí)對(duì)程序升級(jí)有著充分的考量,當(dāng)程序結(jié)構(gòu)發(fā)生變化時(shí),其已有的WAPI功能可以簡(jiǎn)單同步遷移到變化后的版本中去。
關(guān)鍵詞:WAPI,AP(接入點(diǎn)),AS(鑒別服務(wù)器),西電捷通
當(dāng)前,全球無(wú)線局域網(wǎng)領(lǐng)域僅有兩個(gè)關(guān)于安全方面的標(biāo)準(zhǔn),分別是美國(guó)行業(yè)標(biāo)準(zhǔn)組織提出的IEEE 802.11i標(biāo)準(zhǔn),以及中國(guó)提出的WAPI標(biāo)準(zhǔn)。WAPI是我國(guó)首個(gè)在計(jì)算機(jī)寬帶無(wú)線網(wǎng)絡(luò)通信領(lǐng)域自主創(chuàng)新并擁有知識(shí)產(chǎn)權(quán)的安全接入技術(shù)標(biāo)準(zhǔn)。
本文將介紹一種簡(jiǎn)單高效的方法,實(shí)現(xiàn)具備WAPI功能的請(qǐng)求者接入管理軟件。
1、請(qǐng)求者軟件
請(qǐng)求者軟件是一款無(wú)線局域網(wǎng)客戶端接入管理軟件,可以在Linux、BSD、MacOS、Windows等不同的平臺(tái)運(yùn)行,可以運(yùn)行在臺(tái)式機(jī)、筆記本、嵌入式系統(tǒng)中。設(shè)計(jì)的目標(biāo)是不依賴于具體的硬件驅(qū)動(dòng)程序和操作系統(tǒng)。源代碼是用c語(yǔ)言實(shí)現(xiàn)的,整個(gè)程序的框架結(jié)構(gòu),如圖1所示。所有與硬件驅(qū)動(dòng)程序相關(guān)功能,都定義在單獨(dú)的文件中。請(qǐng)求者軟件實(shí)現(xiàn)了一個(gè)統(tǒng)一的驅(qū)動(dòng)程序應(yīng)用程序編程接口,很好地實(shí)現(xiàn)了硬件驅(qū)動(dòng)與軟件分層,方便了跨平臺(tái)移植。
從通信層次上劃分,請(qǐng)求者軟件提供向上的控制接口control interface,用于與其它模塊(如用戶界面)進(jìn)行通信,其它模塊可以通過(guò)control interface來(lái)獲取信息或下發(fā)命令。請(qǐng)求者軟件通過(guò)socket通信機(jī)制實(shí)現(xiàn)下行接口,與內(nèi)核進(jìn)行通信,獲取信息或下發(fā)命令。
圖1 請(qǐng)求者軟件框架結(jié)構(gòu)圖
2、請(qǐng)求者軟件+WAPI的設(shè)計(jì)
請(qǐng)求者軟件是一款開(kāi)源代碼的無(wú)線局域網(wǎng)客戶端接入管理軟件,但程序并沒(méi)有實(shí)現(xiàn)WAPI功能,那么我們是否可以通過(guò)對(duì)請(qǐng)求者軟件進(jìn)行簡(jiǎn)單修改,便可使其具備WAPI功能呢?答案是肯定的,在盡量保持請(qǐng)求者軟件原有架構(gòu)情況下即可添加WAPI功能。
根據(jù)請(qǐng)求者軟件的框架結(jié)構(gòu)特點(diǎn),只需要在程序整個(gè)結(jié)構(gòu)上添加WAPI狀態(tài)機(jī)(WAPI state machine)和WAPI接入鑒別這兩個(gè)模塊,以及對(duì)一些程序進(jìn)行微小的改動(dòng),便可以實(shí)現(xiàn)請(qǐng)求者軟件帶 WAPI功能。帶WAPI功能的請(qǐng)求者軟件框架結(jié)構(gòu)如圖2所示。
圖2 帶WAPI功能的請(qǐng)求者軟件框架結(jié)構(gòu)圖
紅字部分就是需要添加的模塊,這種設(shè)計(jì)保持了請(qǐng)求者軟件原有框架結(jié)構(gòu),只是添加WAPI相關(guān)模塊,就可使該軟件具備WAPI功能。
本文所實(shí)現(xiàn)的帶WAPI功能的請(qǐng)求者軟件,是在Linux系統(tǒng)下進(jìn)行編碼測(cè)試的。
3、帶 WAPI功能的請(qǐng)求者軟件實(shí)現(xiàn)
支持WAPI功能的請(qǐng)求者軟件,按照?qǐng)D2框架結(jié)構(gòu)圖的設(shè)計(jì),結(jié)構(gòu)清晰,邏輯簡(jiǎn)單。從實(shí)現(xiàn)角度考量,要在請(qǐng)求者軟件框架不做調(diào)整的基礎(chǔ)之上,實(shí)現(xiàn)帶 WAPI功能,在代碼架構(gòu)和工程方面需要添加WAPI狀態(tài)機(jī)(WAPI state machine)和WAPI接入鑒別這兩個(gè)模塊。
請(qǐng)求者軟件是個(gè)開(kāi)源的工程,它的程序設(shè)計(jì)框架很靈活,但是開(kāi)源代碼的結(jié)構(gòu)有時(shí)候可能會(huì)發(fā)生結(jié)構(gòu)性的改變。如果將WAPI功能直接添加到請(qǐng)求者軟件中,勢(shì)必造成耦合性太大,一旦新版請(qǐng)求者軟件代碼結(jié)構(gòu)發(fā)生變化,需要再實(shí)現(xiàn)WAPI的功能時(shí)后,必然要做大量的工作。
為了程序結(jié)構(gòu)的簡(jiǎn)單,同時(shí)當(dāng)請(qǐng)求者軟件更新后,實(shí)現(xiàn)WAPI功能代價(jià)最小化,我們將整個(gè)WAPI機(jī)制用lib庫(kù)來(lái)實(shí)現(xiàn),這樣一來(lái)當(dāng)請(qǐng)求者軟件更新時(shí),本文實(shí)現(xiàn)的WAPI功能,可以花很小的代價(jià)移植到新版本的程序中。
本設(shè)計(jì)實(shí)現(xiàn)為 請(qǐng)求者軟件 + lib庫(kù)形式,整個(gè)模塊調(diào)用關(guān)系如圖3所示:
圖3 WAPI-請(qǐng)求者軟件模塊調(diào)用關(guān)系圖
libwapi_asue主要負(fù)責(zé)處理WAPI協(xié)議幀的解析與構(gòu)造;WAPI預(yù)共享密鑰模式下密鑰的管理;WAPI證書(shū)模式下證書(shū)的管理。對(duì)于請(qǐng)求者軟件,僅需要添加用戶接口層WAPI接口,實(shí)現(xiàn)對(duì)WAPI的配置。
libwapi_asue庫(kù)的實(shí)現(xiàn),使用了GNU weak屬性,可以實(shí)現(xiàn)libwapi_asue庫(kù)單獨(dú)編譯,不依賴于請(qǐng)求者軟件。所謂weak屬性就是將所有需要調(diào)用的請(qǐng)求者軟件程序中的函數(shù),在libwapi_ause中定義為weak屬性函數(shù),這種方法的優(yōu)勢(shì)在于:當(dāng)系統(tǒng)中有請(qǐng)求者軟件時(shí),libwapi_asue就調(diào)用請(qǐng)求者軟件的函數(shù);如果沒(méi)有就調(diào)用libwapi_asue中相應(yīng)的weak屬性函數(shù)。這種方法一方面解決了編譯依賴的問(wèn)題;另一方面,當(dāng)請(qǐng)求者軟件的框架結(jié)構(gòu)有很大改動(dòng)時(shí),只需要改動(dòng)請(qǐng)求者軟件,提供WAPI調(diào)用的幾個(gè)函數(shù)即可。
4總結(jié)
本文簡(jiǎn)要介紹了WAPI和請(qǐng)求者軟件,講解了如何實(shí)現(xiàn)WAPI功能的請(qǐng)求者軟件。該設(shè)計(jì)與實(shí)現(xiàn)做到了請(qǐng)求者軟件和WAPI的低耦合性,方便后續(xù)的移植,希望能給此方面的專業(yè)技術(shù)人員提供借鑒。返回搜狐,查看更多
責(zé)任編輯:
總結(jié)
以上是生活随笔為你收集整理的linux客户端 手机,WAPI客户端在Linux系统中的实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 赵容弼(Cho Yong Pil) -《
- 下一篇: linux 其他常用命令