From 18bd1239bee04427340a44f57f993ea92c264e41 Mon Sep 17 00:00:00 2001 From: Kenneth Lundin Date: Fri, 19 Feb 2010 14:01:57 +0000 Subject: OTP-8463 Support for EXTENSIBILITY IMPLIED and SET/SEQ OF NamedType is added. --- lib/asn1/test/h323test.erl | 172 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 lib/asn1/test/h323test.erl (limited to 'lib/asn1/test/h323test.erl') diff --git a/lib/asn1/test/h323test.erl b/lib/asn1/test/h323test.erl new file mode 100644 index 0000000000..60d2c39be0 --- /dev/null +++ b/lib/asn1/test/h323test.erl @@ -0,0 +1,172 @@ +%% +%% %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. + + + + + + -- cgit v1.2.3