Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
    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')
Beispiel #4
0
    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)
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #7
0
class JerPublicKeyCodec(PublicKeyCodecBase):
    _Codec = asn1tools.compile_dict(PublicKeyCodecBase._CodecDict, codec="jer")
Beispiel #8
0
    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)
Beispiel #9
0
    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)
Beispiel #10
0
    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)
Beispiel #11
0
    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)
Beispiel #12
0
    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)
Beispiel #13
0
    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)
Beispiel #14
0
 def compile_dict():
     asn1tools.compile_dict(dictionary)