999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

高 益

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

1 引 言

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

typedef struct {

char* data;

unsigned int byteIndex;

int size;

short int bitoffset;

unsigned char aligned;

}RUNBuffer;

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

在以下示例中,對ASN.1 基本類型的編解碼算法進(jìn)行設(shè)計,重點以整型為例,詳細(xì)給出編碼算法、整型編碼模塊實現(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 復(fù)雜類型編解碼處理層設(shè)計實現(xiàn)

4.1 算法約束規(guī)則

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

表1 復(fù)雜類型算法約束

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

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

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

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

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

擴(kuò)展附加部分是由雙重方括號內(nèi)全部成員組成,則擴(kuò)展附加部分的值以open 類型編碼。區(qū)別在于:雙重方括號內(nèi)全部成員的值均作為一個sequence類型的取值來編碼[7]。set 中的元素也可以是可選的,用關(guān)鍵字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)用相應(yīng)的編碼函數(shù),編碼結(jié)束。

如果經(jīng)判定數(shù)據(jù)類型為set,則計算其中出現(xiàn)的具有可選/必選屬性的元素個數(shù),用n 位來表示,若出現(xiàn),則用1 表示;若沒有,則用0 表示。這n 位數(shù)的順序就是元素在set 中出現(xiàn)的順序。按元素的定義順序和類型調(diào)用相應(yīng)的編碼函數(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 其它類型編解碼處理層設(shè)計實現(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 語言設(shè)計一個ASN.1 智能PER 分層運行庫系統(tǒng)的實現(xiàn)過程。詳細(xì)分析PER 編解碼算法,從長度域編解碼算法到基本類型編碼算法,從基本編解碼處理層的實現(xiàn),到構(gòu)造類型編解碼處理層的實現(xiàn),通過PER 可見子類型約束和宏的使用對代碼進(jìn)行了優(yōu)化。設(shè)計實現(xiàn)的軟件可以完成簡單ASN.1 協(xié)議的編解碼功能,對ASN.1 相關(guān)系統(tǒng)有較高的應(yīng)用價值。為未來實現(xiàn)ASN.1 工具的其他功能打下了基礎(chǔ),在此基礎(chǔ)上可結(jié)合其他應(yīng)用語言的特性實現(xiàn)完整的ASN.1 運行庫功能。

猜你喜歡
規(guī)則系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
撐竿跳規(guī)則的制定
數(shù)獨的規(guī)則和演變
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(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
主站蜘蛛池模板: www成人国产在线观看网站| 亚洲人网站| 欧美、日韩、国产综合一区| 国产区网址| 亚洲AV人人澡人人双人| 久久综合结合久久狠狠狠97色| 4虎影视国产在线观看精品| 国产69精品久久| 欧美激情视频在线观看一区| 日本AⅤ精品一区二区三区日| 一级毛片在线免费视频| 亚洲综合天堂网| 久久人人97超碰人人澡爱香蕉| 一级毛片a女人刺激视频免费| 日韩一级毛一欧美一国产| 日韩福利在线观看| 久久中文字幕av不卡一区二区| www.youjizz.com久久| 日本a级免费| 久久黄色视频影| 国产成人精品视频一区二区电影| 国产精品第页| 91毛片网| 国产精品美乳| 国产情精品嫩草影院88av| 欧美午夜理伦三级在线观看| 91久久夜色精品| 久久久久国产精品熟女影院| 成人va亚洲va欧美天堂| 成人国产免费| 精品国产电影久久九九| 2022精品国偷自产免费观看| 国产一级一级毛片永久| 亚洲国产清纯| 国产网站在线看| 亚洲国产精品日韩欧美一区| 极品私人尤物在线精品首页| 毛片在线区| 久草视频福利在线观看| 久久精品国产精品一区二区| 亚州AV秘 一区二区三区| 欧美亚洲中文精品三区| 亚洲激情区| 国产浮力第一页永久地址| 在线无码私拍| 国产大片黄在线观看| 一级片一区| 色哟哟色院91精品网站| 最新日韩AV网址在线观看| 午夜视频免费试看| 欧美三级自拍| 精品自窥自偷在线看| 亚洲香蕉久久| 91精品啪在线观看国产60岁| 久久大香香蕉国产免费网站| 国产美女免费| 国产欧美日韩资源在线观看| 青青网在线国产| 日本尹人综合香蕉在线观看| 中文字幕精品一区二区三区视频 | 无码人妻热线精品视频| 色欲综合久久中文字幕网| 特级毛片免费视频| 亚洲日本在线免费观看| 欧美另类第一页| 国产成人一区免费观看| 久热这里只有精品6| 国模私拍一区二区| 欧美一区国产| 久99久热只有精品国产15| 久久国产V一级毛多内射| 久久国产精品麻豆系列| 国产欧美精品专区一区二区| 亚洲色精品国产一区二区三区| 91黄视频在线观看| 日韩精品欧美国产在线| 精品一区二区三区中文字幕| 国产偷倩视频| 国产成熟女人性满足视频| 一区二区三区高清视频国产女人| 国产aⅴ无码专区亚洲av综合网| 国产激情无码一区二区免费|