def test_s1ap_14_4_0(self): with self.assertRaises(TypeError): s1ap = asn1tools.compile_dict(deepcopy(S1AP_14_4_0), 'per') # Message 1. decoded_message = ('successfulOutcome', { 'procedureCode': 17, 'criticality': 'reject', 'value': { 'protocolIEs': [{ 'id': 105, 'criticality': 'reject', 'value': [{ 'servedPLMNs': [b'\xab\xcd\xef', b'\x12\x34\x56'], 'servedGroupIDs': [b'\x22\x22'], 'servedMMECs': [b'\x11'] }] }] } }) encoded_message = ( b'\x20\x11\x00\x15\x00\x00\x01\x00\x69\x00\x0e\x00\x40\xab\xcd\xef\x12' b'\x34\x56\x00\x00\x22\x22\x00\x11') encoded = s1ap.encode('S1AP-PDU', decoded_message) self.assertEqual(encoded, encoded_message)
def test_lpp_14_3_0(self): lpp = asn1tools.compile_dict(deepcopy(LPP_14_3_0), 'uper') # Message 1. decoded_message = { 'transactionID': { 'initiator': 'targetDevice', 'transactionNumber': 254 }, 'endTransaction': True, 'lpp-MessageBody': { 'c1': { 'provideAssistanceData': { 'criticalExtensions': { 'c1': { 'spare1': None } } } } } } encoded_message = b'\x93\xfd\x1b' encoded = lpp.encode('LPP-Message', decoded_message) self.assertEqual(encoded, encoded_message) decoded = lpp.decode('LPP-Message', encoded) self.assertEqual(decoded, decoded_message)
def test_rrc_8_6_0(self): rrc = asn1tools.compile_dict(deepcopy(RRC_8_6_0), 'per') # Message 1. encoded = rrc.encode( 'PCCH-Message', { 'message': ('c1', ('paging', { 'systemInfoModification': 'true', 'nonCriticalExtension': {} })) }) self.assertEqual(encoded, b'\x28') # Message 2. encoded = rrc.encode('PCCH-Message', {'message': ('c1', ('paging', {}))}) self.assertEqual(encoded, b'\x00') # Message 3. encoded = rrc.encode( 'BCCH-BCH-Message', { 'message': { 'dl-Bandwidth': 'n6', 'phich-Config': { 'phich-Duration': 'normal', 'phich-Resource': 'half' }, 'systemFrameNumber': (b'\x12', 8), 'spare': (b'\x34\x56', 10) } }) self.assertEqual(encoded, b'\x04\x48\xd1')
def test_ieee1609_2(self): foo = asn1tools.compile_dict(deepcopy(IEEE1609_2), 'oer') decoded = { 'version': 1, 'content': ('caCerts', [{ 'version': 3, 'type': 'explicit', 'issuer': ('sha256AndDigest', 8 * b'\x01'), 'toBeSigned': { 'id': ('none', None), 'cracaId': 3 * b'\x32', 'crlSeries': 65535, 'validityPeriod': { 'start': 12345, 'duration': ('seconds', 5) }, 'appPermissions': [], 'certIssuePermissions': [], 'certRequestPermissions': [], 'verifyKeyIndicator': ('verificationKey', ('ecdsaNistP256', ('uncompressed', { 'x': 32 * b'\x14', 'y': 32 * b'\x54' }))) }, 'signature': ('ecdsaNistP256Signature', { 'r': ('x-only', 32 * b'\x98'), 's': 32 * b'\xab' }) }]) } encoded = ( b'\x01\x80\x01\x01\x80\x03\x00\x80\x01\x01\x01\x01\x01\x01\x01\x01' b'\x1c\x83\x32\x32\x32\xff\xff\x00\x00\x30\x39\x82\x00\x05\x01\x00' b'\x01\x00\x01\x00\x80\x80\x84\x14\x14\x14\x14\x14\x14\x14\x14\x14' b'\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14' b'\x14\x14\x14\x14\x14\x14\x14\x54\x54\x54\x54\x54\x54\x54\x54\x54' b'\x54\x54\x54\x54\x54\x54\x54\x54\x54\x54\x54\x54\x54\x54\x54\x54' b'\x54\x54\x54\x54\x54\x54\x54\x80\x80\x98\x98\x98\x98\x98\x98\x98' b'\x98\x98\x98\x98\x98\x98\x98\x98\x98\x98\x98\x98\x98\x98\x98\x98' b'\x98\x98\x98\x98\x98\x98\x98\x98\x98\xab\xab\xab\xab\xab\xab\xab' b'\xab\xab\xab\xab\xab\xab\xab\xab\xab\xab\xab\xab\xab\xab\xab\xab' b'\xab\xab\xab\xab\xab\xab\xab\xab\xab') self.assert_encode_decode(foo, 'Ieee1609dot2Peer2PeerPDU', decoded, encoded)
def test_x691_a2(self): a2 = asn1tools.compile_dict(deepcopy(X691_A2), 'uper') decoded_message = { 'name': { 'givenName': 'John', 'initial': 'P', 'familyName': 'Smith' }, 'title': 'Director', 'number': 51, 'dateOfHire': '19710917', 'nameOfSpouse': { 'givenName': 'Mary', 'initial': 'T', 'familyName': 'Smith' }, 'children': [{ 'name': { 'givenName': 'Ralph', 'initial': 'T', 'familyName': 'Smith' }, 'dateOfBirth': '19571111' }, { 'name': { 'givenName': 'Susan', 'initial': 'B', 'familyName': 'Jones' }, 'dateOfBirth': '19590717' }] } encoded_message = ( b'\x86\x5d\x51\xd2\x88\x8a\x51\x25\xf1\x80\x99\x84\x44\xd3\xcb\x2e' b'\x3e\x9b\xf9\x0c\xb8\x84\x8b\x86\x73\x96\xe8\xa8\x8a\x51\x25\xf1' b'\x81\x08\x9b\x93\xd7\x1a\xa2\x29\x44\x97\xc6\x32\xae\x22\x22\x22' b'\x98\x5c\xe5\x21\x88\x5d\x54\xc1\x70\xca\xc8\x38\xb8') encoded = a2.encode('PersonnelRecord', decoded_message) self.assertEqual(encoded, encoded_message) decoded = a2.decode('PersonnelRecord', encoded) self.assertEqual(decoded, decoded_message)
def test_x691_a4(self): a4 = asn1tools.compile_dict(deepcopy(X691_A4), 'uper') decoded_message = { 'a': 253, 'b': True, 'c': { 'e': True }, 'g': '123', 'h': True } encoded_message = (b'\x9e\x00\x06\x00\x04\x0a\x46\x90') with self.assertRaises(asn1tools.EncodeError): encoded = a4.encode('Ax', decoded_message) self.assertEqual(encoded, encoded_message) decoded = a4.decode('Ax', encoded) self.assertEqual(decoded, decoded_message)
class JerPublicKeyCodec(PublicKeyCodecBase): _Codec = asn1tools.compile_dict(PublicKeyCodecBase._CodecDict, codec="jer")
def test_rrc_8_6_0(self): rrc = asn1tools.compile_dict(deepcopy(RRC_8_6_0), 'jer') # Message 1. decoded_message = { 'message': ('c1', ('paging', { 'systemInfoModification': 'true', 'nonCriticalExtension': {} })) } encoded_message = ( b'{"message":{"c1":{"paging":{"systemInfoModification":"true","' b'nonCriticalExtension":{}}}}}') encoded = rrc.encode('PCCH-Message', decoded_message) self.assertEqual(loadb(encoded), loadb(encoded_message)) decoded = rrc.decode('PCCH-Message', encoded) self.assertEqual(decoded, decoded_message) # Message 2. decoded_message = { 'message': { 'dl-Bandwidth': 'n6', 'phich-Config': { 'phich-Duration': 'normal', 'phich-Resource': 'half' }, 'systemFrameNumber': (b'\x12', 8), 'spare': (b'\x34\x40', 10) } } encoded_message = ( b'{"message":{"dl-Bandwidth":"n6","phich-Config":{"phich-Duration' b'":"normal","phich-Resource":"half"},"spare":"3440","' b'systemFrameNumber":"12"}}') encoded = rrc.encode('BCCH-BCH-Message', decoded_message) self.assertEqual(loadb(encoded), loadb(encoded_message)) decoded = rrc.decode('BCCH-BCH-Message', encoded) self.assertEqual(decoded, decoded_message) # Message 3. decoded_message = { 'message': ('c1', ('systemInformation', { 'criticalExtensions': ('systemInformation-r8', { 'sib-TypeAndInfo': [ ('sib2', { 'ac-BarringInfo': { 'ac-BarringForEmergency': True, 'ac-BarringForMO-Data': { 'ac-BarringFactor': 'p95', 'ac-BarringTime': 's128', 'ac-BarringForSpecialAC': (b'\xf0', 5) } }, 'radioResourceConfigCommon': { 'rach-ConfigCommon': { 'preambleInfo': { 'numberOfRA-Preambles': 'n24', 'preamblesGroupAConfig': { 'sizeOfRA-PreamblesGroupA': 'n28', 'messageSizeGroupA': 'b144', 'messagePowerOffsetGroupB': 'minusinfinity' } }, 'powerRampingParameters': { 'powerRampingStep': 'dB0', 'preambleInitialReceivedTargetPower': 'dBm-102' }, 'ra-SupervisionInfo': { 'preambleTransMax': 'n8', 'ra-ResponseWindowSize': 'sf6', 'mac-ContentionResolutionTimer': 'sf48' }, 'maxHARQ-Msg3Tx': 8 }, 'bcch-Config': { 'modificationPeriodCoeff': 'n2' }, 'pcch-Config': { 'defaultPagingCycle': 'rf256', 'nB': 'twoT' }, 'prach-Config': { 'rootSequenceIndex': 836, 'prach-ConfigInfo': { 'prach-ConfigIndex': 33, 'highSpeedFlag': False, 'zeroCorrelationZoneConfig': 10, 'prach-FreqOffset': 64 } }, 'pdsch-ConfigCommon': { 'referenceSignalPower': -60, 'p-b': 2 }, 'pusch-ConfigCommon': { 'pusch-ConfigBasic': { 'n-SB': 1, 'hoppingMode': 'interSubFrame', 'pusch-HoppingOffset': 10, 'enable64QAM': False }, 'ul-ReferenceSignalsPUSCH': { 'groupHoppingEnabled': True, 'groupAssignmentPUSCH': 22, 'sequenceHoppingEnabled': False, 'cyclicShift': 5 } }, 'pucch-ConfigCommon': { 'deltaPUCCH-Shift': 'ds1', 'nRB-CQI': 98, 'nCS-AN': 4, 'n1PUCCH-AN': 2047 }, 'soundingRS-UL-ConfigCommon': ('setup', { 'srs-BandwidthConfig': 'bw0', 'srs-SubframeConfig': 'sc4', 'ackNackSRS-SimultaneousTransmission': True }), 'uplinkPowerControlCommon': { 'p0-NominalPUSCH': -126, 'alpha': 'al0', 'p0-NominalPUCCH': -127, 'deltaFList-PUCCH': { 'deltaF-PUCCH-Format1': 'deltaF-2', 'deltaF-PUCCH-Format1b': 'deltaF1', 'deltaF-PUCCH-Format2': 'deltaF0', 'deltaF-PUCCH-Format2a': 'deltaF-2', 'deltaF-PUCCH-Format2b': 'deltaF0' }, 'deltaPreambleMsg3': -1 }, 'ul-CyclicPrefixLength': 'len1' }, 'ue-TimersAndConstants': { 't300': 'ms100', 't301': 'ms200', 't310': 'ms50', 'n310': 'n2', 't311': 'ms30000', 'n311': 'n2' }, 'freqInfo': { 'additionalSpectrumEmission': 3 }, 'timeAlignmentTimerCommon': 'sf500' }), ('sib3', { 'cellReselectionInfoCommon': { 'q-Hyst': 'dB0', 'speedStateReselectionPars': { 'mobilityStateParameters': { 't-Evaluation': 's180', 't-HystNormal': 's180', 'n-CellChangeMedium': 1, 'n-CellChangeHigh': 16 }, 'q-HystSF': { 'sf-Medium': 'dB-6', 'sf-High': 'dB-4' } } }, 'cellReselectionServingFreqInfo': { 'threshServingLow': 7, 'cellReselectionPriority': 3 }, 'intraFreqCellReselectionInfo': { 'q-RxLevMin': -33, 's-IntraSearch': 0, 'presenceAntennaPort1': False, 'neighCellConfig': (b'\x80', 2), 't-ReselectionEUTRA': 4 } }), ('sib4', {}), ('sib5', { 'interFreqCarrierFreqList': [{ 'dl-CarrierFreq': 1, 'q-RxLevMin': -45, 't-ReselectionEUTRA': 0, 'threshX-High': 31, 'threshX-Low': 29, 'allowedMeasBandwidth': 'mbw6', 'presenceAntennaPort1': True, 'neighCellConfig': (b'\x00', 2), 'q-OffsetFreq': 'dB0' }] }), ('sib6', { 't-ReselectionUTRA': 3 }), ('sib7', { 't-ReselectionGERAN': 3 }), ('sib8', { 'parameters1XRTT': { 'longCodeState1XRTT': (b'\x01#Eg\x89\x00', 42) } }), ('sib9', { 'hnb-Name': b'4' }), ('sib10', { 'messageIdentifier': (b'#4', 16), 'serialNumber': (b'\x124', 16), 'warningType': b'2\x12' }), ('sib11', { 'messageIdentifier': (b'g\x88', 16), 'serialNumber': (b'T5', 16), 'warningMessageSegmentType': 'notLastSegment', 'warningMessageSegmentNumber': 19, 'warningMessageSegment': b'\x12' }) ] }) })) } encoded_message = ( b'{"message":{"c1":{"systemInformation":{"criticalExtensions":{"sy' b'stemInformation-r8":{"sib-TypeAndInfo":[{"sib2":{"ac-BarringInfo' b'":{"ac-BarringForEmergency":true,"ac-BarringForMO-Data":{"ac-Bar' b'ringFactor":"p95","ac-BarringForSpecialAC":"F0","ac-BarringTime"' b':"s128"}},"freqInfo":{"additionalSpectrumEmission":3},"radioReso' b'urceConfigCommon":{"bcch-Config":{"modificationPeriodCoeff":"n2"' b'},"pcch-Config":{"defaultPagingCycle":"rf256","nB":"twoT"},"pdsc' b'h-ConfigCommon":{"p-b":2,"referenceSignalPower":-60},"prach-Conf' b'ig":{"prach-ConfigInfo":{"highSpeedFlag":false,"prach-ConfigInde' b'x":33,"prach-FreqOffset":64,"zeroCorrelationZoneConfig":10},"roo' b'tSequenceIndex":836},"pucch-ConfigCommon":{"deltaPUCCH-Shift":"d' b's1","n1PUCCH-AN":2047,"nCS-AN":4,"nRB-CQI":98},"pusch-ConfigComm' b'on":{"pusch-ConfigBasic":{"enable64QAM":false,"hoppingMode":"int' b'erSubFrame","n-SB":1,"pusch-HoppingOffset":10},"ul-ReferenceSign' b'alsPUSCH":{"cyclicShift":5,"groupAssignmentPUSCH":22,"groupHoppi' b'ngEnabled":true,"sequenceHoppingEnabled":false}},"rach-ConfigCom' b'mon":{"maxHARQ-Msg3Tx":8,"powerRampingParameters":{"powerRamping' b'Step":"dB0","preambleInitialReceivedTargetPower":"dBm-102"},"pre' b'ambleInfo":{"numberOfRA-Preambles":"n24","preamblesGroupAConfig"' b':{"messagePowerOffsetGroupB":"minusinfinity","messageSizeGroupA"' b':"b144","sizeOfRA-PreamblesGroupA":"n28"}},"ra-SupervisionInfo":' b'{"mac-ContentionResolutionTimer":"sf48","preambleTransMax":"n8",' b'"ra-ResponseWindowSize":"sf6"}},"soundingRS-UL-ConfigCommon":{"s' b'etup":{"ackNackSRS-SimultaneousTransmission":true,"srs-Bandwidth' b'Config":"bw0","srs-SubframeConfig":"sc4"}},"ul-CyclicPrefixLengt' b'h":"len1","uplinkPowerControlCommon":{"alpha":"al0","deltaFList-' b'PUCCH":{"deltaF-PUCCH-Format1":"deltaF-2","deltaF-PUCCH-Format1b' b'":"deltaF1","deltaF-PUCCH-Format2":"deltaF0","deltaF-PUCCH-Forma' b't2a":"deltaF-2","deltaF-PUCCH-Format2b":"deltaF0"},"deltaPreambl' b'eMsg3":-1,"p0-NominalPUCCH":-127,"p0-NominalPUSCH":-126}},"timeA' b'lignmentTimerCommon":"sf500","ue-TimersAndConstants":{"n310":"n2' b'","n311":"n2","t300":"ms100","t301":"ms200","t310":"ms50","t311"' b':"ms30000"}}},{"sib3":{"cellReselectionInfoCommon":{"q-Hyst":"dB' b'0","speedStateReselectionPars":{"mobilityStateParameters":{"n-Ce' b'llChangeHigh":16,"n-CellChangeMedium":1,"t-Evaluation":"s180","t' b'-HystNormal":"s180"},"q-HystSF":{"sf-High":"dB-4","sf-Medium":"d' b'B-6"}}},"cellReselectionServingFreqInfo":{"cellReselectionPriori' b'ty":3,"threshServingLow":7},"intraFreqCellReselectionInfo":{"nei' b'ghCellConfig":"80","presenceAntennaPort1":false,"q-RxLevMin":-33' b',"s-IntraSearch":0,"t-ReselectionEUTRA":4}}},{"sib4":{}},{"sib5"' b':{"interFreqCarrierFreqList":[{"allowedMeasBandwidth":"mbw6","dl' b'-CarrierFreq":1,"neighCellConfig":"00","presenceAntennaPort1":tr' b'ue,"q-OffsetFreq":"dB0","q-RxLevMin":-45,"t-ReselectionEUTRA":0,' b'"threshX-High":31,"threshX-Low":29}]}},{"sib6":{"t-ReselectionUT' b'RA":3}},{"sib7":{"t-ReselectionGERAN":3}},{"sib8":{"parameters1X' b'RTT":{"longCodeState1XRTT":"012345678900"}}},{"sib9":{"hnb-Name"' b':"34"}},{"sib10":{"messageIdentifier":"2334","serialNumber":"123' b'4","warningType":"3212"}},{"sib11":{"messageIdentifier":"6788","' b'serialNumber":"5435","warningMessageSegment":"12","warningMessag' b'eSegmentNumber":19,"warningMessageSegmentType":"notLastSegment"}' b'}]}}}}}}') encoded = rrc.encode('BCCH-DL-SCH-Message', decoded_message) self.assertEqual(loadb(encoded), loadb(encoded_message)) decoded = rrc.decode('BCCH-DL-SCH-Message', encoded) self.assertEqual(decoded, decoded_message)
def test_rfc5280(self): rfc5280 = asn1tools.compile_dict(deepcopy(RFC5280), 'der') decoded = { 'tbsCertificate': { 'version': 'v1', 'serialNumber': 3578, 'signature': { 'algorithm': '1.2.840.113549.1.1.5', 'parameters': b'\x05\x00' }, 'issuer': ('rdnSequence', [[{ 'type': '2.5.4.6', 'value': b'\x13\x02\x4a\x50' }], [{ 'type': '2.5.4.8', 'value': b'\x13\x05\x54\x6f\x6b\x79\x6f' }], [{ 'type': '2.5.4.7', 'value': b'\x13\x07\x43\x68\x75\x6f\x2d\x6b\x75' }], [{ 'type': '2.5.4.10', 'value': b'\x13\x08\x46\x72\x61\x6e\x6b\x34\x44\x44' }], [{ 'type': '2.5.4.11', 'value': (b'\x13\x0f\x57\x65\x62\x43\x65\x72\x74\x20\x53' b'\x75\x70\x70\x6f\x72\x74') }], [{ 'type': '2.5.4.3', 'value': (b'\x13\x0f\x46\x72\x61\x6e\x6b\x34\x44\x44\x20' b'\x57\x65\x62\x20\x43\x41') }], [{ 'type': '1.2.840.113549.1.9.1', 'value': (b'\x16\x14\x73\x75\x70\x70\x6f\x72\x74\x40\x66' b'\x72\x61\x6e\x6b\x34\x64\x64\x2e\x63\x6f\x6d') }]]), 'validity': { 'notAfter': ('utcTime', ut2dt('170821052654Z')), 'notBefore': ('utcTime', ut2dt('120822052654Z')) }, 'subject': ('rdnSequence', [[{ 'type': '2.5.4.6', 'value': b'\x13\x02\x4a\x50' }], [{ 'type': '2.5.4.8', 'value': b'\x0c\x05\x54\x6f\x6b\x79\x6f' }], [{ 'type': '2.5.4.10', 'value': b'\x0c\x08\x46\x72\x61\x6e\x6b\x34\x44\x44' }], [{ 'type': '2.5.4.3', 'value': (b'\x0c\x0f\x77\x77\x77\x2e\x65\x78\x61\x6d\x70' b'\x6c\x65\x2e\x63\x6f\x6d') }]]), 'subjectPublicKeyInfo': { 'algorithm': { 'algorithm': '1.2.840.113549.1.1.1', 'parameters': b'\x05\x00' }, 'subjectPublicKey': (b'0H\x02A\x00\x9b\xfcf\x90y\x84B\xbb' b'\xab\x13\xfd+{\xf8\xde\x15\x12\xe5' b'\xf1\x93\xe3\x06\x8a{\xb8\xb1\xe1' b'\x9e&\xbb\x95\x01\xbf\xe70\xedd\x85' b'\x02\xdd\x15i\xa84\xb0\x06\xec?5<' b'\x1e\x1b+\x8f\xfa\x8f\x00\x1b\xdf' b'\x07\xc6\xacS\x07\x02\x03\x01\x00' b'\x01', 592) } }, 'signatureAlgorithm': { 'algorithm': '1.2.840.113549.1.1.5', 'parameters': b'\x05\x00' }, 'signature': (b'\x14\xb6L\xbb\x81y3\xe6q\xa4\xdaQo\xcb\x08\x1d' b'\x8d`\xec\xbc\x18\xc7sGY\xb1\xf2 H\xbba\xfa' b'\xfcM\xad\x89\x8d\xd1!\xeb\xd5\xd8\xe5\xba' b'\xd6\xa66\xfdtP\x83\xb6\x0f\xc7\x1d\xdf}\xe5.\x81' b'\x7fE\xe0\x9f\xe2>y\xee\xd701\xc7 r\xd9X.*\xfe\x12' b'Z4E\xa1\x19\x08|\x89G_J\x95\xbe#!JSr\xda*\x05/.\xc9' b'p\xf6[\xfa\xfd\xdf\xb41\xb2\xc1J\x9c\x06%C\xa1' b'\xe6\xb4\x1e\x7f\x86\x9b\x16@', 1024) } encoded = ( b'\x30\x82\x02\x12\x30\x82\x01\x7b\x02\x02\x0d\xfa\x30\x0d\x06\x09' b'\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x81\x9b\x31\x0b' b'\x30\x09\x06\x03\x55\x04\x06\x13\x02\x4a\x50\x31\x0e\x30\x0c\x06' b'\x03\x55\x04\x08\x13\x05\x54\x6f\x6b\x79\x6f\x31\x10\x30\x0e\x06' b'\x03\x55\x04\x07\x13\x07\x43\x68\x75\x6f\x2d\x6b\x75\x31\x11\x30' b'\x0f\x06\x03\x55\x04\x0a\x13\x08\x46\x72\x61\x6e\x6b\x34\x44\x44' b'\x31\x18\x30\x16\x06\x03\x55\x04\x0b\x13\x0f\x57\x65\x62\x43\x65' b'\x72\x74\x20\x53\x75\x70\x70\x6f\x72\x74\x31\x18\x30\x16\x06\x03' b'\x55\x04\x03\x13\x0f\x46\x72\x61\x6e\x6b\x34\x44\x44\x20\x57\x65' b'\x62\x20\x43\x41\x31\x23\x30\x21\x06\x09\x2a\x86\x48\x86\xf7\x0d' b'\x01\x09\x01\x16\x14\x73\x75\x70\x70\x6f\x72\x74\x40\x66\x72\x61' b'\x6e\x6b\x34\x64\x64\x2e\x63\x6f\x6d\x30\x1e\x17\x0d\x31\x32\x30' b'\x38\x32\x32\x30\x35\x32\x36\x35\x34\x5a\x17\x0d\x31\x37\x30\x38' b'\x32\x31\x30\x35\x32\x36\x35\x34\x5a\x30\x4a\x31\x0b\x30\x09\x06' b'\x03\x55\x04\x06\x13\x02\x4a\x50\x31\x0e\x30\x0c\x06\x03\x55\x04' b'\x08\x0c\x05\x54\x6f\x6b\x79\x6f\x31\x11\x30\x0f\x06\x03\x55\x04' b'\x0a\x0c\x08\x46\x72\x61\x6e\x6b\x34\x44\x44\x31\x18\x30\x16\x06' b'\x03\x55\x04\x03\x0c\x0f\x77\x77\x77\x2e\x65\x78\x61\x6d\x70\x6c' b'\x65\x2e\x63\x6f\x6d\x30\x5c\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7' b'\x0d\x01\x01\x01\x05\x00\x03\x4b\x00\x30\x48\x02\x41\x00\x9b\xfc' b'\x66\x90\x79\x84\x42\xbb\xab\x13\xfd\x2b\x7b\xf8\xde\x15\x12\xe5' b'\xf1\x93\xe3\x06\x8a\x7b\xb8\xb1\xe1\x9e\x26\xbb\x95\x01\xbf\xe7' b'\x30\xed\x64\x85\x02\xdd\x15\x69\xa8\x34\xb0\x06\xec\x3f\x35\x3c' b'\x1e\x1b\x2b\x8f\xfa\x8f\x00\x1b\xdf\x07\xc6\xac\x53\x07\x02\x03' b'\x01\x00\x01\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05' b'\x05\x00\x03\x81\x81\x00\x14\xb6\x4c\xbb\x81\x79\x33\xe6\x71\xa4' b'\xda\x51\x6f\xcb\x08\x1d\x8d\x60\xec\xbc\x18\xc7\x73\x47\x59\xb1' b'\xf2\x20\x48\xbb\x61\xfa\xfc\x4d\xad\x89\x8d\xd1\x21\xeb\xd5\xd8' b'\xe5\xba\xd6\xa6\x36\xfd\x74\x50\x83\xb6\x0f\xc7\x1d\xdf\x7d\xe5' b'\x2e\x81\x7f\x45\xe0\x9f\xe2\x3e\x79\xee\xd7\x30\x31\xc7\x20\x72' b'\xd9\x58\x2e\x2a\xfe\x12\x5a\x34\x45\xa1\x19\x08\x7c\x89\x47\x5f' b'\x4a\x95\xbe\x23\x21\x4a\x53\x72\xda\x2a\x05\x2f\x2e\xc9\x70\xf6' b'\x5b\xfa\xfd\xdf\xb4\x31\xb2\xc1\x4a\x9c\x06\x25\x43\xa1\xe6\xb4' b'\x1e\x7f\x86\x9b\x16\x40') self.assert_encode_decode(rfc5280, 'Certificate', decoded, encoded)
def test_rfc4511(self): rfc4511 = asn1tools.compile_dict(deepcopy(RFC4511), 'gser') # A search request message. decoded = { 'messageID': 2, 'protocolOp': ('searchRequest', { 'baseObject': b'', 'scope': 'wholeSubtree', 'derefAliases': 'neverDerefAliases', 'sizeLimit': 0, 'timeLimit': 0, 'typesOnly': False, 'filter': ('and', [('substrings', { 'type': b'\x63\x6e', 'substrings': [('any', b'\x66\x72\x65\x64')] }), ('equalityMatch', { 'attributeDesc': b'\x64\x6e', 'assertionValue': b'\x6a\x6f\x65' })]), 'attributes': [] }) } encoded = (b"ldapmessage LDAPMessage ::= {\n" b" messageID 2,\n" b" protocolOp searchRequest : {\n" b" baseObject ''H,\n" b" scope wholeSubtree,\n" b" derefAliases neverDerefAliases,\n" b" sizeLimit 0,\n" b" timeLimit 0,\n" b" typesOnly FALSE,\n" b" filter and : {\n" b" substrings : {\n" b" type '636E'H,\n" b" substrings {\n" b" any : '66726564'H\n" b" }\n" b" },\n" b" equalityMatch : {\n" b" attributeDesc '646E'H,\n" b" assertionValue '6A6F65'H\n" b" }\n" b" },\n" b" attributes {\n" b" }\n" b" }\n" b"}") self.assertEqual(rfc4511.encode('LDAPMessage', decoded, indent=2), encoded)
def test_rrc_8_6_0(self): rrc = asn1tools.compile_dict(deepcopy(RRC_8_6_0), 'gser') decoded = { 'message': ('c1', ('systemInformation', { 'criticalExtensions': ('systemInformation-r8', { 'sib-TypeAndInfo': [ ('sib2', { 'ac-BarringInfo': { 'ac-BarringForEmergency': True, 'ac-BarringForMO-Data': { 'ac-BarringFactor': 'p95', 'ac-BarringTime': 's128', 'ac-BarringForSpecialAC': (b'\xf0', 5) } }, 'radioResourceConfigCommon': { 'rach-ConfigCommon': { 'preambleInfo': { 'numberOfRA-Preambles': 'n24', 'preamblesGroupAConfig': { 'sizeOfRA-PreamblesGroupA': 'n28', 'messageSizeGroupA': 'b144', 'messagePowerOffsetGroupB': 'minusinfinity' } }, 'powerRampingParameters': { 'powerRampingStep': 'dB0', 'preambleInitialReceivedTargetPower': 'dBm-102' }, 'ra-SupervisionInfo': { 'preambleTransMax': 'n8', 'ra-ResponseWindowSize': 'sf6', 'mac-ContentionResolutionTimer': 'sf48' }, 'maxHARQ-Msg3Tx': 8 }, 'bcch-Config': { 'modificationPeriodCoeff': 'n2' }, 'pcch-Config': { 'defaultPagingCycle': 'rf256', 'nB': 'twoT' }, 'prach-Config': { 'rootSequenceIndex': 836, 'prach-ConfigInfo': { 'prach-ConfigIndex': 33, 'highSpeedFlag': False, 'zeroCorrelationZoneConfig': 10, 'prach-FreqOffset': 64 } }, 'pdsch-ConfigCommon': { 'referenceSignalPower': -60, 'p-b': 2 }, 'pusch-ConfigCommon': { 'pusch-ConfigBasic': { 'n-SB': 1, 'hoppingMode': 'interSubFrame', 'pusch-HoppingOffset': 10, 'enable64QAM': False }, 'ul-ReferenceSignalsPUSCH': { 'groupHoppingEnabled': True, 'groupAssignmentPUSCH': 22, 'sequenceHoppingEnabled': False, 'cyclicShift': 5 } }, 'pucch-ConfigCommon': { 'deltaPUCCH-Shift': 'ds1', 'nRB-CQI': 98, 'nCS-AN': 4, 'n1PUCCH-AN': 2047 }, 'soundingRS-UL-ConfigCommon': ('setup', { 'srs-BandwidthConfig': 'bw0', 'srs-SubframeConfig': 'sc4', 'ackNackSRS-SimultaneousTransmission': True }), 'uplinkPowerControlCommon': { 'p0-NominalPUSCH': -126, 'alpha': 'al0', 'p0-NominalPUCCH': -127, 'deltaFList-PUCCH': { 'deltaF-PUCCH-Format1': 'deltaF-2', 'deltaF-PUCCH-Format1b': 'deltaF1', 'deltaF-PUCCH-Format2': 'deltaF0', 'deltaF-PUCCH-Format2a': 'deltaF-2', 'deltaF-PUCCH-Format2b': 'deltaF0' }, 'deltaPreambleMsg3': -1 }, 'ul-CyclicPrefixLength': 'len1' }, 'ue-TimersAndConstants': { 't300': 'ms100', 't301': 'ms200', 't310': 'ms50', 'n310': 'n2', 't311': 'ms30000', 'n311': 'n2' }, 'freqInfo': { 'additionalSpectrumEmission': 3 }, 'timeAlignmentTimerCommon': 'sf500' }), ('sib3', { 'cellReselectionInfoCommon': { 'q-Hyst': 'dB0', 'speedStateReselectionPars': { 'mobilityStateParameters': { 't-Evaluation': 's180', 't-HystNormal': 's180', 'n-CellChangeMedium': 1, 'n-CellChangeHigh': 16 }, 'q-HystSF': { 'sf-Medium': 'dB-6', 'sf-High': 'dB-4' } } }, 'cellReselectionServingFreqInfo': { 'threshServingLow': 7, 'cellReselectionPriority': 3 }, 'intraFreqCellReselectionInfo': { 'q-RxLevMin': -33, 's-IntraSearch': 0, 'presenceAntennaPort1': False, 'neighCellConfig': (b'\x80', 2), 't-ReselectionEUTRA': 4 } }), ('sib4', {}), ('sib5', { 'interFreqCarrierFreqList': [{ 'dl-CarrierFreq': 1, 'q-RxLevMin': -45, 't-ReselectionEUTRA': 0, 'threshX-High': 31, 'threshX-Low': 29, 'allowedMeasBandwidth': 'mbw6', 'presenceAntennaPort1': True, 'neighCellConfig': (b'\x00', 2), 'q-OffsetFreq': 'dB0' }] }), ('sib6', { 't-ReselectionUTRA': 3 }), ('sib7', { 't-ReselectionGERAN': 3 }), ('sib8', { 'parameters1XRTT': { 'longCodeState1XRTT': (b'\x01#Eg\x89\x00', 42) } }), ('sib9', { 'hnb-Name': b'4' }), ('sib10', { 'messageIdentifier': (b'#4', 16), 'serialNumber': (b'\x124', 16), 'warningType': b'2\x12' }), ('sib11', { 'messageIdentifier': (b'g\x88', 16), 'serialNumber': (b'T5', 16), 'warningMessageSegmentType': 'notLastSegment', 'warningMessageSegmentNumber': 19, 'warningMessageSegment': b'\x12' }) ] }) })) } encoded = ( b"bcch-dl-sch-message BCCH-DL-SCH-Message ::= {\n" b" message c1 : systemInformation : {\n" b" criticalExtensions systemInformation-r8 : {\n" b" sib-TypeAndInfo {\n" b" sib2 : {\n" b" ac-BarringInfo {\n" b" ac-BarringForEmergency TRUE,\n" b" ac-BarringForMO-Data {\n" b" ac-BarringFactor p95,\n" b" ac-BarringTime s128,\n" b" ac-BarringForSpecialAC '11110'B\n" b" }\n" b" },\n" b" radioResourceConfigCommon {\n" b" rach-ConfigCommon {\n" b" preambleInfo {\n" b" numberOfRA-Preambles n24,\n" b" preamblesGroupAConfig {\n" b" sizeOfRA-PreamblesGroupA n28,\n" b" messageSizeGroupA b144,\n" b" messagePowerOffsetGroupB minusinfinity\n" b" }\n" b" },\n" b" powerRampingParameters {\n" b" powerRampingStep dB0,\n" b" preambleInitialReceivedTargetPower dBm-102\n" b" },\n" b" ra-SupervisionInfo {\n" b" preambleTransMax n8,\n" b" ra-ResponseWindowSize sf6,\n" b" mac-ContentionResolutionTimer sf48\n" b" },\n" b" maxHARQ-Msg3Tx 8\n" b" },\n" b" bcch-Config {\n" b" modificationPeriodCoeff n2\n" b" },\n" b" pcch-Config {\n" b" defaultPagingCycle rf256,\n" b" nB twoT\n" b" },\n" b" prach-Config {\n" b" rootSequenceIndex 836,\n" b" prach-ConfigInfo {\n" b" prach-ConfigIndex 33,\n" b" highSpeedFlag FALSE,\n" b" zeroCorrelationZoneConfig 10,\n" b" prach-FreqOffset 64\n" b" }\n" b" },\n" b" pdsch-ConfigCommon {\n" b" referenceSignalPower -60,\n" b" p-b 2\n" b" },\n" b" pusch-ConfigCommon {\n" b" pusch-ConfigBasic {\n" b" n-SB 1,\n" b" hoppingMode interSubFrame,\n" b" pusch-HoppingOffset 10,\n" b" enable64QAM FALSE\n" b" },\n" b" ul-ReferenceSignalsPUSCH {\n" b" groupHoppingEnabled TRUE,\n" b" groupAssignmentPUSCH 22,\n" b" sequenceHoppingEnabled FALSE,\n" b" cyclicShift 5\n" b" }\n" b" },\n" b" pucch-ConfigCommon {\n" b" deltaPUCCH-Shift ds1,\n" b" nRB-CQI 98,\n" b" nCS-AN 4,\n" b" n1PUCCH-AN 2047\n" b" },\n" b" soundingRS-UL-ConfigCommon setup : {\n" b" srs-BandwidthConfig bw0,\n" b" srs-SubframeConfig sc4,\n" b" ackNackSRS-SimultaneousTransmission TRUE\n" b" },\n" b" uplinkPowerControlCommon {\n" b" p0-NominalPUSCH -126,\n" b" alpha al0,\n" b" p0-NominalPUCCH -127,\n" b" deltaFList-PUCCH {\n" b" deltaF-PUCCH-Format1 deltaF-2,\n" b" deltaF-PUCCH-Format1b deltaF1,\n" b" deltaF-PUCCH-Format2 deltaF0,\n" b" deltaF-PUCCH-Format2a deltaF-2,\n" b" deltaF-PUCCH-Format2b deltaF0\n" b" },\n" b" deltaPreambleMsg3 -1\n" b" },\n" b" ul-CyclicPrefixLength len1\n" b" },\n" b" ue-TimersAndConstants {\n" b" t300 ms100,\n" b" t301 ms200,\n" b" t310 ms50,\n" b" n310 n2,\n" b" t311 ms30000,\n" b" n311 n2\n" b" },\n" b" freqInfo {\n" b" additionalSpectrumEmission 3\n" b" },\n" b" timeAlignmentTimerCommon sf500\n" b" },\n" b" sib3 : {\n" b" cellReselectionInfoCommon {\n" b" q-Hyst dB0,\n" b" speedStateReselectionPars {\n" b" mobilityStateParameters {\n" b" t-Evaluation s180,\n" b" t-HystNormal s180,\n" b" n-CellChangeMedium 1,\n" b" n-CellChangeHigh 16\n" b" },\n" b" q-HystSF {\n" b" sf-Medium dB-6,\n" b" sf-High dB-4\n" b" }\n" b" }\n" b" },\n" b" cellReselectionServingFreqInfo {\n" b" threshServingLow 7,\n" b" cellReselectionPriority 3\n" b" },\n" b" intraFreqCellReselectionInfo {\n" b" q-RxLevMin -33,\n" b" s-IntraSearch 0,\n" b" presenceAntennaPort1 FALSE,\n" b" neighCellConfig '10'B,\n" b" t-ReselectionEUTRA 4\n" b" }\n" b" },\n" b" sib4 : {\n" b" },\n" b" sib5 : {\n" b" interFreqCarrierFreqList {\n" b" {\n" b" dl-CarrierFreq 1,\n" b" q-RxLevMin -45,\n" b" t-ReselectionEUTRA 0,\n" b" threshX-High 31,\n" b" threshX-Low 29,\n" b" allowedMeasBandwidth mbw6,\n" b" presenceAntennaPort1 TRUE,\n" b" neighCellConfig '00'B,\n" b" q-OffsetFreq dB0\n" b" }\n" b" }\n" b" },\n" b" sib6 : {\n" b" t-ReselectionUTRA 3\n" b" },\n" b" sib7 : {\n" b" t-ReselectionGERAN 3\n" b" },\n" b" sib8 : {\n" b" parameters1XRTT {\n" b" longCodeState1XRTT '000000010010001101000101011001111000100100'B\n" b" }\n" b" },\n" b" sib9 : {\n" b" hnb-Name '34'H\n" b" },\n" b" sib10 : {\n" b" messageIdentifier '0010001100110100'B,\n" b" serialNumber '0001001000110100'B,\n" b" warningType '3212'H\n" b" },\n" b" sib11 : {\n" b" messageIdentifier '0110011110001000'B,\n" b" serialNumber '0101010000110101'B,\n" b" warningMessageSegmentType notLastSegment,\n" b" warningMessageSegmentNumber 19,\n" b" warningMessageSegment '12'H\n" b" }\n" b" }\n" b" }\n" b" }\n" b"}") self.assertEqual(rrc.encode('BCCH-DL-SCH-Message', decoded, indent=2), encoded)
def test_rrc_8_6_0(self): rrc = asn1tools.compile_dict(deepcopy(RRC_8_6_0), 'xer') # Message 1. decoded = { 'message': ( 'c1', ( 'paging', { 'systemInfoModification': 'true', 'nonCriticalExtension': { } } ) ) } encoded = ( b'<PCCH-Message><message><c1><paging><systemInfoModification><' b'true /></systemInfoModification><nonCriticalExtension /></pa' b'ging></c1></message></PCCH-Message>' ) self.assert_encode_decode_string(rrc, 'PCCH-Message', decoded, encoded) # Message 2. decoded = { 'message': { 'dl-Bandwidth': 'n6', 'phich-Config': { 'phich-Duration': 'normal', 'phich-Resource': 'half' }, 'systemFrameNumber': (b'\x12', 8), 'spare': (b'\x34\x40', 10) } } encoded = ( b'<BCCH-BCH-Message><message><dl-Bandwidth><n6 /></dl-Bandwidt' b'h><phich-Config><phich-Duration><normal /></phich-Duration><' b'phich-Resource><half /></phich-Resource></phich-Config><syst' b'emFrameNumber>00010010</systemFrameNumber><spare>0011010001<' b'/spare></message></BCCH-BCH-Message>' ) self.assert_encode_decode_string(rrc, 'BCCH-BCH-Message', decoded, encoded) # Message 3. decoded = { 'message': ( 'c1', ( 'systemInformation', { 'criticalExtensions': ( 'systemInformation-r8', { 'sib-TypeAndInfo': [ ( 'sib2', { 'ac-BarringInfo': { 'ac-BarringForEmergency': True, 'ac-BarringForMO-Data': { 'ac-BarringFactor': 'p95', 'ac-BarringTime': 's128', 'ac-BarringForSpecialAC': (b'\xf0', 5) } }, 'radioResourceConfigCommon': { 'rach-ConfigCommon': { 'preambleInfo': { 'numberOfRA-Preambles': 'n24', 'preamblesGroupAConfig': { 'sizeOfRA-PreamblesGroupA': 'n28', 'messageSizeGroupA': 'b144', 'messagePowerOffsetGroupB': 'minusinfinity' } }, 'powerRampingParameters': { 'powerRampingStep': 'dB0', 'preambleInitialReceivedTargetPower': 'dBm-102' }, 'ra-SupervisionInfo': { 'preambleTransMax': 'n8', 'ra-ResponseWindowSize': 'sf6', 'mac-ContentionResolutionTimer': 'sf48' }, 'maxHARQ-Msg3Tx': 8 }, 'bcch-Config': { 'modificationPeriodCoeff': 'n2' }, 'pcch-Config': { 'defaultPagingCycle': 'rf256', 'nB': 'twoT' }, 'prach-Config': { 'rootSequenceIndex': 836, 'prach-ConfigInfo': { 'prach-ConfigIndex': 33, 'highSpeedFlag': False, 'zeroCorrelationZoneConfig': 10, 'prach-FreqOffset': 64 } }, 'pdsch-ConfigCommon': { 'referenceSignalPower': -60, 'p-b': 2 }, 'pusch-ConfigCommon': { 'pusch-ConfigBasic': { 'n-SB': 1, 'hoppingMode': 'interSubFrame', 'pusch-HoppingOffset': 10, 'enable64QAM': False }, 'ul-ReferenceSignalsPUSCH': { 'groupHoppingEnabled': True, 'groupAssignmentPUSCH': 22, 'sequenceHoppingEnabled': False, 'cyclicShift': 5 } }, 'pucch-ConfigCommon': { 'deltaPUCCH-Shift': 'ds1', 'nRB-CQI': 98, 'nCS-AN': 4, 'n1PUCCH-AN': 2047 }, 'soundingRS-UL-ConfigCommon': ( 'setup', { 'srs-BandwidthConfig': 'bw0', 'srs-SubframeConfig': 'sc4', 'ackNackSRS-SimultaneousTransmission': True }), 'uplinkPowerControlCommon': { 'p0-NominalPUSCH': -126, 'alpha': 'al0', 'p0-NominalPUCCH': -127, 'deltaFList-PUCCH': { 'deltaF-PUCCH-Format1': 'deltaF-2', 'deltaF-PUCCH-Format1b': 'deltaF1', 'deltaF-PUCCH-Format2': 'deltaF0', 'deltaF-PUCCH-Format2a': 'deltaF-2', 'deltaF-PUCCH-Format2b': 'deltaF0' }, 'deltaPreambleMsg3': -1 }, 'ul-CyclicPrefixLength': 'len1' }, 'ue-TimersAndConstants': { 't300': 'ms100', 't301': 'ms200', 't310': 'ms50', 'n310': 'n2', 't311': 'ms30000', 'n311': 'n2' }, 'freqInfo': { 'additionalSpectrumEmission': 3 }, 'timeAlignmentTimerCommon': 'sf500' } ), ( 'sib3', { 'cellReselectionInfoCommon': { 'q-Hyst': 'dB0', 'speedStateReselectionPars': { 'mobilityStateParameters': { 't-Evaluation': 's180', 't-HystNormal': 's180', 'n-CellChangeMedium': 1, 'n-CellChangeHigh': 16 }, 'q-HystSF': { 'sf-Medium': 'dB-6', 'sf-High': 'dB-4' } } }, 'cellReselectionServingFreqInfo': { 'threshServingLow': 7, 'cellReselectionPriority': 3 }, 'intraFreqCellReselectionInfo': { 'q-RxLevMin': -33, 's-IntraSearch': 0, 'presenceAntennaPort1': False, 'neighCellConfig': (b'\x80', 2), 't-ReselectionEUTRA': 4 } } ), ( 'sib4', { } ), ( 'sib5', { 'interFreqCarrierFreqList': [ { 'dl-CarrierFreq': 1, 'q-RxLevMin': -45, 't-ReselectionEUTRA': 0, 'threshX-High': 31, 'threshX-Low': 29, 'allowedMeasBandwidth': 'mbw6', 'presenceAntennaPort1': True, 'neighCellConfig': (b'\x00', 2), 'q-OffsetFreq': 'dB0' } ] } ), ( 'sib6', { 't-ReselectionUTRA': 3 } ), ( 'sib7', { 't-ReselectionGERAN': 3 } ), ( 'sib8', { 'parameters1XRTT': { 'longCodeState1XRTT': (b'\x01#Eg\x89\x00', 42) } } ), ( 'sib9', { 'hnb-Name': b'4' } ), ( 'sib10', { 'messageIdentifier': (b'#4', 16), 'serialNumber': (b'\x124', 16), 'warningType': b'2\x12' } ), ( 'sib11', { 'messageIdentifier': (b'g\x88', 16), 'serialNumber': (b'T5', 16), 'warningMessageSegmentType': 'notLastSegment', 'warningMessageSegmentNumber': 19, 'warningMessageSegment': b'\x12' } ) ] } ) } ) ) } encoded = ( b'<BCCH-DL-SCH-Message><message><c1><systemInformation><critic' b'alExtensions><systemInformation-r8><sib-TypeAndInfo><sib2><a' b'c-BarringInfo><ac-BarringForEmergency><true /></ac-BarringFo' b'rEmergency><ac-BarringForMO-Data><ac-BarringFactor><p95 /></' b'ac-BarringFactor><ac-BarringTime><s128 /></ac-BarringTime><a' b'c-BarringForSpecialAC>11110</ac-BarringForSpecialAC></ac-Bar' b'ringForMO-Data></ac-BarringInfo><radioResourceConfigCommon><' b'rach-ConfigCommon><preambleInfo><numberOfRA-Preambles><n24 /' b'></numberOfRA-Preambles><preamblesGroupAConfig><sizeOfRA-Pre' b'amblesGroupA><n28 /></sizeOfRA-PreamblesGroupA><messageSizeG' b'roupA><b144 /></messageSizeGroupA><messagePowerOffsetGroupB>' b'<minusinfinity /></messagePowerOffsetGroupB></preamblesGroup' b'AConfig></preambleInfo><powerRampingParameters><powerRamping' b'Step><dB0 /></powerRampingStep><preambleInitialReceivedTarge' b'tPower><dBm-102 /></preambleInitialReceivedTargetPower></pow' b'erRampingParameters><ra-SupervisionInfo><preambleTransMax><n' b'8 /></preambleTransMax><ra-ResponseWindowSize><sf6 /></ra-Re' b'sponseWindowSize><mac-ContentionResolutionTimer><sf48 /></ma' b'c-ContentionResolutionTimer></ra-SupervisionInfo><maxHARQ-Ms' b'g3Tx>8</maxHARQ-Msg3Tx></rach-ConfigCommon><bcch-Config><mod' b'ificationPeriodCoeff><n2 /></modificationPeriodCoeff></bcch-' b'Config><pcch-Config><defaultPagingCycle><rf256 /></defaultPa' b'gingCycle><nB><twoT /></nB></pcch-Config><prach-Config><root' b'SequenceIndex>836</rootSequenceIndex><prach-ConfigInfo><prac' b'h-ConfigIndex>33</prach-ConfigIndex><highSpeedFlag><false />' b'</highSpeedFlag><zeroCorrelationZoneConfig>10</zeroCorrelati' b'onZoneConfig><prach-FreqOffset>64</prach-FreqOffset></prach-' b'ConfigInfo></prach-Config><pdsch-ConfigCommon><referenceSign' b'alPower>-60</referenceSignalPower><p-b>2</p-b></pdsch-Config' b'Common><pusch-ConfigCommon><pusch-ConfigBasic><n-SB>1</n-SB>' b'<hoppingMode><interSubFrame /></hoppingMode><pusch-HoppingOf' b'fset>10</pusch-HoppingOffset><enable64QAM><false /></enable6' b'4QAM></pusch-ConfigBasic><ul-ReferenceSignalsPUSCH><groupHop' b'pingEnabled><true /></groupHoppingEnabled><groupAssignmentPU' b'SCH>22</groupAssignmentPUSCH><sequenceHoppingEnabled><false ' b'/></sequenceHoppingEnabled><cyclicShift>5</cyclicShift></ul-' b'ReferenceSignalsPUSCH></pusch-ConfigCommon><pucch-ConfigComm' b'on><deltaPUCCH-Shift><ds1 /></deltaPUCCH-Shift><nRB-CQI>98</' b'nRB-CQI><nCS-AN>4</nCS-AN><n1PUCCH-AN>2047</n1PUCCH-AN></puc' b'ch-ConfigCommon><soundingRS-UL-ConfigCommon><setup><srs-Band' b'widthConfig><bw0 /></srs-BandwidthConfig><srs-SubframeConfig' b'><sc4 /></srs-SubframeConfig><ackNackSRS-SimultaneousTransmi' b'ssion><true /></ackNackSRS-SimultaneousTransmission></setup>' b'</soundingRS-UL-ConfigCommon><uplinkPowerControlCommon><p0-N' b'ominalPUSCH>-126</p0-NominalPUSCH><alpha><al0 /></alpha><p0-' b'NominalPUCCH>-127</p0-NominalPUCCH><deltaFList-PUCCH><deltaF' b'-PUCCH-Format1><deltaF-2 /></deltaF-PUCCH-Format1><deltaF-PU' b'CCH-Format1b><deltaF1 /></deltaF-PUCCH-Format1b><deltaF-PUCC' b'H-Format2><deltaF0 /></deltaF-PUCCH-Format2><deltaF-PUCCH-Fo' b'rmat2a><deltaF-2 /></deltaF-PUCCH-Format2a><deltaF-PUCCH-For' b'mat2b><deltaF0 /></deltaF-PUCCH-Format2b></deltaFList-PUCCH>' b'<deltaPreambleMsg3>-1</deltaPreambleMsg3></uplinkPowerContro' b'lCommon><ul-CyclicPrefixLength><len1 /></ul-CyclicPrefixLeng' b'th></radioResourceConfigCommon><ue-TimersAndConstants><t300>' b'<ms100 /></t300><t301><ms200 /></t301><t310><ms50 /></t310><' b'n310><n2 /></n310><t311><ms30000 /></t311><n311><n2 /></n311' b'></ue-TimersAndConstants><freqInfo><additionalSpectrumEmissi' b'on>3</additionalSpectrumEmission></freqInfo><timeAlignmentTi' b'merCommon><sf500 /></timeAlignmentTimerCommon></sib2><sib3><' b'cellReselectionInfoCommon><q-Hyst><dB0 /></q-Hyst><speedStat' b'eReselectionPars><mobilityStateParameters><t-Evaluation><s18' b'0 /></t-Evaluation><t-HystNormal><s180 /></t-HystNormal><n-C' b'ellChangeMedium>1</n-CellChangeMedium><n-CellChangeHigh>16</' b'n-CellChangeHigh></mobilityStateParameters><q-HystSF><sf-Med' b'ium><dB-6 /></sf-Medium><sf-High><dB-4 /></sf-High></q-HystS' b'F></speedStateReselectionPars></cellReselectionInfoCommon><c' b'ellReselectionServingFreqInfo><threshServingLow>7</threshSer' b'vingLow><cellReselectionPriority>3</cellReselectionPriority>' b'</cellReselectionServingFreqInfo><intraFreqCellReselectionIn' b'fo><q-RxLevMin>-33</q-RxLevMin><s-IntraSearch>0</s-IntraSear' b'ch><presenceAntennaPort1><false /></presenceAntennaPort1><ne' b'ighCellConfig>10</neighCellConfig><t-ReselectionEUTRA>4</t-R' b'eselectionEUTRA></intraFreqCellReselectionInfo></sib3><sib4 ' b'/><sib5><interFreqCarrierFreqList><InterFreqCarrierFreqInfo>' b'<dl-CarrierFreq>1</dl-CarrierFreq><q-RxLevMin>-45</q-RxLevMi' b'n><t-ReselectionEUTRA>0</t-ReselectionEUTRA><threshX-High>31' b'</threshX-High><threshX-Low>29</threshX-Low><allowedMeasBand' b'width><mbw6 /></allowedMeasBandwidth><presenceAntennaPort1><' b'true /></presenceAntennaPort1><neighCellConfig>00</neighCell' b'Config><q-OffsetFreq><dB0 /></q-OffsetFreq></InterFreqCarrie' b'rFreqInfo></interFreqCarrierFreqList></sib5><sib6><t-Reselec' b'tionUTRA>3</t-ReselectionUTRA></sib6><sib7><t-ReselectionGER' b'AN>3</t-ReselectionGERAN></sib7><sib8><parameters1XRTT><long' b'CodeState1XRTT>000000010010001101000101011001111000100100</l' b'ongCodeState1XRTT></parameters1XRTT></sib8><sib9><hnb-Name>3' b'4</hnb-Name></sib9><sib10><messageIdentifier>001000110011010' b'0</messageIdentifier><serialNumber>0001001000110100</serialN' b'umber><warningType>3212</warningType></sib10><sib11><message' b'Identifier>0110011110001000</messageIdentifier><serialNumber' b'>0101010000110101</serialNumber><warningMessageSegmentType><' b'notLastSegment /></warningMessageSegmentType><warningMessage' b'SegmentNumber>19</warningMessageSegmentNumber><warningMessag' b'eSegment>12</warningMessageSegment></sib11></sib-TypeAndInfo' b'></systemInformation-r8></criticalExtensions></systemInforma' b'tion></c1></message></BCCH-DL-SCH-Message>' ) self.assert_encode_decode_string(rrc, 'BCCH-DL-SCH-Message', decoded, encoded)
def test_rrc_8_6_0(self): rrc = asn1tools.compile_dict(deepcopy(RRC_8_6_0), 'xer') # Message 1. decoded_message = { 'message': { 'c1' : { 'paging': { 'systemInfoModification': 'true', 'nonCriticalExtension': { } } } } } encoded_message = ( b'<PCCH-Message><message><c1><paging><systemInfoModification><tr' b'ue /></systemInfoModification><nonCriticalExtension /></paging><' b'/c1></message></PCCH-Message>' ) encoded = rrc.encode('PCCH-Message', decoded_message) self.assertEqual(encoded, encoded_message) decoded = rrc.decode('PCCH-Message', encoded) self.assertEqual(decoded, decoded_message) return # Message 2. decoded_message = { 'message': { 'dl-Bandwidth': 'n6', 'phich-Config': { 'phich-Duration': 'normal', 'phich-Resource': 'half' }, 'systemFrameNumber': (b'\x12', 8), 'spare': (b'\x34\x40', 10) } } encoded_message = ( b'' ) encoded = rrc.encode('BCCH-BCH-Message', decoded_message) self.assertEqual(encoded, encoded_message) decoded = rrc.decode('BCCH-BCH-Message', encoded) self.assertEqual(decoded, decoded_message) # Message 3. decoded_message = { 'message': { 'c1': { 'systemInformation': { 'criticalExtensions': { 'systemInformation-r8': { 'sib-TypeAndInfo': [ { 'sib2': { 'ac-BarringInfo': { 'ac-BarringForEmergency': True, 'ac-BarringForMO-Data': { 'ac-BarringFactor': 'p95', 'ac-BarringTime': 's128', 'ac-BarringForSpecialAC': (b'\xf0', 5) } }, 'radioResourceConfigCommon': { 'rach-ConfigCommon': { 'preambleInfo': { 'numberOfRA-Preambles': 'n24', 'preamblesGroupAConfig': { 'sizeOfRA-PreamblesGroupA': 'n28', 'messageSizeGroupA': 'b144', 'messagePowerOffsetGroupB': 'minusinfinity' } }, 'powerRampingParameters': { 'powerRampingStep': 'dB0', 'preambleInitialReceivedTargetPower': 'dBm-102' }, 'ra-SupervisionInfo': { 'preambleTransMax': 'n8', 'ra-ResponseWindowSize': 'sf6', 'mac-ContentionResolutionTimer': 'sf48' }, 'maxHARQ-Msg3Tx': 8 }, 'bcch-Config': { 'modificationPeriodCoeff': 'n2' }, 'pcch-Config': { 'defaultPagingCycle': 'rf256', 'nB': 'twoT' }, 'prach-Config': { 'rootSequenceIndex': 836, 'prach-ConfigInfo': { 'prach-ConfigIndex': 33, 'highSpeedFlag': False, 'zeroCorrelationZoneConfig': 10, 'prach-FreqOffset': 64 } }, 'pdsch-ConfigCommon': { 'referenceSignalPower': -60, 'p-b': 2 }, 'pusch-ConfigCommon': { 'pusch-ConfigBasic': { 'n-SB': 1, 'hoppingMode': 'interSubFrame', 'pusch-HoppingOffset': 10, 'enable64QAM': False }, 'ul-ReferenceSignalsPUSCH': { 'groupHoppingEnabled': True, 'groupAssignmentPUSCH': 22, 'sequenceHoppingEnabled': False, 'cyclicShift': 5 } }, 'pucch-ConfigCommon': { 'deltaPUCCH-Shift': 'ds1', 'nRB-CQI': 98, 'nCS-AN': 4, 'n1PUCCH-AN': 2047 }, 'soundingRS-UL-ConfigCommon': { 'setup': { 'srs-BandwidthConfig': 'bw0', 'srs-SubframeConfig': 'sc4', 'ackNackSRS-SimultaneousTransmission': True } }, 'uplinkPowerControlCommon': { 'p0-NominalPUSCH': -126, 'alpha': 'al0', 'p0-NominalPUCCH': -127, 'deltaFList-PUCCH': { 'deltaF-PUCCH-Format1': 'deltaF-2', 'deltaF-PUCCH-Format1b': 'deltaF1', 'deltaF-PUCCH-Format2': 'deltaF0', 'deltaF-PUCCH-Format2a': 'deltaF-2', 'deltaF-PUCCH-Format2b': 'deltaF0' }, 'deltaPreambleMsg3': -1 }, 'ul-CyclicPrefixLength': 'len1' }, 'ue-TimersAndConstants': { 't300': 'ms100', 't301': 'ms200', 't310': 'ms50', 'n310': 'n2', 't311': 'ms30000', 'n311': 'n2' }, 'freqInfo': { 'additionalSpectrumEmission': 3 }, 'timeAlignmentTimerCommon': 'sf500' } }, { 'sib3': { 'cellReselectionInfoCommon': { 'q-Hyst': 'dB0', 'speedStateReselectionPars': { 'mobilityStateParameters': { 't-Evaluation': 's180', 't-HystNormal': 's180', 'n-CellChangeMedium': 1, 'n-CellChangeHigh': 16 }, 'q-HystSF': { 'sf-Medium': 'dB-6', 'sf-High': 'dB-4' } } }, 'cellReselectionServingFreqInfo': { 'threshServingLow': 7, 'cellReselectionPriority': 3 }, 'intraFreqCellReselectionInfo': { 'q-RxLevMin': -33, 's-IntraSearch': 0, 'presenceAntennaPort1': False, 'neighCellConfig': (b'\x80', 2), 't-ReselectionEUTRA': 4 } } }, { 'sib4': { } }, { 'sib5': { 'interFreqCarrierFreqList': [ { 'dl-CarrierFreq': 1, 'q-RxLevMin': -45, 't-ReselectionEUTRA': 0, 'threshX-High': 31, 'threshX-Low': 29 , 'allowedMeasBandwidth': 'mbw6', 'presenceAntennaPort1': True, 'q-OffsetFreq': 'dB0', 'neighCellConfig': (b'\x00', 2) } ] } }, { 'sib6': { 't-ReselectionUTRA': 3 } }, { 'sib7': { 't-ReselectionGERAN': 3 } }, { 'sib8': { 'parameters1XRTT': { 'longCodeState1XRTT': (b'\x01\x23\x45\x67\x89\x00', 42) } } }, { 'sib9': { 'hnb-Name': b'\x34' } }, { 'sib10': { 'messageIdentifier': (b'\x23\x34', 16), 'serialNumber': (b'\x12\x34', 16), 'warningType': b'\x32\x12' } }, { 'sib11': { 'messageIdentifier': (b'\x67\x88', 16), 'serialNumber': (b'\x54\x35', 16), 'warningMessageSegmentType': 'notLastSegment', 'warningMessageSegmentNumber': 19, 'warningMessageSegment': b'\x12' } } ] } } } } } } encoded_message = ( b'' ) encoded = rrc.encode('BCCH-DL-SCH-Message', decoded_message) self.assertEqual(encoded, encoded_message) decoded = rrc.decode('BCCH-DL-SCH-Message', encoded) self.assertEqual(decoded, decoded_message)
def compile_dict(): asn1tools.compile_dict(dictionary)