亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        ASN.1 的PER 分層運行庫系統(tǒng)的設計和實現(xiàn)

        2020-10-20 09:13:04
        微處理機 2020年5期
        關鍵詞:規(guī)則系統(tǒng)

        高 益

        (重慶航天職業(yè)技術學院電子工程系, 重慶400021)

        1 引 言

        ASN.1 編解碼運行庫軟件在應用ASN.1 的系統(tǒng)中起著極為重要的作用,是整個系統(tǒng)中不可缺少的一部分,被用來處理針對不同的ASN.1 編解碼規(guī)則提供不同的編解碼函數(shù)[1]。例如:BER 編解碼規(guī)則對應BER 編解碼函數(shù),PER 編解碼規(guī)則對應PER 編解碼函數(shù),這些具體規(guī)則對應的編解碼函數(shù)通過調(diào)用其相應的ASN.1 運行庫完成其編解碼過程[2]??芍苯诱{(diào)用這些編解碼函數(shù)完成復雜數(shù)據(jù)結(jié)構與傳輸碼之間的轉(zhuǎn)換,從而開發(fā)出實用ASN.1 的應用系統(tǒng)。基于此,本研究著眼于提高編解碼運行庫系統(tǒng)的靈活性和移植性,以降低使用難度為目標,設計實現(xiàn)一種智能化編解碼系統(tǒng)。

        2 PER 分層運行庫系統(tǒng)模型組成和功能

        PER 的編碼原則就是用最簡單的規(guī)則得到最簡潔的編碼[3],相應地PER 的編碼規(guī)則也就更加復雜。除少數(shù)類型沿用了BER 的編碼方法外,PER 各個數(shù)據(jù)類型的編碼比BER 都精簡得多,冗余信息極少。在此可設計一個底層的函數(shù)庫,把這些共同的特征函數(shù)封裝在一起,以此大大提高運行庫的執(zhí)行效率?;诓煌珹SN.1 編碼規(guī)則的共同點,設計出一個ASN.1 分層運行庫系統(tǒng),其建模結(jié)構如圖1 所示。

        圖1 ASN.1 分層運行庫系統(tǒng)模型

        圖中各主要部分功能簡介如下:

        底層函數(shù)庫層ASN.1 編解碼函數(shù)的很多代碼是各種類型所共用的,如果提供公共函數(shù)以供其它編解碼函數(shù)調(diào)用,就可減少不必要的代碼重復。

        ASN.1 各種編解碼規(guī)則庫層在上述的公共函數(shù)庫層之上,可根據(jù)ASN.1 各種編碼規(guī)則編寫不同類型的編解碼函數(shù)庫,例如:BER 編解碼運行庫、PER 編解碼運行庫、DER 編解碼運行庫等。以此可令ASN.1 數(shù)據(jù)值編碼大為簡化。如果為每個基本的ASN.1 數(shù)據(jù)類型編寫編解碼函數(shù),則可以提供公共的函數(shù)庫給各應用系統(tǒng)調(diào)用。

        宏定義層把常用的代碼段定義為宏,這樣就便于定義與應用有關類型的編解碼函數(shù)。提供一部分宏定義直接供其調(diào)用,包括處理內(nèi)存分配、釋放和長度計算的宏定義。

        不同編解碼規(guī)則都有相同的表述數(shù)據(jù)類型的方式,可分為:簡單類型、復合類型和其它類型[4]。ASN.1 的PER 分層運行庫系統(tǒng)模型也隨之包括簡單、復合與其它類型的編解碼處理層。ASN.1 的PER 分層運行庫系統(tǒng)的總體設計框架如圖2 所示。

        圖2 ASN.1 的PER 分層運行庫模型

        圖中各主要部分的功能為:

        簡單類型編解碼層該層位于模型的最底層,是為ASN.1 語法描述中定義的所有基本數(shù)據(jù)類型提供的編解碼函數(shù),一個基本類型對應一套編解碼流程和一對編解碼函數(shù)。

        復雜類型編解碼層該層位居中間,與其對應的是ASN.1 智能PER 編解碼系統(tǒng)的中間結(jié)構編解碼處理層。如此的構成,可實現(xiàn)直接調(diào)用,無需在運行庫中再次查找,省去了代碼的重復壓棧和出棧,提高編解碼運行庫的運行時間,同時也節(jié)約了代碼運行所占的空間。

        其它類型編解碼層這一層位于運行庫系統(tǒng)的最上層,對除了基本類型和構造類型外的其它ASN.1 類型,即對ASN. I 中的CHIOCE 和ANY 類型,進行編解碼處理。

        運行庫函數(shù)不應隨著相應協(xié)議的變化而變化,它實現(xiàn)的是編解碼底層的支撐函數(shù),符合標準C,具有較好的可移植性。

        3 簡單類型編解碼處理層設計實現(xiàn)

        簡單類型編解碼處理層的接口函數(shù)的實現(xiàn)應基于輸入需要編碼或者解碼的數(shù)據(jù)、數(shù)據(jù)長度、輸出編解碼數(shù)據(jù)的需求[5]。先設計一個結(jié)構體RUNBuffer 用來存儲消息緩沖區(qū)的編解碼數(shù)據(jù):

        typedef struct {

        char* data;

        unsigned int byteIndex;

        int size;

        short int bitoffset;

        unsigned char aligned;

        }RUNBuffer;

        RUNBuffer 結(jié)構體中變量data 是一個字符串指針,指向輸入數(shù)據(jù)起始的地址;變量byteIndex 是一個無符號整形,表示當前編碼結(jié)果字節(jié)的位置;變量size 是一個整型的值,表示當前緩沖區(qū)的大??;變量bitoffset 是一個短整型的值,表示當前地址偏移了多少位;變量aligned 是一個無符號的字符類型,表示當前數(shù)據(jù)是否為PER 的對齊方式。

        在以下示例中,對ASN.1 基本類型的編解碼算法進行設計,重點以整型為例,詳細給出編碼算法、整型編碼模塊實現(xiàn)流程圖和函數(shù)編解碼實現(xiàn)代碼:

        INTEGER 類型編解碼算法:

        步驟1:判斷整數(shù)有無約束,如果沒有約束,就按照無約束編碼方式,用最少字節(jié)編碼n 的值,內(nèi)容字節(jié)的前面需要長度編碼,表示n 的值占用了多少個字節(jié)。長度也用最少字節(jié)編碼。編碼成功,返回值為1,結(jié)束;如果有,則跳到步驟2。

        步驟2:判斷整數(shù)約束限度到唯一值,如果是,則編碼失敗,返回值-1,結(jié)束;如果不是,則跳到步驟3。

        步驟3:判斷整數(shù)約束的下限是否是無限的,如果是,則按無約束方式編碼,編碼成功,返回值1,結(jié)束;如果不是,則跳到步驟4;

        步驟4:判斷整數(shù)約束的下限是否是一個有限數(shù),如果是,則上限是一個無限數(shù),按照半約束整數(shù)方式編碼,編碼成功,返回值1,結(jié)束;如果不是,則跳到步驟5;

        步驟5:判斷整數(shù)約束的下限和上限是否都是有限數(shù),如果不是,則編碼失敗,返回值-1,結(jié)束;如果是,則按照約束整數(shù)方式編碼,編碼成功,返回值1,結(jié)束。

        INTEGER 類型編碼流程圖如圖3。

        圖3 整型編碼模塊實現(xiàn)流程圖

        4 復雜類型編解碼處理層設計實現(xiàn)

        4.1 算法約束規(guī)則

        復雜類型即為ASN.1 中的構造類型,對此可按照表1 所示的規(guī)則處理[6]。

        表1 復雜類型算法約束

        表中所示的這四種類型編碼算法,在Canonical PER 中和Basic PER 中,標記有DEFAULT 的成員,如果要編碼的值是缺省值,則此成員的編碼省略;而對于結(jié)構化的成員,即使它的取值是缺省值,是否被編碼仍須由以下兩點來判定:

        ①類型是可擴展的且取值沒有出現(xiàn)擴展附加部分,則SEQUENCE 的值的編碼結(jié)束;

        ②類型是可擴展的且取值有n 個擴展附加部分,則添加一個n 比特bitmap,對應比特取值1,表示該擴展附加部分出現(xiàn)。

        當長度為n 的bitmap 增加一個長度指示后,編碼方式為小的非負整數(shù)的編碼。后面依次出現(xiàn)的擴展附加部分的編碼方式如下:

        擴展附加部分是單個成員,則以open 類型來編碼,即包括長度字段和整數(shù)個字節(jié)的值字段;

        擴展附加部分是由雙重方括號內(nèi)全部成員組成,則擴展附加部分的值以open 類型編碼。區(qū)別在于:雙重方括號內(nèi)全部成員的值均作為一個sequence類型的取值來編碼[7]。set 中的元素也可以是可選的,用關鍵字optional 來描述,若具有缺省值,用default來描述。

        4.2 具體編碼算法

        算法首先要判定數(shù)據(jù)的類型,如果經(jīng)判定數(shù)據(jù)類型為sequence,則計算其中出現(xiàn)的具有可選/必選屬性的元素個數(shù),用n 位來表示這n 個元素是否出現(xiàn),若出現(xiàn)了,則用1 表示;若沒有出現(xiàn),則用0 表示。這n 位數(shù)的順序就是元素在sequence 中出現(xiàn)的順序。然后按元素的出現(xiàn)順序和類型調(diào)用相應的編碼函數(shù),編碼結(jié)束。

        如果經(jīng)判定數(shù)據(jù)類型為set,則計算其中出現(xiàn)的具有可選/必選屬性的元素個數(shù),用n 位來表示,若出現(xiàn),則用1 表示;若沒有,則用0 表示。這n 位數(shù)的順序就是元素在set 中出現(xiàn)的順序。按元素的定義順序和類型調(diào)用相應的編碼函數(shù),編碼結(jié)束。

        SEQUENT OF 數(shù)據(jù)類型編碼過程和SEQUENT相同。而SET OF 數(shù)據(jù)類型編碼過程和SET 相同。

        以下為SEQUENCE 類型的編碼函數(shù):

        int SEQUENCE_encode_per(asn_per_constraints_t*constraints,

        asn_codec_max*opt_codec_max,

        void*sptr,asn_per_outp_t*po)

        5 其它類型編解碼處理層設計實現(xiàn)

        除了上述類別外,ASN.1 中還有CHIOCE 和ANY 類別,其中ANY 表示任意類型,CHIOCE 表示一個或多個可選項的聯(lián)合,如下所示[8]:

        CallEventDetail::=CHOICE{

        mobileOriginatedCall

        mobileTerminatedCall

        LocationService

        }

        對于CHOICE 類別,編碼數(shù)據(jù)時一次只能選定一個元素。CHOICE 類型的解碼函數(shù)為:

        int CHOICE_decode_per(asn_codec_max* opt_codec_max,

        asn_per_data *pd, asn_per_constraints *constraints,

        void **buf)

        6 結(jié) 束 語

        ASN.1 的PER 分層運行庫系統(tǒng)模型的提出,是考慮到目前運行系統(tǒng)存在的弊端,模型嘗試解決傳統(tǒng)ASN.1 運行系統(tǒng)的瓶頸問題,也給出了使用C 語言設計一個ASN.1 智能PER 分層運行庫系統(tǒng)的實現(xiàn)過程。詳細分析PER 編解碼算法,從長度域編解碼算法到基本類型編碼算法,從基本編解碼處理層的實現(xiàn),到構造類型編解碼處理層的實現(xiàn),通過PER 可見子類型約束和宏的使用對代碼進行了優(yōu)化。設計實現(xiàn)的軟件可以完成簡單ASN.1 協(xié)議的編解碼功能,對ASN.1 相關系統(tǒng)有較高的應用價值。為未來實現(xiàn)ASN.1 工具的其他功能打下了基礎,在此基礎上可結(jié)合其他應用語言的特性實現(xiàn)完整的ASN.1 運行庫功能。

        猜你喜歡
        規(guī)則系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        撐竿跳規(guī)則的制定
        數(shù)獨的規(guī)則和演變
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        規(guī)則的正確打開方式
        幸福(2018年33期)2018-12-05 05:22:42
        讓規(guī)則不規(guī)則
        Coco薇(2017年11期)2018-01-03 20:59:57
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        少妇愉情理伦片| 99在线精品国产不卡在线观看| 1000部拍拍拍18勿入免费视频下载| 国产精品欧美日韩在线一区| 久久综合一本中文字幕| 日本黄色特级一区二区三区| 亚洲激情一区二区三区不卡| 一区二区三区中文字幕p站| 亚洲人成影院在线观看| 欧美在线播放一区二区| 超碰观看| 中文字幕亚洲精品专区| 国产自拍高清在线观看| 亚洲第一最快av网站| 欧美真人性做爰一二区| 国产在线不卡免费播放| 中文字幕日韩人妻在线| 蜜桃a人妻精品一区二区三区| 欧美私人情侣网站| 国产亚洲精品第一综合麻豆| 国产免费网站看v片元遮挡| 视频二区 无码中出| 日韩一区二区三区久久精品| 97无码免费人妻超级碰碰夜夜 | 国内精品女同一区二区三区| 欧洲美熟女乱又伦av影片| 欧美第一黄网免费网站| 久久www免费人成—看片| 中文字幕乱码免费视频| 在线a人片免费观看国产| 国产精品av网站在线| 精品精品久久宅男的天堂| 国产呦系列呦交| 美日韩毛片| 日本精品啪啪一区二区| 国产自拍精品视频免费| av免费网址在线观看| 亚洲av无码av制服丝袜在线| 国产日韩欧美视频成人| 精品国产一区二区av麻豆不卡| 无码喷潮a片无码高潮|