aboutsummaryrefslogblamecommitdiffstats
path: root/lib/asn1/test/h323test.erl
blob: 60d2c39be0726fcb8e30354db07c915aaa00cbbe (plain) (tree)











































































































































































                                                                                                                                                                                                                                                                                                                                                                                
%%
%% %CopyrightBegin%
%% 
%% Copyright Ericsson AB 1999-2009. All Rights Reserved.
%% 
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
%% 
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
%% 
%% %CopyrightEnd%
%%
%%
-module(h323test).

-compile(export_all).
-export([compile/3,run/1]).
-include("test_server.hrl").

compile(Config,Rules,Options) ->
    ?line DataDir = ?config(data_dir,Config),
    ?line OutDir = ?config(priv_dir,Config),
    ?line true = code:add_patha(?config(priv_dir,Config)),
    ?line ok = asn1ct:compile(DataDir ++ "H235-SECURITY-MESSAGES",[Rules,{outdir,OutDir}]++Options),
    ?line ok = asn1ct:compile(DataDir ++ "H323-MESSAGES",[Rules,{outdir,OutDir}]++Options),
    ?line ok = asn1ct:compile(DataDir ++ "MULTIMEDIA-SYSTEM-CONTROL",[Rules,{outdir,OutDir}]++Options).
    
run(per_bin) ->
    run();
run(per) ->
    run();
run(_Rules) -> 
    ok.

run() ->
    ?line alerting(),
    ?line connect(),
    ok.

arq() ->
    _AdmissionRequest = "27900007086000340036003300320038003700370101805337010180533600AC1F38C60693000D000445367AE75C5740120300AC1F38C6415004E0200100110000D7D22EA88D511C0200AC1F38C6C0580100".


t0() ->
    Setup = "00B8060008914A0001010180533622C000000000074572696373736F6E0356302E3100010180533700AC1F38C206B80045367AE75C5740120300AC1F38C6415000411C110000D7D22EA88D511C0200AC1F3806C0583802150000080E1403001E80800A04000100AC1F38C661A820400000060401004E1403001E80801114000100AC1F38C72EE000AC1F38C72EE00100010063AA34AB"
,
    ByteList = hexstr2bytes(Setup),
    asn1_wrapper:decode('H323-MESSAGES','H323-UU-PDU',ByteList).

t1() ->
    AdmissionRequest = "27900007086000340036003300320038003700370101805337010180533600AC1F38C60693000D000445367AE75C5740120300AC1F38C6415004E0200100110000D7D22EA88D511C0200AC1F38C6C0580100",
    ByteList = hexstr2bytes(AdmissionRequest),
    asn1_wrapper:decode('H323-MESSAGES','RasMessage',ByteList).

t2() ->
    Cs = "080200040504038090A56C059132303033700591323030347E00930500B8060008914A0001010180533622C000000000074572696373736F6E0356302E3100010180533700AC1F38C206B80045367AE75C5740120300AC1F38C6415000411C110000D7D22EA88D511C0200AC1F3806C0583802150000080E1403001E80800A04000100AC1F38C661A820400000060401004E1403001E80801114000100AC1F38C72EE000AC1F38C72EE00100010063AA34AB",
    ByteList = hexstr2bytes(Cs),
    asn1_wrapper:decode('H323-MESSAGES','H323-UU-PDU',ByteList).

t3() ->
    Cs = "10b8060008914a0002044003004d0067006f006e018085cc22c0b500534c164d6963726f736f6674ae204e65744d656574696e67ae0003332e3000000101808c990088e1293a06b8001689edc5bf23d3118c2d00c04f4b1cd0000c07000a00000204dc40b500534c3c0200000028000000000000001b0000008138427484ccd211b4e300a0c90d0660100000001289edc5bf23d3118c2d00c04f4b1cd00000000000000000a615d9ee",
    ByteList = hexstr2bytes(Cs),
    asn1_wrapper:decode('H323-MESSAGES','H323-UU-PDU',ByteList).
    
dec_alerting() ->
    Cs = "0380060008914a0002020120110000000000000000000000000000000000",
    _Slask="E83AE983",
    ByteList = hexstr2bytes(Cs),
    asn1_wrapper:decode('H323-MESSAGES','H323-UserInformation',ByteList).

enc_alerting(V) ->
    asn1_wrapper:encode('H323-MESSAGES','H323-UserInformation',V).

alerting() ->
    ?line {ok,V} = dec_alerting(),
    ?line {ok,B} = enc_alerting(V),
    ?line ByteList = lists:flatten(B),
    ?line {ok,V} = asn1_wrapper:decode('H323-MESSAGES','H323-UserInformation',ByteList).


dec_connect() ->
    Cs = "02c0060008914a00020088e1293a04a322c0b500534c164d6963726f736f6674ae204e65744d656474696e67ae0003332e3000001689edc5bf23d3118c2d00c04f4b1cd00900110000000000000000000000000000000000",
    _Slask="2f530a3f",
    ByteList = hexstr2bytes(Cs),
    asn1_wrapper:decode('H323-MESSAGES','H323-UserInformation',ByteList).
    
enc_connect(V) ->
    asn1_wrapper:encode('H323-MESSAGES','H323-UserInformation',V).

connect() ->
    ?line {ok,V} = dec_connect(),
    ?line {ok,B} = enc_connect(V),
    ?line ByteList = lists:flatten(B),
    ?line {ok,V} = asn1_wrapper:decode('H323-MESSAGES','H323-UserInformation',ByteList).

dec_h245_TCS() ->
    Cs ="02700106000881750003" 
	"800d00003c000100000100000100000e"
	"807fff04b5428080010180000e483060"
	"0100800c96a88000002020b500534c48"
	"020000000000f4010000f40101000400"
	"0000000002000100401f000000100000"
	"000104002000f4010700000100000002"
	"00ff00000000c0004000f0000000cc01"
	"30ff880118ff00008000012040b38000"
	"0220c0b38000032020b500534c280200"
	"00000000a0000000a000040010000000"
	"000070000100401f0000580200000c00"
	"1000000000008000042020b500534c28"
	"020000000000a0000000a00004001000"
	"0000000071000100401f00003a070000"
	"25001000000000008000052020b50053"
	"4c280200000000008000000080000500"
	"14000000000072000100401f00000809"
	"000025001000000000008000062020b5"
	"00534c28020000000000800000008000"
	"050014000000000073000100401f0000"
	"7f0a00002b0010000000000080000722"
	"000b40000909a00120390c000a099001"
	"20390c000b09880120390c000c08a220"
	"3940000d089220390004800602070007"
	"00060004000500020001000000030000"
	"0a00000e800702070007000600040005"
	"000200010000000300000900000e8008"
	"02070007000600040005000200010000"
	"000300000c00000e8009020700070006"
	"00040005000200010000000300000b00"
	"000e800a020700070006000400050002"
	"00010000000300000d00000e0300000b"
	"01003280299d93369631bc",
    ByteList = hexstr2bytes(Cs),
    asn1_wrapper:decode('MULTIMEDIA-SYSTEM-CONTROL',
		  'MultimediaSystemControlMessage',ByteList).

	hexstr2bytes([D1,D2|T]) ->
    [dig2num(D1)*16+dig2num(D2)|hexstr2bytes(T)];
hexstr2bytes([]) ->
    [].

dig2num(D) when D >= $0, D =< $9 ->
    D - $0;
dig2num(D) when D >= $a, D =< $f ->
    10 + D - $a;
dig2num(D) when D >= $A, D =< $F ->
    10 + D - $A.

bytes2hexstr(Bytes) ->
    bytes2hexstr(Bytes,[]).

bytes2hexstr([B|Bytes],Acc) ->
    D1 = num2dig(B bsr 4),
    D2 = num2dig(B band 15),
    bytes2hexstr(Bytes,[D2,D1|Acc]);
bytes2hexstr([],Acc) ->
    lists:reverse(Acc).

num2dig(Num) when Num =< 9 ->
    $0 + Num;
num2dig(Num) ->
    $a + Num - 10.