test: adding testcases for TCAP_MAP and TCAP_CAP

This commit is contained in:
mitshell 2017-08-31 23:27:42 +02:00
parent 3aa3ad5e7a
commit aa6979e9ef
1 changed files with 104 additions and 10 deletions

View File

@ -42,6 +42,16 @@ from pycrate_asn1rt.asnobj_ext import *
from pycrate_asn1rt.init import init_modules
# do not print runtime warnings on screen
ASN1Obj._SILENT = True
# handle default values in PER the canonical way
ASN1CodecPER.GET_DEFVAL = True
ASN1CodecPER.CANONICAL = True
# print ascii representation in comments when returning the ASN.1 textual encoding
BIT_STR._ASN_WASC = False
OCT_STR._ASN_WASC = False
def test_rt_base():
from test import test_asn1rt_mod
Mod = GLOBAL.MOD['Test-Asn1rt']
@ -1373,11 +1383,6 @@ def test_rrc3g():
GLOBAL.clear()
from pycrate_asn1dir import RRC3G
#
ASN1CodecPER.GET_DEFVAL = True
ASN1CodecPER.CANONICAL = True
BIT_STR._ASN_WASC = False
OCT_STR._ASN_WASC = False
#
PCCH = RRC3G.Class_definitions.PCCH_Message
for p in pkts_rrc3g[:3]:
PCCH.from_uper(p)
@ -1463,6 +1468,7 @@ pkts_s1ap = tuple(map(unhexlify, (
'2017000f000002000040020064000840020001'
)))
# X2AP packets contributed by Alexandre DeOliveira, originally in libmich
pkts_x2ap = tuple(map(unhexlify, (
'000600808a000004001500080011f1110001013000140051020000330011f11101011010029011f111004c2c05dc330000340011f1110101102000a011f111004c2c05dc444000350011f1110101103000a011f111005eec189c3300010011f1110a0ab010002705dc001800060011f1118000a8dd4018000002100040030001031001400a0001c006001008020100',
'0000007b000006000a00020001000540020000000b000800522018000000200017000700522018000102000e004100010000000000303132333435363738393031323334353637383930313233343536373839303120000000000004400e0000010a03e01401a8c000000002020000000f400c000052201800000021800003',
@ -1473,11 +1479,6 @@ def test_lteran():
from pycrate_asn1dir import S1AP
from pycrate_asn1dir import X2AP
#
ASN1CodecPER.GET_DEFVAL = True
ASN1CodecPER.CANONICAL = True
BIT_STR._ASN_WASC = False
OCT_STR._ASN_WASC = False
#
S1PDU = S1AP.S1AP_PDU_Descriptions.S1AP_PDU
for p in pkts_s1ap:
S1PDU.from_aper(p)
@ -1512,3 +1513,96 @@ def test_lteran():
X2PDU.from_asn1(txt)
assert( X2PDU() == val )
# https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=view&target=gsm_map_with_ussd_string.pcap
pkts_tcap_map = tuple(map(unhexlify, (
'626a48042f3b46026b3a2838060700118605010101a02d602b80020780a109060704000001001302be1a2818060704000001010101a00da00b80099656051124006913f66c26a12402010102013b301c04010f040eaa180da682dd6c31192d36bbdd468007917267415827f2',
)))
def test_tcap_map():
GLOBAL.clear()
from pycrate_asn1dir import TCAP_MAP
#
M = TCAP_MAP.TCAP_MAP_Messages.TCAP_MAP_Message
for p in pkts_tcap_map:
M.from_ber(p)
val = M()
ret = M.to_ber()
# hopefully here, BER re-encoding does not diverge from the original packet
assert( ret == p )
M.from_ber_ws(p)
val_ws = M()
struct = M._struct()
ret = M.to_ber_ws()
assert( ret == p )
assert( val == val_ws )
assert( M._struct() == struct )
txt = M.to_asn1()
M.from_asn1(txt)
assert( M() == val )
# https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=camel.pcap
# https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=camel2.pcap
pkts_tcap_cap = tuple(map(unhexlify, (
'628187480206f76b1e281c060700118605010101a011600f80020780a1090607040000010032016c61a15f020101020100305780012a830884111487095040f79c01029f32061487572586f9bf34148107913366020000f0a3098007313233343536379f3605a12345678f9f3707913366020000f09f3807111487085040f79f39080230900211223370',
'6581be480213b8490206f76b2a2828060700118605010101a01d611b80020780a109060704000001003201a203020100a305a1030201006c8187a165020101020117305da05b300b800104810100a203800102300b800105810100a203800102300b800106810100a203800102300b800107810101a203800102300b800109810100a203800101300b800109810100a203800102300b80010a810101a203800101a116020102020123300e8007a0058003008ca0a203800101a10602010302011f',
'651c480206f7490213b86c12a1100201020201183008800107a403800101',
'653a4802ec0f49020d7c6c30a117020103020124040fa00da003810101a10380011a820100a115020104020118300d800109a303810101a403800100',
'64124902ec0f6c0ca10a02010402011604028490',
#
'6281994804070004006b1a2818060700118605010101a00d600ba1090607040000010032016c75a173020101020100306b80016e8208839021721090000f830303975785010a8c06831407010900bb0580038090a39c01029d068314070109009e0203619f320806079209100491f9bf35038301119f360513fa3d3dea9f37069122705700709f39080250114231016500bf3b088106912270570070',
'6581b24802047b4904070004006b2a2828060700118605010101a01d611b80020780a109060704000001003201a203020100a305a1030201006c7aa165020101020117305da05b300b800104810100a203800102300b800105810100a203800102300b800106810100a203800102300b800107810101a203800102300b800109810100a203800101300b800109810100a203800102300b80010a810101a203800101a1110201020201143009a00704050210792210',
'65264804070004004902047b6c1aa1180201020201183010800104a206a20480028490a303810102',
'64144904070004006c0ca10a02010302011604028495'
)))
def test_tcap_cap():
GLOBAL.clear()
from pycrate_asn1dir import TCAP_CAP
#
M = TCAP_CAP.CAP_gsmSSF_gsmSCF_pkgs_contracts_acs.GenericSSF_gsmSCF_PDUs
for p in pkts_tcap_cap:
M.from_ber(p)
val = M()
ret = M.to_ber()
# hopefully here, BER re-encoding does not diverge from the original packet
assert( ret == p )
M.from_ber_ws(p)
val_ws = M()
struct = M._struct()
ret = M.to_ber_ws()
assert( ret == p )
assert( val == val_ws )
assert( M._struct() == struct )
txt = M.to_asn1()
M.from_asn1(txt)
assert( M() == val )
pkts_X509 = tuple(map(unhexlify, (
# https://www.google.fr/
b'3082078a30820672a0030201020208657d462b1509b3b7300d06092a864886f70d01010b05003049310b300906035504061302555331133011060355040a130a476f6f676c6520496e63312530230603550403131c476f6f676c6520496e7465726e657420417574686f72697479204732301e170d3137303832323136343232355a170d3137313131343136333030305a3066310b30090603550406130255533113301106035504080c0a43616c69666f726e69613116301406035504070c0d4d6f756e7461696e205669657731133011060355040a0c0a476f6f676c6520496e633115301306035504030c0c2a2e676f6f676c652e636f6d3059301306072a8648ce3d020106082a8648ce3d030107034200045d105bb2427733023a751eb73901b97ee50ce862d3c0d1f40cf3ed34e52fd88cd8c0b6f43aec0f26ec458340bd561d73b219887f689f47c537d1f8151b071203a38205223082051e301d0603551d250416301406082b0601050507030106082b06010505070302300b0603551d0f040403020780308203e10603551d11048203d8308203d4820c2a2e676f6f676c652e636f6d820d2a2e616e64726f69642e636f6d82162a2e617070656e67696e652e676f6f676c652e636f6d82122a2e636c6f75642e676f6f676c652e636f6d82142a2e64623833333935332e676f6f676c652e636e82062a2e672e636f820e2a2e6763702e677674322e636f6d82162a2e676f6f676c652d616e616c79746963732e636f6d820b2a2e676f6f676c652e6361820b2a2e676f6f676c652e636c820e2a2e676f6f676c652e636f2e696e820e2a2e676f6f676c652e636f2e6a70820e2a2e676f6f676c652e636f2e756b820f2a2e676f6f676c652e636f6d2e6172820f2a2e676f6f676c652e636f6d2e6175820f2a2e676f6f676c652e636f6d2e6272820f2a2e676f6f676c652e636f6d2e636f820f2a2e676f6f676c652e636f6d2e6d78820f2a2e676f6f676c652e636f6d2e7472820f2a2e676f6f676c652e636f6d2e766e820b2a2e676f6f676c652e6465820b2a2e676f6f676c652e6573820b2a2e676f6f676c652e6672820b2a2e676f6f676c652e6875820b2a2e676f6f676c652e6974820b2a2e676f6f676c652e6e6c820b2a2e676f6f676c652e706c820b2a2e676f6f676c652e707482122a2e676f6f676c656164617069732e636f6d820f2a2e676f6f676c65617069732e636e82142a2e676f6f676c65636f6d6d657263652e636f6d82112a2e676f6f676c65766964656f2e636f6d820c2a2e677374617469632e636e820d2a2e677374617469632e636f6d820a2a2e677674312e636f6d820a2a2e677674322e636f6d82142a2e6d65747269632e677374617469632e636f6d820c2a2e75726368696e2e636f6d82102a2e75726c2e676f6f676c652e636f6d82162a2e796f75747562652d6e6f636f6f6b69652e636f6d820d2a2e796f75747562652e636f6d82162a2e796f7574756265656475636174696f6e2e636f6d82072a2e79742e6265820b2a2e7974696d672e636f6d821a616e64726f69642e636c69656e74732e676f6f676c652e636f6d820b616e64726f69642e636f6d821b646576656c6f7065722e616e64726f69642e676f6f676c652e636e821c646576656c6f706572732e616e64726f69642e676f6f676c652e636e8204672e636f8206676f6f2e676c8214676f6f676c652d616e616c79746963732e636f6d820a676f6f676c652e636f6d8212676f6f676c65636f6d6d657263652e636f6d8218736f757263652e616e64726f69642e676f6f676c652e636e820a75726368696e2e636f6d820a7777772e676f6f2e676c8208796f7574752e6265820b796f75747562652e636f6d8214796f7574756265656475636174696f6e2e636f6d820579742e6265306806082b06010505070101045c305a302b06082b06010505073002861f687474703a2f2f706b692e676f6f676c652e636f6d2f47494147322e637274302b06082b06010505073001861f687474703a2f2f636c69656e7473312e676f6f676c652e636f6d2f6f637370301d0603551d0e04160414bb878d2e10f930b01fdea30a71ebcc9ab46e3b99300c0603551d130101ff04023000301f0603551d230418301680144add06161bbcf668b576f581b6bb621aba5a812f30210603551d20041a3018300c060a2b06010401d6790205013008060667810c01020230300603551d1f042930273025a023a021861f687474703a2f2f706b692e676f6f676c652e636f6d2f47494147322e63726c300d06092a864886f70d01010b050003820101004bb6a5e86b4dd533d6b6b995dadcb29a6685d112d3d7e268d92398deb2098004e4eaafb822f588f584583e39298e44907faa8231d7e32bd764124010b580047f07751786075825ee38f5d370a8fdc69fc0e2e43a816ba16121658d152e00bb1a488b06cd7f53e9962e737a9bdcea99a2b73bfe46c4c3270c3b344ed7d40f23c233ee7918edcf213cc9dc1f7973ae6567f1f00b6fbe8e0756a46721ed6005fafe70261d103d51a24818f4bc7539e7f9d778c0a93e989f9616174c9d801118e992878160d0a70265bcd6cd189ac8ca06437e87241ea3e842f2939a265c117359dc5069ef49abcc20ccd281bfe5dda77bd1d3dd4af482c667d3de2b788b646f60c0',
)))
def test_X509():
GLOBAL.clear()
from pycrate_asn1dir import RFC5912
#
Cert = RFC5912.PKIX1Explicit_2009.Certificate
for p in pkts_X509:
Cert.from_der(p)
val = Cert()
ret = Cert.to_der()
assert( ret == p )
Cert.from_der_ws(p)
val_ws = Cert()
struct = Cert._struct()
ret = Cert.to_der_ws()
assert( ret == p )
assert( val == val_ws )
assert( Cert._struct() == struct )
txt = Cert.to_asn1()
Cert.from_asn1(txt)
assert( Cert() == val )