PKh|>ݶUpyasn1/__init__.pyc; ZBc@s dZdS(s1N(smajorVersionId(smajorVersionId((s-build/bdist.linux-i686/egg/pyasn1/__init__.pys?sPKh|>/Ipyasn1/error.pyc; Mc@sFdefdYZdefdYZdefdYZdS(s PyAsn1ErrorcBstZRS(N(s__name__s __module__(((s*build/bdist.linux-i686/egg/pyasn1/error.pys PyAsn1ErrorssValueConstraintErrorcBstZRS(N(s__name__s __module__(((s*build/bdist.linux-i686/egg/pyasn1/error.pysValueConstraintErrorssSubstrateUnderrunErrorcBstZRS(N(s__name__s __module__(((s*build/bdist.linux-i686/egg/pyasn1/error.pysSubstrateUnderrunErrorsN(s StandardErrors PyAsn1ErrorsValueConstraintErrorsSubstrateUnderrunError(sSubstrateUnderrunErrors PyAsn1ErrorsValueConstraintError((s*build/bdist.linux-i686/egg/pyasn1/error.pys?sPKsW2-<ٚpyasn1/__init__.pymajorVersionId = '1' PKv!>Mpyasn1/error.pyclass PyAsn1Error(StandardError): pass class ValueConstraintError(PyAsn1Error): pass class SubstrateUnderrunError(PyAsn1Error): pass PKh|>4pyasn1/codec/__init__.pyc; ZBc@sdS(N((((s3build/bdist.linux-i686/egg/pyasn1/codec/__init__.pys?sPKsW2pyasn1/codec/__init__.pyPKPR>opyasn1/codec/der/decoder.py# DER decoder from pyasn1.type import univ from pyasn1.codec.cer import decoder decode = decoder.Decoder(decoder.tagMap, decoder.typeMap) PKh|>G9ccpyasn1/codec/der/decoder.pyc; ^Mc@s6dklZdklZeieieiZdS((suniv(sdecoderN(s pyasn1.typesunivspyasn1.codec.cersdecodersDecoderstagMapstypeMapsdecode(sdecodesunivsdecoder((s6build/bdist.linux-i686/egg/pyasn1/codec/der/decoder.pys?s  PKPR>l8pyasn1/codec/der/encoder.py# DER encoder from pyasn1.type import univ from pyasn1.codec.cer import encoder class SetOfEncoder(encoder.SetOfEncoder): def _cmpSetComponents(self, c1, c2): tagSet1 = isinstance(c1, univ.Choice) and \ c1.getEffectiveTagSet() or c1.getTagSet() tagSet2 = isinstance(c2, univ.Choice) and \ c2.getEffectiveTagSet() or c2.getTagSet() return cmp(tagSet1, tagSet2) tagMap = encoder.tagMap.copy() tagMap.update({ # Overload CER encodrs with BER ones (a bit hackerish XXX) univ.BitString.tagSet: encoder.encoder.BitStringEncoder(), univ.OctetString.tagSet: encoder.encoder.OctetStringEncoder(), # Set & SetOf have same tags univ.SetOf().tagSet: SetOfEncoder() }) typeMap = encoder.typeMap class Encoder(encoder.Encoder): def __call__(self, client, defMode=1, maxChunkSize=0): return encoder.Encoder.__call__(self, client, defMode, maxChunkSize) encode = Encoder(tagMap, typeMap) PKh|> Jpyasn1/codec/der/__init__.pyc; [Bc@sdS(N((((s7build/bdist.linux-i686/egg/pyasn1/codec/der/__init__.pys?sPKh|>[00pyasn1/codec/der/encoder.pyc; ^Mc@sdklZdklZdeifdYZeiiZeiheii eii <ei i eii <ei i e<eiZdeifdYZeeeZdS((suniv(sencoders SetOfEncodercBstZdZRS(NcCsit|tio |ip |i}t|tio |ip |i}t ||SdS(N( s isinstancesc1sunivsChoicesgetEffectiveTagSets getTagSetstagSet1sc2stagSet2scmp(sselfsc1sc2stagSet2stagSet1((s6build/bdist.linux-i686/egg/pyasn1/codec/der/encoder.pys_cmpSetComponentss,,(s__name__s __module__s_cmpSetComponents(((s6build/bdist.linux-i686/egg/pyasn1/codec/der/encoder.pys SetOfEncoderssEncodercBstZdddZRS(NiicCstii||||SdS(N(sencodersEncoders__call__sselfsclientsdefModes maxChunkSize(sselfsclientsdefModes maxChunkSize((s6build/bdist.linux-i686/egg/pyasn1/codec/der/encoder.pys__call__s(s__name__s __module__s__call__(((s6build/bdist.linux-i686/egg/pyasn1/codec/der/encoder.pysEncodersN(s pyasn1.typesunivspyasn1.codec.cersencoders SetOfEncoderstagMapscopysupdates BitStringstagSetsBitStringEncoders OctetStringsOctetStringEncodersSetOfstypeMapsEncodersencode(s SetOfEncodersEncoderstagMapsencodesencodersunivstypeMap((s6build/bdist.linux-i686/egg/pyasn1/codec/der/encoder.pys?s  R PKsW2pyasn1/codec/der/__init__.pyPKtf>H#&(pyasn1/codec/cer/decoder.py# CER decoder from pyasn1.type import univ from pyasn1.codec.ber import decoder from pyasn1 import error class BooleanDecoder(decoder.AbstractSimpleDecoder): protoComponent = univ.Boolean(0) def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): substrate = substrate[:length] if not substrate: raise error.PyAsn1Error('Empty substrate') byte = ord(substrate[0]) if byte == 0xff: value = 1 elif byte == 0x00: value = 0 else: raise error.PyAsn1Error('Boolean CER violation: %s' % byte) return self._createComponent(asn1Spec, tagSet, value), substrate[1:] tagMap = decoder.tagMap.copy() tagMap.update({ univ.Boolean.tagSet: BooleanDecoder(), }) typeMap = decoder.typeMap class Decoder(decoder.Decoder): pass decode = Decoder(tagMap, decoder.typeMap) PKh|>`4pyasn1/codec/cer/decoder.pyc; qsMc@sdklZdklZdklZdeifdYZeii Zei hei i e<ei Z deifdYZeeei ZdS((suniv(sdecoder(serrorsBooleanDecodercBs tZeidZdZRS(Nic Cs|| }| otidnt|d} | djo d}n+| djo d}ntid| |i||||dfSdS(NsEmpty substrateiiisBoolean CER violation: %s( s substrateslengthserrors PyAsn1Errorsordsbytesvaluesselfs_createComponentsasn1SpecstagSet( sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFunsvaluesbyte((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/decoder.pys valueDecoders     (s__name__s __module__sunivsBooleansprotoComponents valueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/decoder.pysBooleanDecoderssDecodercBstZRS(N(s__name__s __module__(((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/decoder.pysDecodersN(s pyasn1.typesunivspyasn1.codec.bersdecoderspyasn1serrorsAbstractSimpleDecodersBooleanDecoderstagMapscopysupdatesBooleanstagSetstypeMapsDecodersdecode(sdecodersdecodestagMapserrorsDecodersBooleanDecodersunivstypeMap((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/decoder.pys?s    PKPR> pyasn1/codec/cer/encoder.py# CER encoder import string from pyasn1.type import univ from pyasn1.codec.ber import encoder class BooleanEncoder(encoder.IntegerEncoder): def encodeValue(self, encodeFun, client, defMode, maxChunkSize): if client == 0: substrate = '\000' else: substrate = '\777' return substrate, 0 class BitStringEncoder(encoder.BitStringEncoder): def encodeValue(self, encodeFun, client, defMode, maxChunkSize): return encoder.BitStringEncoder.encodeValue( self, encodeFun, client, defMode, 1000 ) class OctetStringEncoder(encoder.OctetStringEncoder): def encodeValue(self, encodeFun, client, defMode, maxChunkSize): return encoder.OctetStringEncoder.encodeValue( self, encodeFun, client, defMode, 1000 ) # specialized RealEncoder here # specialized GeneralStringEncoder here # specialized GeneralizedTimeEncoder here # specialized UTCTimeEncoder here class SetOfEncoder(encoder.SequenceOfEncoder): def _cmpSetComponents(self, c1, c2): tagSet1 = isinstance(c1, univ.Choice) and \ c1.getMinTagSet() or c1.getTagSet() tagSet2 = isinstance(c2, univ.Choice) and \ c2.getMinTagSet() or c2.getTagSet() return cmp(tagSet1, tagSet2) def encodeValue(self, encodeFun, client, defMode, maxChunkSize): if isinstance(client, univ.SequenceAndSetBase): client.setDefaultComponents() client.verifySizeSpec() substrate = ''; idx = len(client) # This is certainly a hack but how else do I distinguish SetOf # from Set if they have the same tags&constraints? if isinstance(client, univ.SequenceAndSetBase): # Set comps = [] while idx > 0: idx = idx - 1 if client[idx] is None: # Optional component continue if client.getDefaultComponentByPosition(idx) == client[idx]: continue comps.append(client[idx]) comps.sort(self._cmpSetComponents) for c in comps: substrate = substrate + encodeFun(c, defMode, maxChunkSize) else: # SetOf compSubs = [] while idx > 0: idx = idx - 1 compSubs.append( encodeFun(client[idx], defMode, maxChunkSize) ) compSubs.sort() # perhaps padding's not needed substrate = string.join(compSubs, '') return substrate, 1 tagMap = encoder.tagMap.copy() tagMap.update({ univ.Boolean.tagSet: BooleanEncoder(), univ.BitString.tagSet: BitStringEncoder(), univ.OctetString.tagSet: OctetStringEncoder(), univ.SetOf().tagSet: SetOfEncoder() # conflcts with Set }) typeMap = encoder.typeMap.copy() typeMap.update({ univ.Set.typeId: SetOfEncoder(), univ.SetOf.typeId: SetOfEncoder() }) class Encoder(encoder.Encoder): def __call__(self, client, defMode=0, maxChunkSize=0): return encoder.Encoder.__call__(self, client, defMode, maxChunkSize) encode = Encoder(tagMap, typeMap) # EncoderFactory queries class instance and builds a map of tags -> encoders PKh|>/pyasn1/codec/cer/__init__.pyc; [Bc@sdS(N((((s7build/bdist.linux-i686/egg/pyasn1/codec/cer/__init__.pys?sPKh|>upyasn1/codec/cer/encoder.pyc; ^Mc@sZdkZdklZdklZdeifdYZdeifdYZdeifdYZd ei fd YZ ei i Z e i heiie<eiie<eiie<eiie <eii Zei heiie <eiie <d eifd YZee eZdS( N(suniv(sencodersBooleanEncodercBstZdZRS(NcCs+|djo d}nd}|dfSdS(Niss(sclients substrate(sselfs encodeFunsclientsdefModes maxChunkSizes substrate((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pys encodeValues  (s__name__s __module__s encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pysBooleanEncoderssBitStringEncodercBstZdZRS(NcCs tii||||dSdS(Ni(sencodersBitStringEncoders encodeValuesselfs encodeFunsclientsdefMode(sselfs encodeFunsclientsdefModes maxChunkSize((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pys encodeValues(s__name__s __module__s encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pysBitStringEncoderssOctetStringEncodercBstZdZRS(NcCs tii||||dSdS(Ni(sencodersOctetStringEncoders encodeValuesselfs encodeFunsclientsdefMode(sselfs encodeFunsclientsdefModes maxChunkSize((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pys encodeValues(s__name__s __module__s encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pysOctetStringEncoderss SetOfEncodercBstZdZdZRS(NcCsit|tio |ip |i}t|tio |ip |i}t ||SdS(N( s isinstancesc1sunivsChoices getMinTagSets getTagSetstagSet1sc2stagSet2scmp(sselfsc1sc2stagSet2stagSet1((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pys_cmpSetComponents s,,c Csft|tio|in|id} t|}t|tiog}xf|djoX|d}||t joqYn|i |||joqYn|i ||qYW|i |ix|D]}| ||||} qWn_g}x9|djo+|d}|i |||||qW|i ti|d} | dfSdS(Nsii(s isinstancesclientsunivsSequenceAndSetBasessetDefaultComponentssverifySizeSpecs substrateslensidxscompssNonesgetDefaultComponentByPositionsappendssortsselfs_cmpSetComponentsscs encodeFunsdefModes maxChunkSizescompSubssstringsjoin( sselfs encodeFunsclientsdefModes maxChunkSizesidxscscompSubsscompss substrate((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pys encodeValue's4     " (s__name__s __module__s_cmpSetComponentss encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pys SetOfEncoders sEncodercBstZdddZRS(NicCstii||||SdS(N(sencodersEncoders__call__sselfsclientsdefModes maxChunkSize(sselfsclientsdefModes maxChunkSize((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pys__call__Vs(s__name__s __module__s__call__(((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pysEncoderUs(sstrings pyasn1.typesunivspyasn1.codec.bersencodersIntegerEncodersBooleanEncodersBitStringEncodersOctetStringEncodersSequenceOfEncoders SetOfEncoderstagMapscopysupdatesBooleanstagSets BitStrings OctetStringsSetOfstypeMapsSetstypeIdsEncodersencode( sBooleanEncodersstringsunivsBitStringEncodersencoderstagMapsencodesEncodersOctetStringEncoderstypeMaps SetOfEncoder((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pys?s    (X1PKsW2pyasn1/codec/cer/__init__.pyPKǦs>r_ttpyasn1/codec/ber/decoder.py# BER decoder import types from pyasn1.type import tag, base, univ, char, useful, tagmap from pyasn1.codec.ber import eoo from pyasn1 import error class AbstractDecoder: protoComponent = None def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): raise error.PyAsn1Error('Decoder not implemented for %s' % tagSet) def indefLenValueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): raise error.PyAsn1Error('Indefinite length mode decoder not implemented for %s' % tagSet) class AbstractSimpleDecoder(AbstractDecoder): def _createComponent(self, asn1Spec, tagSet, value=None): if asn1Spec is None: return self.protoComponent.clone(value, tagSet) elif value is None: return asn1Spec else: return asn1Spec.clone(value) class AbstractConstructedDecoder(AbstractDecoder): def _createComponent(self, asn1Spec, tagSet, value=None): if asn1Spec is None: return self.protoComponent.clone(tagSet) else: return asn1Spec.clone() class EndOfOctetsDecoder(AbstractSimpleDecoder): def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): return eoo.endOfOctets, substrate[:length] class ExplicitTagDecoder(AbstractSimpleDecoder): def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): return decodeFun(substrate[:length], asn1Spec, tagSet, length) def indefLenValueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): value, substrate = decodeFun(substrate, asn1Spec, tagSet, length) terminator, substrate = decodeFun(substrate) if terminator == eoo.endOfOctets: return value, substrate else: raise error.PyAsn1Error('Missing end-of-octets terminator') explicitTagDecoder = ExplicitTagDecoder() class IntegerDecoder(AbstractSimpleDecoder): protoComponent = univ.Integer(0) precomputedValues = { '\x00': 0, '\x01': 1, '\x02': 2, '\x03': 3, '\x04': 4, '\x05': 5, '\x06': 6, '\x07': 7, '\x08': 8, '\x09': 9, 'xff': -1, 'xfe': -2, 'xfd': -3, 'xfc': -4, 'xfb': -5 } def _valueFilter(self, value): try: return int(value) except OverflowError: return value def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): substrate = substrate[:length] if not substrate: raise error.PyAsn1Error('Empty substrate') if substrate in self.precomputedValues: value = self.precomputedValues[substrate] else: firstOctet = ord(substrate[0]) if firstOctet & 0x80: value = -1L else: value = 0L for octet in substrate: value = value << 8 | ord(octet) value = self._valueFilter(value) return self._createComponent(asn1Spec, tagSet, value), substrate class BooleanDecoder(IntegerDecoder): protoComponent = univ.Boolean(0) def _valueFilter(self, value): if value: return 1 else: return 0 class BitStringDecoder(AbstractSimpleDecoder): protoComponent = univ.BitString(()) def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): substrate = substrate[:length] if tagSet[0][1] == tag.tagFormatSimple: # XXX what tag to check? if not substrate: raise error.PyAsn1Error('Missing initial octet') trailingBits = ord(substrate[0]) if trailingBits > 7: raise error.PyAsn1Error( 'Trailing bits overflow %s' % trailingBits ) substrate = substrate[1:] lsb = p = 0; l = len(substrate)-1; b = () while p <= l: if p == l: lsb = trailingBits j = 7 o = ord(substrate[p]) while j >= lsb: b = b + ((o>>j)&0x01,) j = j - 1 p = p + 1 return self._createComponent(asn1Spec, tagSet, b), '' r = self._createComponent(asn1Spec, tagSet, ()) if not decodeFun: return r, substrate while substrate: component, substrate = decodeFun(substrate) r = r + component return r, substrate def indefLenValueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): r = self._createComponent(asn1Spec, tagSet, '') if not decodeFun: return r, substrate while substrate: component, substrate = decodeFun(substrate) if component == eoo.endOfOctets: break r = r + component else: raise error.SubstrateUnderrunError( 'No EOO seen before substrate ends' ) return r, substrate class OctetStringDecoder(AbstractSimpleDecoder): protoComponent = univ.OctetString('') def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): substrate = substrate[:length] if tagSet[0][1] == tag.tagFormatSimple: # XXX what tag to check? return self._createComponent(asn1Spec, tagSet, substrate), '' r = self._createComponent(asn1Spec, tagSet, '') if not decodeFun: return r, substrate while substrate: component, substrate = decodeFun(substrate) r = r + component return r, substrate def indefLenValueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): r = self._createComponent(asn1Spec, tagSet, '') if not decodeFun: return r, substrate while substrate: component, substrate = decodeFun(substrate) if component == eoo.endOfOctets: break r = r + component else: raise error.SubstrateUnderrunError( 'No EOO seen before substrate ends' ) return r, substrate class NullDecoder(AbstractSimpleDecoder): protoComponent = univ.Null('') def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): substrate = substrate[:length] r = self._createComponent(asn1Spec, tagSet) if substrate: raise error.PyAsn1Error('Unexpected substrate for Null') return r, substrate class ObjectIdentifierDecoder(AbstractSimpleDecoder): protoComponent = univ.ObjectIdentifier(()) def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): substrate = substrate[:length] if not substrate: raise error.PyAsn1Error('Empty substrate') oid = (); index = 0 # Get the first subid subId = ord(substrate[index]) oid = oid + divmod(subId, 40) index = index + 1 substrateLen = len(substrate) while index < substrateLen: subId = ord(substrate[index]) if subId < 128: oid = oid + (subId,) index = index + 1 else: # Construct subid from a number of octets nextSubId = subId subId = 0 while nextSubId >= 128 and index < substrateLen: subId = (subId << 7) + (nextSubId & 0x7F) index = index + 1 nextSubId = ord(substrate[index]) if index == substrateLen: raise error.SubstrateUnderrunError( 'Short substrate for OID %s' % oid ) subId = (subId << 7) + nextSubId oid = oid + (subId,) index = index + 1 return self._createComponent(asn1Spec, tagSet, oid), substrate[index:] class RealDecoder(AbstractSimpleDecoder): protoComponent = univ.Real() def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): substrate = substrate[:length] if not length: raise error.SubstrateUnderrunError('Short substrate for Real') fo = ord(substrate[0]); substrate = substrate[1:] if fo & 0x40: # infinite value value = fo & 0x01 and float('-inf') or float('inf') elif fo & 0x80: # binary enoding if fo & 0x11 == 0: n = 1 elif fo & 0x01: n = 2 elif fo & 0x02: n = 3 else: n = ord(substrate[0]) eo, substrate = substrate[:n], substrate[n:] if not eo or not substrate: raise error.PyAsn1Error('Real exponent screwed') e = 0 while eo: # exponent e <<= 8 e |= ord(eo[0]) eo = eo[1:] p = 0 while substrate: # value p <<= 8 p |= ord(substrate[0]) substrate = substrate[1:] if fo & 0x40: # sign bit p = -p value = (p, 2, e) elif fo & 0xc0 == 0: # character encoding try: if fo & 0x3 == 0x1: # NR1 value = (long(substrate), 10, 0) elif fo & 0x3 == 0x2: # NR2 value = float(substrate) elif fo & 0x3 == 0x3: # NR3 value = float(substrate) else: raise error.SubstrateUnderrunError( 'Unknown NR (tag %s)' % fo ) except ValueError: raise error.SubstrateUnderrunError( 'Bad character Real syntax' ) elif fo & 0xc0 == 0x40: # special real value pass else: raise error.SubstrateUnderrunError( 'Unknown encoding (tag %s)' % fo ) return self._createComponent(asn1Spec, tagSet, value), substrate class SequenceDecoder(AbstractConstructedDecoder): protoComponent = univ.Sequence() def _getComponentTagMap(self, r, idx): try: return r.getComponentTagMapNearPosition(idx) except error.PyAsn1Error: return def _getComponentPositionByType(self, r, t, idx): return r.getComponentPositionNearType(t, idx) def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): substrate = substrate[:length] r = self._createComponent(asn1Spec, tagSet) idx = 0 if not decodeFun: return r, substrate while substrate: asn1Spec = self._getComponentTagMap(r, idx) component, substrate = decodeFun( substrate, asn1Spec ) idx = self._getComponentPositionByType( r, component.getEffectiveTagSet(), idx ) r.setComponentByPosition(idx, component, asn1Spec is None) idx = idx + 1 r.setDefaultComponents() r.verifySizeSpec() return r, substrate def indefLenValueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): r = self._createComponent(asn1Spec, tagSet) idx = 0 while substrate: asn1Spec = self._getComponentTagMap(r, idx) if not decodeFun: return r, substrate component, substrate = decodeFun(substrate, asn1Spec) if component == eoo.endOfOctets: break idx = self._getComponentPositionByType( r, component.getEffectiveTagSet(), idx ) r.setComponentByPosition(idx, component, asn1Spec is None) idx = idx + 1 else: raise error.SubstrateUnderrunError( 'No EOO seen before substrate ends' ) r.setDefaultComponents() r.verifySizeSpec() return r, substrate class SequenceOfDecoder(AbstractConstructedDecoder): protoComponent = univ.SequenceOf() def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): substrate = substrate[:length] r = self._createComponent(asn1Spec, tagSet) asn1Spec = r.getComponentType() idx = 0 if not decodeFun: return r, substrate while substrate: component, substrate = decodeFun( substrate, asn1Spec ) r.setComponentByPosition(idx, component, asn1Spec is None) idx = idx + 1 r.verifySizeSpec() return r, substrate def indefLenValueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): r = self._createComponent(asn1Spec, tagSet) asn1Spec = r.getComponentType() idx = 0 if not decodeFun: return r, substrate while substrate: component, substrate = decodeFun(substrate, asn1Spec) if component == eoo.endOfOctets: break r.setComponentByPosition(idx, component, asn1Spec is None) idx = idx + 1 else: raise error.SubstrateUnderrunError( 'No EOO seen before substrate ends' ) r.verifySizeSpec() return r, substrate class SetDecoder(SequenceDecoder): protoComponent = univ.Set() def _getComponentTagMap(self, r, idx): return r.getComponentTagMap() def _getComponentPositionByType(self, r, t, idx): nextIdx = r.getComponentPositionByType(t) if nextIdx is None: return idx else: return nextIdx class SetOfDecoder(SequenceOfDecoder): protoComponent = univ.SetOf() class ChoiceDecoder(AbstractConstructedDecoder): protoComponent = univ.Choice() def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): substrate = substrate[:length] r = self._createComponent(asn1Spec, tagSet) if not decodeFun: return r, substrate if r.getTagSet() == tagSet: # explicitly tagged Choice component, substrate = decodeFun( substrate, r.getComponentTagMap() ) else: component, substrate = decodeFun( substrate, r.getComponentTagMap(), tagSet, length, state ) if isinstance(component, univ.Choice): effectiveTagSet = component.getEffectiveTagSet() else: effectiveTagSet = component.getTagSet() r.setComponentByType(effectiveTagSet, component, 0, asn1Spec is None) return r, substrate indefLenValueDecoder = valueDecoder class AnyDecoder(AbstractSimpleDecoder): protoComponent = univ.Any() def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): if asn1Spec is None or \ asn1Spec is not None and tagSet != asn1Spec.getTagSet(): # untagged Any container, recover inner header substrate length = length + len(fullSubstrate) - len(substrate) substrate = fullSubstrate substrate = substrate[:length] return self._createComponent(asn1Spec, tagSet, value=substrate), '' def indefLenValueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length, state, decodeFun): if asn1Spec is not None and tagSet == asn1Spec.getTagSet(): # tagged Any type -- consume header substrate header = '' else: # untagged Any, recover header substrate header = fullSubstrate[:-len(substrate)] r = self._createComponent(asn1Spec, tagSet, header) # Any components do not inherit initial tag asn1Spec = self.protoComponent if not decodeFun: return r, substrate while substrate: component, substrate = decodeFun(substrate, asn1Spec) if component == eoo.endOfOctets: break r = r + component else: raise error.SubstrateUnderrunError( 'No EOO seen before substrate ends' ) return r, substrate # character string types class UTF8StringDecoder(OctetStringDecoder): protoComponent = char.UTF8String() class NumericStringDecoder(OctetStringDecoder): protoComponent = char.NumericString() class PrintableStringDecoder(OctetStringDecoder): protoComponent = char.PrintableString() class TeletexStringDecoder(OctetStringDecoder): protoComponent = char.TeletexString() class VideotexStringDecoder(OctetStringDecoder): protoComponent = char.VideotexString() class IA5StringDecoder(OctetStringDecoder): protoComponent = char.IA5String() class GraphicStringDecoder(OctetStringDecoder): protoComponent = char.GraphicString() class VisibleStringDecoder(OctetStringDecoder): protoComponent = char.VisibleString() class GeneralStringDecoder(OctetStringDecoder): protoComponent = char.GeneralString() class UniversalStringDecoder(OctetStringDecoder): protoComponent = char.UniversalString() class BMPStringDecoder(OctetStringDecoder): protoComponent = char.BMPString() # "useful" types class GeneralizedTimeDecoder(OctetStringDecoder): protoComponent = useful.GeneralizedTime() class UTCTimeDecoder(OctetStringDecoder): protoComponent = useful.UTCTime() tagMap = { eoo.endOfOctets.tagSet: EndOfOctetsDecoder(), univ.Integer.tagSet: IntegerDecoder(), univ.Boolean.tagSet: BooleanDecoder(), univ.BitString.tagSet: BitStringDecoder(), univ.OctetString.tagSet: OctetStringDecoder(), univ.Null.tagSet: NullDecoder(), univ.ObjectIdentifier.tagSet: ObjectIdentifierDecoder(), univ.Enumerated.tagSet: IntegerDecoder(), univ.Real.tagSet: RealDecoder(), univ.Sequence.tagSet: SequenceDecoder(), # conflicts with SequenceOf univ.Set.tagSet: SetDecoder(), # conflicts with SetOf univ.Choice.tagSet: ChoiceDecoder(), # conflicts with Any # character string types char.UTF8String.tagSet: UTF8StringDecoder(), char.NumericString.tagSet: NumericStringDecoder(), char.PrintableString.tagSet: PrintableStringDecoder(), char.TeletexString.tagSet: TeletexStringDecoder(), char.VideotexString.tagSet: VideotexStringDecoder(), char.IA5String.tagSet: IA5StringDecoder(), char.GraphicString.tagSet: GraphicStringDecoder(), char.VisibleString.tagSet: VisibleStringDecoder(), char.GeneralString.tagSet: GeneralStringDecoder(), char.UniversalString.tagSet: UniversalStringDecoder(), char.BMPString.tagSet: BMPStringDecoder(), # useful types useful.GeneralizedTime.tagSet: GeneralizedTimeDecoder(), useful.UTCTime.tagSet: UTCTimeDecoder() } # Type-to-codec map for ambiguous ASN.1 types typeMap = { univ.Set.typeId: SetDecoder(), univ.SetOf.typeId: SetOfDecoder(), univ.Sequence.typeId: SequenceDecoder(), univ.SequenceOf.typeId: SequenceOfDecoder(), univ.Choice.typeId: ChoiceDecoder(), univ.Any.typeId: AnyDecoder() } ( stDecodeTag, stDecodeLength, stGetValueDecoder, stGetValueDecoderByAsn1Spec, stGetValueDecoderByTag, stTryAsExplicitTag, stDecodeValue, stDumpRawValue, stErrorCondition, stStop ) = range(10) class Decoder: defaultErrorState = stErrorCondition # defaultErrorState = stDumpRawValue defaultRawDecoder = AnyDecoder() def __init__(self, tagMap, typeMap={}): self.__tagMap = tagMap self.__typeMap = typeMap self.__endOfOctetsTagSet = eoo.endOfOctets.getTagSet() # Tag & TagSet objects caches self.__tagCache = {} self.__tagSetCache = {} def __call__(self, substrate, asn1Spec=None, tagSet=None, length=None, state=stDecodeTag, recursiveFlag=1): fullSubstrate = substrate while state != stStop: if state == stDecodeTag: # Decode tag if not substrate: raise error.SubstrateUnderrunError( 'Short octet stream on tag decoding' ) firstOctet = substrate[0] substrate = substrate[1:] if firstOctet in self.__tagCache: lastTag = self.__tagCache[firstOctet] else: t = ord(firstOctet) tagClass = t&0xC0 tagFormat = t&0x20 tagId = t&0x1F if tagId == 0x1F: tagId = 0L while 1: if not substrate: raise error.SubstrateUnderrunError( 'Short octet stream on long tag decoding' ) t = ord(substrate[0]) tagId = tagId << 7 | (t&0x7F) substrate = substrate[1:] if not t&0x80: break lastTag = tag.Tag( tagClass=tagClass, tagFormat=tagFormat, tagId=tagId ) if tagId < 31: # cache short tags self.__tagCache[firstOctet] = lastTag if tagSet is None: if firstOctet in self.__tagSetCache: tagSet = self.__tagSetCache[firstOctet] else: # base tag not recovered tagSet = tag.TagSet((), lastTag) if firstOctet in self.__tagCache: self.__tagSetCache[firstOctet] = tagSet else: tagSet = lastTag + tagSet state = stDecodeLength if state == stDecodeLength: # Decode length if not substrate: raise error.SubstrateUnderrunError( 'Short octet stream on length decoding' ) firstOctet = ord(substrate[0]) if firstOctet == 128: size = 1 length = -1 elif firstOctet < 128: length, size = firstOctet, 1 else: size = firstOctet & 0x7F # encoded in size bytes length = 0 lengthString = substrate[1:size+1] # missing check on maximum size, which shouldn't be a # problem, we can handle more than is possible if len(lengthString) != size: raise error.SubstrateUnderrunError( '%s<%s at %s' % (size, len(lengthString), tagSet) ) for char in lengthString: length = (length << 8) | ord(char) size = size + 1 state = stGetValueDecoder substrate = substrate[size:] if length != -1 and len(substrate) < length: raise error.SubstrateUnderrunError( '%d-octet short' % (length - len(substrate)) ) if state == stGetValueDecoder: if asn1Spec is None: state = stGetValueDecoderByTag else: state = stGetValueDecoderByAsn1Spec # # There're two ways of creating subtypes in ASN.1 what influences # decoder operation. These methods are: # 1) Either base types used in or no IMPLICIT tagging has been # applied on subtyping. # 2) Subtype syntax drops base type information (by means of # IMPLICIT tagging. # The first case allows for complete tag recovery from substrate # while the second one requires original ASN.1 type spec for # decoding. # # In either case a set of tags (tagSet) is coming from substrate # in an incremental, tag-by-tag fashion (this is the case of # EXPLICIT tag which is most basic). Outermost tag comes first # from the wire. # if state == stGetValueDecoderByTag: if tagSet in self.__tagMap: concreteDecoder = self.__tagMap[tagSet] else: concreteDecoder = None if concreteDecoder: state = stDecodeValue else: _k = tagSet[:1] if _k in self.__tagMap: concreteDecoder = self.__tagMap[_k] else: concreteDecoder = None if concreteDecoder: state = stDecodeValue else: state = stTryAsExplicitTag if state == stGetValueDecoderByAsn1Spec: if type(asn1Spec) == types.DictType or \ isinstance(asn1Spec, tagmap.TagMap): if tagSet in asn1Spec: __chosenSpec = asn1Spec[tagSet] else: __chosenSpec = None else: __chosenSpec = asn1Spec if __chosenSpec is not None and ( tagSet == __chosenSpec.getTagSet() or \ tagSet in __chosenSpec.getTagMap() ): # use base type for codec lookup to recover untagged types baseTagSet = __chosenSpec.baseTagSet if __chosenSpec.typeId is not None and \ __chosenSpec.typeId in self.__typeMap: # ambiguous type concreteDecoder = self.__typeMap[__chosenSpec.typeId] elif baseTagSet in self.__tagMap: # base type or tagged subtype concreteDecoder = self.__tagMap[baseTagSet] else: concreteDecoder = None if concreteDecoder: asn1Spec = __chosenSpec state = stDecodeValue else: state = stTryAsExplicitTag elif tagSet == self.__endOfOctetsTagSet: concreteDecoder = self.__tagMap[tagSet] state = stDecodeValue else: state = stTryAsExplicitTag if state == stTryAsExplicitTag: if tagSet and \ tagSet[0][1] == tag.tagFormatConstructed and \ tagSet[0][0] != tag.tagClassUniversal: # Assume explicit tagging concreteDecoder = explicitTagDecoder state = stDecodeValue else: state = self.defaultErrorState if state == stDumpRawValue: concreteDecoder = self.defaultRawDecoder state = stDecodeValue if state == stDecodeValue: if recursiveFlag: decodeFun = self else: decodeFun = None if length == -1: # indef length value, substrate = concreteDecoder.indefLenValueDecoder( fullSubstrate, substrate, asn1Spec, tagSet, length, stGetValueDecoder, decodeFun ) else: value, _substrate = concreteDecoder.valueDecoder( fullSubstrate, substrate, asn1Spec, tagSet, length, stGetValueDecoder, decodeFun ) if recursiveFlag: substrate = substrate[length:] else: substrate = _substrate state = stStop if state == stErrorCondition: raise error.PyAsn1Error( '%s not in asn1Spec: %s' % (tagSet, repr(asn1Spec)) ) return value, substrate decode = Decoder(tagMap, typeMap) # XXX # non-recursive decoding; return position rather than substrate PKh|>d@[@FFpyasn1/codec/ber/decoder.pyc; Mc @sdkZdklZlZlZlZlZlZdkl Z dk l Z dfdYZ de fdYZ de fd YZd e fd YZd e fd YZeZde fdYZdefdYZde fdYZde fdYZde fdYZde fdYZde fdYZdefdYZdefdYZd efd!YZd"efd#YZd$efd%YZd&e fd'YZd(efd)YZd*efd+YZ d,efd-YZ!d.efd/YZ"d0efd1YZ#d2efd3YZ$d4efd5YZ%d6efd7YZ&d8efd9YZ'd:efd;YZ(d<efd=YZ)d>efd?YZ*d@efdAYZ+he i,i-e<ei.i-e<ei/i-e<ei0i-e<ei1i-e<ei2i-e<ei3i-e<ei4i-e<ei5i-e<ei6i-e<ei7i-e<ei8i-e<ei9i-e<ei:i-e <ei;i-e!<ei<i-e"<ei=i-e#<ei>i-e$<ei?i-e%<ei@i-e&<eiAi-e'<eiBi-e(<eiCi-e)<eiDi-e*<eiEi-e+t|B} qxW|i | } |i ||| |fSdS(NsEmpty substrateiilli(s substrateslengthserrors PyAsn1ErrorsselfsprecomputedValuessvaluesords firstOctetsoctets _valueFilters_createComponentsasn1SpecstagSet( sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFunsoctetsvalues firstOctet((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoderPs   (s__name__s __module__sunivsIntegersprotoComponentsprecomputedValuess _valueFilters valueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysIntegerDecoder6s sBooleanDecodercBs tZeidZdZRS(NicCs|odSndSdS(Nii(svalue(sselfsvalue((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys _valueFilterds(s__name__s __module__sunivsBooleansprotoComponents _valueFilter(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysBooleanDecoderbssBitStringDecodercBs)tZeifZdZdZRS(NcCs|| }|ddtijo| otidnt|d}|djotid|n|d}d}} t |d} f} x}| | joo| | jo |}nd} t|| }x1| |jo#| || ?d@f} | d} qW| d} qW|i||| dfSn|i||f}| o||fSnx(|o ||\} }|| }qfW||fSdS(NiisMissing initial octetisTrailing bits overflow %ss(s substrateslengthstagSetstagstagFormatSimpleserrors PyAsn1Errorsords trailingBitsslsbspslenslsbsjsosselfs_createComponentsasn1Specsrs decodeFuns component(sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFunsosbs componentsjslsps trailingBitsslsbsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoderls:        c Cs|i||d} | o| |fSnxL|o5||\}}|ti joPn| |} q.Wt i d| |fSdS(Nss!No EOO seen before substrate ends( sselfs_createComponentsasn1SpecstagSetsrs decodeFuns substrates componentseoos endOfOctetsserrorsSubstrateUnderrunError( sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFuns componentsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysindefLenValueDecoders(s__name__s __module__sunivs BitStringsprotoComponents valueDecodersindefLenValueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysBitStringDecoderjs sOctetStringDecodercBs)tZeidZdZdZRS(Nsc Cs|| }|ddtijo|i|||dfSn|i||d} | o| |fSnx(|o ||\}}| |} qmW| |fSdS(Niis( s substrateslengthstagSetstagstagFormatSimplesselfs_createComponentsasn1Specsrs decodeFuns component( sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFuns componentsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoders c Cs|i||d} | o| |fSnxL|o5||\}}|ti joPn| |} q.Wt i d| |fSdS(Nss!No EOO seen before substrate ends( sselfs_createComponentsasn1SpecstagSetsrs decodeFuns substrates componentseoos endOfOctetsserrorsSubstrateUnderrunError( sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFuns componentsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysindefLenValueDecoders(s__name__s __module__sunivs OctetStringsprotoComponents valueDecodersindefLenValueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysOctetStringDecoders s NullDecodercBs tZeidZdZRS(Nsc CsD|| }|i||}|otidn||fSdS(NsUnexpected substrate for Null( s substrateslengthsselfs_createComponentsasn1SpecstagSetsrserrors PyAsn1Error( sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFunsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoders  (s__name__s __module__sunivsNullsprotoComponents valueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys NullDecoderssObjectIdentifierDecodercBs tZeifZdZRS(Nc Cs{|| }| otidnf} d}t||} | t| d} |d}t |} x|| jot||} | djo| | f} |d}qm| } d} xK| djo || jo0| d>| d@} |d}t||} qW|| joti d| n| d>| } | | f} |d}qmW|i||| ||fSdS( NsEmpty substrateii(iiiisShort substrate for OID %s(s substrateslengthserrors PyAsn1ErrorsoidsindexsordssubIdsdivmodslens substrateLens nextSubIdsSubstrateUnderrunErrorsselfs_createComponentsasn1SpecstagSet( sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFunsindexsoids substrateLenssubIds nextSubId((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoders6          (s__name__s __module__sunivsObjectIdentifiersprotoComponents valueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysObjectIdentifierDecoderss RealDecodercBstZeiZdZRS(NcCs|| }| otidnt|d} |d}| d@o(| d@o tdp td} n&| d@o5| d@djo d} n;| d@o d } n&| d @o d } nt|d} || || f\}}| p| oti d nd} x4|o,| d K} | t|dO} |d}qWd} x4|o,| d K} | t|dO} |d}qUW| d@o | } n| d | f} n| d @djoy| d @djot |ddf} nV| d @d jot|} n5| d @d jot|} ntid| Wqtj otidqXn)| d @djontid| |i||| |fSdS(NsShort substrate for Realiii@s-infsinfiiiisReal exponent screwediii sUnknown NR (tag %s)sBad character Real syntaxsUnknown encoding (tag %s)(s substrateslengthserrorsSubstrateUnderrunErrorsordsfosfloatsvaluesnseos PyAsn1Errorsespslongs ValueErrorsselfs_createComponentsasn1SpecstagSet(sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFunseosnspsvaluesesfo((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoders^  (          (s__name__s __module__sunivsRealsprotoComponents valueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys RealDecoders sSequenceDecodercBs8tZeiZdZdZdZdZRS(NcCs2y|i|SWntij o dSnXdS(N(srsgetComponentTagMapNearPositionsidxserrors PyAsn1Error(sselfsrsidx((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys_getComponentTagMap&scCs|i||SdS(N(srsgetComponentPositionNearTypestsidx(sselfsrstsidx((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys_getComponentPositionByType,sc Cs|| }|i||} d}| o| |fSnxq|oi|i | |}|||\} }|i | | i |}| i || |tj|d}q;W| i| i| |fSdS(Nii(s substrateslengthsselfs_createComponentsasn1SpecstagSetsrsidxs decodeFuns_getComponentTagMaps components_getComponentPositionByTypesgetEffectiveTagSetssetComponentByPositionsNonessetDefaultComponentssverifySizeSpec( sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFunsidxs componentsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoder/s   c Cs|i||} d}x|o|i| |}| o| |fSn|||\} }| t i joPn|i | | i |}| i|| |tj|d}qWtid| i| i| |fSdS(Niis!No EOO seen before substrate ends(sselfs_createComponentsasn1SpecstagSetsrsidxs substrates_getComponentTagMaps decodeFuns componentseoos endOfOctetss_getComponentPositionByTypesgetEffectiveTagSetssetComponentByPositionsNoneserrorsSubstrateUnderrunErrorssetDefaultComponentssverifySizeSpec( sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFunsidxs componentsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysindefLenValueDecoderDs"  ( s__name__s __module__sunivsSequencesprotoComponents_getComponentTagMaps_getComponentPositionByTypes valueDecodersindefLenValueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysSequenceDecoder$s     sSequenceOfDecodercBs&tZeiZdZdZRS(Nc Cs|| }|i||} | i}d}| o| |fSnxD|o<|||\} }| i || |t j|d}qGW| i | |fSdS(Nii(s substrateslengthsselfs_createComponentsasn1SpecstagSetsrsgetComponentTypesidxs decodeFuns componentssetComponentByPositionsNonesverifySizeSpec( sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFunsidxs componentsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoder^s   c Cs|i||} | i}d}| o| |fSnxh|oQ|||\} }| t i joPn| i || |t j|d}q=Wtid| i| |fSdS(Niis!No EOO seen before substrate ends(sselfs_createComponentsasn1SpecstagSetsrsgetComponentTypesidxs decodeFuns substrates componentseoos endOfOctetsssetComponentByPositionsNoneserrorsSubstrateUnderrunErrorsverifySizeSpec( sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFunsidxs componentsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysindefLenValueDecoderos  (s__name__s __module__sunivs SequenceOfsprotoComponents valueDecodersindefLenValueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysSequenceOfDecoder\s  s SetDecodercBs&tZeiZdZdZRS(NcCs|iSdS(N(srsgetComponentTagMap(sselfsrsidx((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys_getComponentTagMapscCs,|i|}|tjo|Sn|SdS(N(srsgetComponentPositionByTypestsnextIdxsNonesidx(sselfsrstsidxsnextIdx((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys_getComponentPositionByTypes (s__name__s __module__sunivsSetsprotoComponents_getComponentTagMaps_getComponentPositionByType(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys SetDecoders  s SetOfDecodercBstZeiZRS(N(s__name__s __module__sunivsSetOfsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys SetOfDecoderss ChoiceDecodercBs#tZeiZdZeZRS(Nc Cs|| }|i||} | o| |fSn| i|jo||| i \} }n%||| i |||\} }t | t io| i}n | i}| i|| d|tj| |fSdS(Ni(s substrateslengthsselfs_createComponentsasn1SpecstagSetsrs decodeFuns getTagSetsgetComponentTagMaps componentsstates isinstancesunivsChoicesgetEffectiveTagSetseffectiveTagSetssetComponentByTypesNone( sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFunseffectiveTagSets componentsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoders $ (s__name__s __module__sunivsChoicesprotoComponents valueDecodersindefLenValueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys ChoiceDecoders  s AnyDecodercBs&tZeiZdZdZRS(NcCs{|tjp|tj o||ijo$|t|t|}|}n|| }|i ||d|dfSdS(Nsvalues( sasn1SpecsNonestagSets getTagSetslengthslens fullSubstrates substratesselfs_createComponent(sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFun((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoders -  c Cs|tj o||ijo d} n|t| } |i ||| } |i }| o| |fSnxO|o8|||\}}|tijoPn| |} qrWtid| |fSdS(Nss!No EOO seen before substrate ends(sasn1SpecsNonestagSets getTagSetsheaders fullSubstrateslens substratesselfs_createComponentsrsprotoComponents decodeFuns componentseoos endOfOctetsserrorsSubstrateUnderrunError( sselfs fullSubstrates substratesasn1SpecstagSetslengthsstates decodeFuns componentsheadersr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysindefLenValueDecoders   (s__name__s __module__sunivsAnysprotoComponents valueDecodersindefLenValueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys AnyDecoders  sUTF8StringDecodercBstZeiZRS(N(s__name__s __module__schars UTF8StringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysUTF8StringDecoderssNumericStringDecodercBstZeiZRS(N(s__name__s __module__schars NumericStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysNumericStringDecoderssPrintableStringDecodercBstZeiZRS(N(s__name__s __module__scharsPrintableStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysPrintableStringDecoderssTeletexStringDecodercBstZeiZRS(N(s__name__s __module__schars TeletexStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysTeletexStringDecoderssVideotexStringDecodercBstZeiZRS(N(s__name__s __module__scharsVideotexStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysVideotexStringDecoderssIA5StringDecodercBstZeiZRS(N(s__name__s __module__schars IA5StringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysIA5StringDecoderssGraphicStringDecodercBstZeiZRS(N(s__name__s __module__schars GraphicStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysGraphicStringDecoderssVisibleStringDecodercBstZeiZRS(N(s__name__s __module__schars VisibleStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysVisibleStringDecoderssGeneralStringDecodercBstZeiZRS(N(s__name__s __module__schars GeneralStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysGeneralStringDecoderssUniversalStringDecodercBstZeiZRS(N(s__name__s __module__scharsUniversalStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysUniversalStringDecoderssBMPStringDecodercBstZeiZRS(N(s__name__s __module__schars BMPStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysBMPStringDecoderssGeneralizedTimeDecodercBstZeiZRS(N(s__name__s __module__susefulsGeneralizedTimesprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysGeneralizedTimeDecoderssUTCTimeDecodercBstZeiZRS(N(s__name__s __module__susefulsUTCTimesprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysUTCTimeDecodersi sDecodercBs;tZeZeZhdZeeeeddZ RS(NcCs:||_||_tii|_h|_ h|_ dS(N( stagMapsselfs_Decoder__tagMapstypeMaps_Decoder__typeMapseoos endOfOctetss getTagSets_Decoder__endOfOctetsTagSets_Decoder__tagCaches_Decoder__tagSetCache(sselfstagMapstypeMap((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys__init__ s    icCs|}x|tjoy|tjo| otidn|d}|d}||i jo|i |} nt |}|d@} |d@} |d@}|djoqd}xhno\| otidnt |d}|d >|d @B}|d}|d @ oPqqWntid | d | d|} |djo| |i |t |B}qW| d} t}|| }|djot||jo!tid|t|q&n|tjo!|tjo t}qTt}n|tjo||i jo|i |}nt}|o t"}q|d } | |i jo|i | }nt}|o t"}qt$}n|tjo@t%|t&i'jpt(|t)i*o%||jo||}qFt}n|}|tj o#||i,jp||i-jo|i.}|i/tj o|i/|i0jo|i0|i/}n(||i jo|i |}nt}|o|}t"}q.t$}q2||i1jo|i |}t"}q2t$}n|t$joT|o-|ddti2jo|ddti3jot4}t"}q|i5}n|t6jo|i7}t"}n|t"jo|o |}nt}|djo+|i:|||||t|\}}nC|i<|||||t|\}}|o||}n|}t}n|t>jo#ti?d|t@|fq q W||fSdS(Ns"Short octet stream on tag decodingiiii ils'Short octet stream on long tag decodingiiistagClasss tagFormatstagIds%Short octet stream on length decodingis %s<%s at %sis%d-octet shorts%s not in asn1Spec: %s(As substrates fullSubstratesstatesstStops stDecodeTagserrorsSubstrateUnderrunErrors firstOctetsselfs_Decoder__tagCacheslastTagsordststagClasss tagFormatstagIdstagsTagstagSetsNones_Decoder__tagSetCachesTagSetsstDecodeLengthssizeslengths lengthStringslenscharsstGetValueDecodersasn1SpecsstGetValueDecoderByTagsstGetValueDecoderByAsn1Specs_Decoder__tagMapsconcreteDecoders stDecodeValues_ksstTryAsExplicitTagstypestypessDictTypes isinstancestagmapsTagMaps_Decoder__chosenSpecs getTagSets getTagMaps baseTagSetstypeIds_Decoder__typeMaps_Decoder__endOfOctetsTagSetstagFormatConstructedstagClassUniversalsexplicitTagDecodersdefaultErrorStatesstDumpRawValuesdefaultRawDecoders recursiveFlags decodeFunsindefLenValueDecodersvalues valueDecoders _substratesstErrorConditions PyAsn1Errorsrepr(sselfs substratesasn1SpecstagSetslengthsstates recursiveFlags decodeFunscharslastTagssizestagClasss_ks tagFormatsconcreteDecoders_Decoder__chosenSpecstagIds firstOctets fullSubstratesvalues baseTagSets lengthStringsts _substrate((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys__call__(s                    &   %          )  3 #      7          (( s__name__s __module__sstErrorConditionsdefaultErrorStates AnyDecodersdefaultRawDecoders__init__sNones stDecodeTags__call__(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysDecoders  (Ystypess pyasn1.typestagsbasesunivscharsusefulstagmapspyasn1.codec.berseoospyasn1serrorsAbstractDecodersAbstractSimpleDecodersAbstractConstructedDecodersEndOfOctetsDecodersExplicitTagDecodersexplicitTagDecodersIntegerDecodersBooleanDecodersBitStringDecodersOctetStringDecoders NullDecodersObjectIdentifierDecoders RealDecodersSequenceDecodersSequenceOfDecoders SetDecoders SetOfDecoders ChoiceDecoders AnyDecodersUTF8StringDecodersNumericStringDecodersPrintableStringDecodersTeletexStringDecodersVideotexStringDecodersIA5StringDecodersGraphicStringDecodersVisibleStringDecodersGeneralStringDecodersUniversalStringDecodersBMPStringDecodersGeneralizedTimeDecodersUTCTimeDecoders endOfOctetsstagSetsIntegersBooleans BitStrings OctetStringsNullsObjectIdentifiers EnumeratedsRealsSequencesSetsChoices UTF8Strings NumericStringsPrintableStrings TeletexStringsVideotexStrings IA5Strings GraphicStrings VisibleStrings GeneralStringsUniversalStrings BMPStringsGeneralizedTimesUTCTimestagMapstypeIdsSetOfs SequenceOfsAnystypeMapsranges stDecodeTagsstDecodeLengthsstGetValueDecodersstGetValueDecoderByAsn1SpecsstGetValueDecoderByTagsstTryAsExplicitTags stDecodeValuesstDumpRawValuesstErrorConditionsstStopsDecodersdecode(7sSequenceOfDecodersEndOfOctetsDecodersusefulsGeneralStringDecodersstGetValueDecoderByAsn1SpecsSequenceDecodersNumericStringDecoderscharsObjectIdentifierDecodersIA5StringDecodersBooleanDecodersunivsAbstractDecoders NullDecodersIntegerDecodersAbstractSimpleDecodersstTryAsExplicitTagsUTF8StringDecodersOctetStringDecodersstGetValueDecoderByTagsstGetValueDecoders SetDecodersstDecodeLengthsExplicitTagDecodersdecodesVideotexStringDecodersBMPStringDecodersDecoders SetOfDecodersAbstractConstructedDecodersUTCTimeDecoders stDecodeValuesGeneralizedTimeDecodersstDumpRawValuesexplicitTagDecoders RealDecodersbasestagmapsTeletexStringDecodersPrintableStringDecodersBitStringDecoderstypeMapstypess AnyDecoders stDecodeTagsstStopsVisibleStringDecoderseoosstErrorConditionsGraphicStringDecoders ChoiceDecoderstagstagMapserrorsUniversalStringDecoder((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys?sR +     ,1 %;8' (r *PKǦs>'HL00pyasn1/codec/ber/encoder.py# BER encoder import string from pyasn1.type import base, tag, univ, char, useful from pyasn1.codec.ber import eoo from pyasn1 import error class Error(Exception): pass class AbstractItemEncoder: supportIndefLenMode = 1 def encodeTag(self, t, isConstructed): tagClass, tagFormat, tagId = t.asTuple() # this is a hotspot v = tagClass | tagFormat if isConstructed: v = v|tag.tagFormatConstructed if tagId < 31: return chr(v|tagId) else: s = chr(tagId&0x7f) tagId = tagId >> 7 while tagId: s = chr(0x80|(tagId&0x7f)) + s tagId = tagId >> 7 return chr(v|0x1F) + s def encodeLength(self, length, defMode): if not defMode and self.supportIndefLenMode: return '\x80' if length < 0x80: return chr(length) else: substrate = '' while length: substrate = chr(length&0xff) + substrate length = length >> 8 substrateLen = len(substrate) if substrateLen > 126: raise Error('Length octets overflow (%d)' % substrateLen) return chr(0x80 | substrateLen) + substrate def encodeValue(self, encodeFun, value, defMode, maxChunkSize): raise Error('Not implemented') def _encodeEndOfOctets(self, encodeFun, defMode): if defMode or not self.supportIndefLenMode: return '' else: return encodeFun(eoo.endOfOctets, defMode) def encode(self, encodeFun, value, defMode, maxChunkSize): substrate, isConstructed = self.encodeValue( encodeFun, value, defMode, maxChunkSize ) tagSet = value.getTagSet() if tagSet: if not isConstructed: # primitive form implies definite mode defMode = 1 return self.encodeTag( tagSet[-1], isConstructed ) + self.encodeLength( len(substrate), defMode ) + substrate + self._encodeEndOfOctets(encodeFun, defMode) else: return substrate # untagged value class EndOfOctetsEncoder(AbstractItemEncoder): def encodeValue(self, encodeFun, value, defMode, maxChunkSize): return '', 0 class ExplicitlyTaggedItemEncoder(AbstractItemEncoder): def encodeValue(self, encodeFun, value, defMode, maxChunkSize): if isinstance(value, base.AbstractConstructedAsn1Item): value = value.clone(tagSet=value.getTagSet()[:-1], cloneValueFlag=1) else: value = value.clone(tagSet=value.getTagSet()[:-1]) return encodeFun(value, defMode, maxChunkSize), 1 explicitlyTaggedItemEncoder = ExplicitlyTaggedItemEncoder() class IntegerEncoder(AbstractItemEncoder): supportIndefLenMode = 0 def encodeValue(self, encodeFun, value, defMode, maxChunkSize): octets = [] value = long(value) # to save on ops on asn1 type while 1: octets.insert(0, value & 0xff) if value == 0 or value == -1: break value = value >> 8 if value == 0 and octets[0] & 0x80: octets.insert(0, 0) while len(octets) > 1 and \ (octets[0] == 0 and octets[1] & 0x80 == 0 or \ octets[0] == 0xff and octets[1] & 0x80 != 0): del octets[0] return string.join(map(chr, octets), ''), 0 class BitStringEncoder(AbstractItemEncoder): def encodeValue(self, encodeFun, value, defMode, maxChunkSize): if not maxChunkSize or len(value) <= maxChunkSize*8: r = {}; l = len(value); p = 0; j = 7 while p < l: i, j = divmod(p, 8) r[i] = r.get(i,0) | value[p]<<(7-j) p = p + 1 keys = r.keys(); keys.sort() return chr(7-j) + string.join( map(lambda k,r=r: chr(r[k]), keys),'' ), 0 else: pos = 0; substrate = '' while 1: # count in octets v = value.clone(value[pos*8:pos*8+maxChunkSize*8]) if not v: break substrate = substrate + encodeFun(v, defMode, maxChunkSize) pos = pos + maxChunkSize return substrate, 1 class OctetStringEncoder(AbstractItemEncoder): def encodeValue(self, encodeFun, value, defMode, maxChunkSize): if not maxChunkSize or len(value) <= maxChunkSize: return str(value), 0 else: pos = 0; substrate = '' while 1: v = value.clone(value[pos:pos+maxChunkSize]) if not v: break substrate = substrate + encodeFun(v, defMode, maxChunkSize) pos = pos + maxChunkSize return substrate, 1 class NullEncoder(AbstractItemEncoder): supportIndefLenMode = 0 def encodeValue(self, encodeFun, value, defMode, maxChunkSize): return '', 0 class ObjectIdentifierEncoder(AbstractItemEncoder): supportIndefLenMode = 0 precomputedValues = { (1, 3, 6, 1, 2): ('+', '\x06', '\x01', '\x02'), (1, 3, 6, 1, 4): ('+', '\x06', '\x01', '\x04') } def encodeValue(self, encodeFun, value, defMode, maxChunkSize): oid = value.asTuple() if oid[:5] in self.precomputedValues: octets = self.precomputedValues[oid[:5]] index = 5 else: if len(oid) < 2: raise error.PyAsn1Error('Short OID %s' % value) # Build the first twos index = 0 subid = oid[index] * 40 subid = subid + oid[index+1] if subid < 0 or subid > 0xff: raise error.PyAsn1Error( 'Initial sub-ID overflow %s in OID %s' % (oid[index:], value) ) octets = (chr(subid),) index = index + 2 # Cycle through subids for subid in oid[index:]: if subid > -1 and subid < 128: # Optimize for the common case octets = octets + (chr(subid & 0x7f),) elif subid < 0 or subid > 0xFFFFFFFFL: raise error.PyAsn1Error( 'SubId overflow %s in %s' % (subid, value) ) else: # Pack large Sub-Object IDs res = (chr(subid & 0x7f),) subid = subid >> 7 while subid > 0: res = (chr(0x80 | (subid & 0x7f)),) + res subid = subid >> 7 # Convert packed Sub-Object ID to string and add packed # it to resulted Object ID octets = octets + (string.join(res, ''),) return string.join(octets, ''), 0 class RealEncoder(AbstractItemEncoder): def encodeValue(self, encodeFun, value, defMode, maxChunkSize): if value.isPlusInfinity(): return '\x40', 0 if value.isMinusInfinity(): return '\x41', 0 m, b, e = value if not m: return '', 0 if b == 10: return '\x03%dE%s%d' % (m, e == 0 and '+' or '', e), 0 elif b == 2: fo = 0x80 # binary enoding if m < 0: fo = fo | 0x40 # sign bit m = -m while long(m) != m: # drop floating point m *= 2 e -= 1 while m & 0x1 == 0: # mantissa normalization m >>= 1 e += 1 eo = '' while e: eo = chr(e&0xff) + eo e >>= 8 n = len(eo) if n > 0xff: raise error.PyAsn1Error('Real exponent overflow') if n == 1: pass elif n == 2: fo |= 1 elif n == 3: fo |= 2 else: fo |= 3 eo = chr(n//0xff+1) + eo po = '' while m: po = chr(m&0xff) + po m >>= 8 substrate = chr(fo) + eo + po return substrate, 0 else: raise error.PyAsn1Error('Prohibited Real base %s' % b) class SequenceEncoder(AbstractItemEncoder): def encodeValue(self, encodeFun, value, defMode, maxChunkSize): value.setDefaultComponents() value.verifySizeSpec() substrate = ''; idx = len(value) while idx > 0: idx = idx - 1 if value[idx] is None: # Optional component continue component = value.getDefaultComponentByPosition(idx) if component is not None and component == value[idx]: continue substrate = encodeFun( value[idx], defMode, maxChunkSize ) + substrate return substrate, 1 class SequenceOfEncoder(AbstractItemEncoder): def encodeValue(self, encodeFun, value, defMode, maxChunkSize): value.verifySizeSpec() substrate = ''; idx = len(value) while idx > 0: idx = idx - 1 substrate = encodeFun( value[idx], defMode, maxChunkSize ) + substrate return substrate, 1 class ChoiceEncoder(AbstractItemEncoder): def encodeValue(self, encodeFun, value, defMode, maxChunkSize): return encodeFun(value.getComponent(), defMode, maxChunkSize), 1 class AnyEncoder(OctetStringEncoder): def encodeValue(self, encodeFun, value, defMode, maxChunkSize): return str(value), defMode == 0 tagMap = { eoo.endOfOctets.tagSet: EndOfOctetsEncoder(), univ.Boolean.tagSet: IntegerEncoder(), univ.Integer.tagSet: IntegerEncoder(), univ.BitString.tagSet: BitStringEncoder(), univ.OctetString.tagSet: OctetStringEncoder(), univ.Null.tagSet: NullEncoder(), univ.ObjectIdentifier.tagSet: ObjectIdentifierEncoder(), univ.Enumerated.tagSet: IntegerEncoder(), univ.Real.tagSet: RealEncoder(), # Sequence & Set have same tags as SequenceOf & SetOf univ.SequenceOf.tagSet: SequenceOfEncoder(), univ.SetOf.tagSet: SequenceOfEncoder(), univ.Choice.tagSet: ChoiceEncoder(), # character string types char.UTF8String.tagSet: OctetStringEncoder(), char.NumericString.tagSet: OctetStringEncoder(), char.PrintableString.tagSet: OctetStringEncoder(), char.TeletexString.tagSet: OctetStringEncoder(), char.VideotexString.tagSet: OctetStringEncoder(), char.IA5String.tagSet: OctetStringEncoder(), char.GraphicString.tagSet: OctetStringEncoder(), char.VisibleString.tagSet: OctetStringEncoder(), char.GeneralString.tagSet: OctetStringEncoder(), char.UniversalString.tagSet: OctetStringEncoder(), char.BMPString.tagSet: OctetStringEncoder(), # useful types useful.GeneralizedTime.tagSet: OctetStringEncoder(), useful.UTCTime.tagSet: OctetStringEncoder() } # Type-to-codec map for ambiguous ASN.1 types typeMap = { univ.Set.typeId: SequenceEncoder(), univ.SetOf.typeId: SequenceOfEncoder(), univ.Sequence.typeId: SequenceEncoder(), univ.SequenceOf.typeId: SequenceOfEncoder(), univ.Choice.typeId: ChoiceEncoder(), univ.Any.typeId: AnyEncoder() } class Encoder: def __init__(self, tagMap, typeMap={}): self.__tagMap = tagMap self.__typeMap = typeMap def __call__(self, value, defMode=1, maxChunkSize=0): tagSet = value.getTagSet() if len(tagSet) > 1: concreteEncoder = explicitlyTaggedItemEncoder else: if value.typeId is not None and value.typeId in self.__typeMap: concreteEncoder = self.__typeMap[value.typeId] elif tagSet in self.__tagMap: concreteEncoder = self.__tagMap[tagSet] else: baseTagSet = value.baseTagSet if baseTagSet in self.__tagMap: concreteEncoder = self.__tagMap[baseTagSet] else: raise Error('No encoder for %s' % value) return concreteEncoder.encode( self, value, defMode, maxChunkSize ) encode = Encoder(tagMap, typeMap) PKh|>OÇpyasn1/codec/ber/__init__.pyc; [Bc@sdS(N((((s7build/bdist.linux-i686/egg/pyasn1/codec/ber/__init__.pys?sPKh|>bAbApyasn1/codec/ber/encoder.pyc; Mc@sdkZdklZlZlZlZlZdklZdk l Z de fdYZ dfdYZ de fd YZd e fd YZeZd e fd YZde fdYZde fdYZde fdYZde fdYZde fdYZde fdYZde fdYZde fdYZdefdYZheiie<eiie<eiie<eiie<ei ie<ei!ie<ei"ie<ei#ie<ei$ie<ei%ie<ei&ie<ei'ie<ei(ie<ei)ie<ei*ie<ei+ie<ei,ie<ei-ie<ei.ie<ei/ie<ei0ie<ei1ie<ei2ie<ei3ie<ei4ieWt|}|djotd|ntd|B|SdS(Nsisiii~sLength octets overflow (%d)( sdefModesselfssupportIndefLenModeslengthschrs substrateslens substrateLensError(sselfslengthsdefModes substrates substrateLen((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys encodeLengths   cCstddS(NsNot implemented(sError(sselfs encodeFunsvaluesdefModes maxChunkSize((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys encodeValue)scCs.|p|i odSn|ti|SdS(Ns(sdefModesselfssupportIndefLenModes encodeFunseoos endOfOctets(sselfs encodeFunsdefMode((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys_encodeEndOfOctets,scCs|i||||\}}|i}|oT| o d}n|i |d||i t ||||i ||Sn|SdS(Nii(sselfs encodeValues encodeFunsvaluesdefModes maxChunkSizes substrates isConstructeds getTagSetstagSets encodeTags encodeLengthslens_encodeEndOfOctets(sselfs encodeFunsvaluesdefModes maxChunkSizes isConstructeds substratestagSet((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysencode2s  B(s__name__s __module__ssupportIndefLenModes encodeTags encodeLengths encodeValues_encodeEndOfOctetssencode(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysAbstractItemEncoder s     sEndOfOctetsEncodercBstZdZRS(NcCsddfSdS(Nsi((sselfs encodeFunsvaluesdefModes maxChunkSize((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys encodeValueCs(s__name__s __module__s encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysEndOfOctetsEncoderBssExplicitlyTaggedItemEncodercBstZdZRS(NcCsot|tio&|id|id dd}n|id|id }||||dfSdS(NstagSetiscloneValueFlagi( s isinstancesvaluesbasesAbstractConstructedAsn1Itemsclones getTagSets encodeFunsdefModes maxChunkSize(sselfs encodeFunsvaluesdefModes maxChunkSize((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys encodeValueGs (s__name__s __module__s encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysExplicitlyTaggedItemEncoderFssIntegerEncodercBstZdZdZRS(NicCsg}t|}xInoA|id|d@|djp |djoPn|d?}qW|djo |dd@o|iddnxkt|djoI|ddjo|dd@djp#|ddjo|dd@djo |d=qWtitt|ddfSdS(Niiiiiis( soctetsslongsvaluesinsertslensstringsjoinsmapschr(sselfs encodeFunsvaluesdefModes maxChunkSizesoctets((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys encodeValueSs _ (s__name__s __module__ssupportIndefLenModes encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysIntegerEncoderQssBitStringEncodercBstZdZRS(NcCs`| pt||djoh} t|}d} d}xW| |joIt| d\}}| i |d|| d|>B| |<| d} q@W| i } | i t d|t it| d| ddfSnyd} d} x_noW|i|| d| d|d!}| oPn| ||||} | |} qW| dfSdS(NiiiicCst||S(N(schrsrsk(sksr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysmss(s maxChunkSizeslensvaluesrslspsjsdivmodsisgetskeysssortschrsstringsjoinsmapsposs substratesclonesvs encodeFunsdefMode(sselfs encodeFunsvaluesdefModes maxChunkSizesvsisjslsposspsrskeyss substrate((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys encodeValueds$ &7 &(s__name__s __module__s encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysBitStringEncodercssOctetStringEncodercBstZdZRS(NcCs| pt||jot|dfSnmd}d}xSnoK|i||||!}| oPn|||||}||}qEW|dfSdS(Nisi( s maxChunkSizeslensvaluesstrsposs substratesclonesvs encodeFunsdefMode(sselfs encodeFunsvaluesdefModes maxChunkSizesvsposs substrate((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys encodeValue{s (s__name__s __module__s encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysOctetStringEncoderzss NullEncodercBstZdZdZRS(NicCsddfSdS(Nsi((sselfs encodeFunsvaluesdefModes maxChunkSize((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys encodeValues(s__name__s __module__ssupportIndefLenModes encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys NullEncoderssObjectIdentifierEncodercBsetZdZhdddddfdddd f<ddddd fdddd f| djo| dO} n#| dO} t | d d |}d} x*|o"t |d @| } |d L}qWt | || }|dfSnt i d|dS(Ns@isAsi s%dE%s%ds+iii@iiisReal exponent overflowisProhibited Real base %s(svaluesisPlusInfinitysisMinusInfinitysmsbsesfoslongseoschrslensnserrors PyAsn1Errorspos substrate( sselfs encodeFunsvaluesdefModes maxChunkSizes substrateseosbsmsnsesposfo((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys encodeValues\   /            (s__name__s __module__s encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys RealEncoderssSequenceEncodercBstZdZRS(NcCs|i|id}t|}x|djot|d}||tjoq)n|i|}|tj o|||joq)n||||||}q)W|dfSdS(Nsii( svaluessetDefaultComponentssverifySizeSpecs substrateslensidxsNonesgetDefaultComponentByPositions components encodeFunsdefModes maxChunkSize(sselfs encodeFunsvaluesdefModes maxChunkSizes substratesidxs component((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys encodeValues    (s__name__s __module__s encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysSequenceEncoderssSequenceOfEncodercBstZdZRS(NcCsc|id}t|}x6|djo(|d}||||||}qW|dfSdS(Nsii(svaluesverifySizeSpecs substrateslensidxs encodeFunsdefModes maxChunkSize(sselfs encodeFunsvaluesdefModes maxChunkSizes substratesidx((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys encodeValues   (s__name__s __module__s encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysSequenceOfEncoderss ChoiceEncodercBstZdZRS(NcCs ||i||dfSdS(Ni(s encodeFunsvalues getComponentsdefModes maxChunkSize(sselfs encodeFunsvaluesdefModes maxChunkSize((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys encodeValue s(s__name__s __module__s encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys ChoiceEncoderss AnyEncodercBstZdZRS(NcCst||djfSdS(Ni(sstrsvaluesdefMode(sselfs encodeFunsvaluesdefModes maxChunkSize((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys encodeValue s(s__name__s __module__s encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys AnyEncoder ssEncodercBs#tZhdZdddZRS(NcCs||_||_dS(N(stagMapsselfs_Encoder__tagMapstypeMaps_Encoder__typeMap(sselfstagMapstypeMap((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys__init__:s iicCs|i}t|djo t}n|itj o|i|i jo|i |i}n\||i jo|i |}n;|i }||i jo|i |}nt d||i ||||SdS(NisNo encoder for %s(svalues getTagSetstagSetslensexplicitlyTaggedItemEncodersconcreteEncoderstypeIdsNonesselfs_Encoder__typeMaps_Encoder__tagMaps baseTagSetsErrorsencodesdefModes maxChunkSize(sselfsvaluesdefModes maxChunkSizes baseTagSetsconcreteEncoderstagSet((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys__call__>s  # (s__name__s __module__s__init__s__call__(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysEncoder9s (=sstrings pyasn1.typesbasestagsunivscharsusefulspyasn1.codec.berseoospyasn1serrors ExceptionsErrorsAbstractItemEncodersEndOfOctetsEncodersExplicitlyTaggedItemEncodersexplicitlyTaggedItemEncodersIntegerEncodersBitStringEncodersOctetStringEncoders NullEncodersObjectIdentifierEncoders RealEncodersSequenceEncodersSequenceOfEncoders ChoiceEncoders AnyEncoders endOfOctetsstagSetsBooleansIntegers BitStrings OctetStringsNullsObjectIdentifiers EnumeratedsReals SequenceOfsSetOfsChoices UTF8Strings NumericStringsPrintableStrings TeletexStringsVideotexStrings IA5Strings GraphicStrings VisibleStrings GeneralStringsUniversalStrings BMPStringsGeneralizedTimesUTCTimestagMapsSetstypeIdsSequencesAnystypeMapsEncodersencode(susefulseooscharstagsExplicitlyTaggedItemEncodersSequenceOfEncodersEndOfOctetsEncodersexplicitlyTaggedItemEncodersOctetStringEncoders ChoiceEncoders AnyEncodersunivsObjectIdentifierEncodersEncodersSequenceEncodersencodesstrings NullEncoderserrorsBitStringEncodersbasesErrorstypeMapsIntegerEncoderstagMapsAbstractItemEncoders RealEncoder((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys?s. %  9 0/  r PKR4pyasn1/codec/ber/eoo.pyfrom pyasn1.type import base, tag class EndOfOctets(base.AbstractSimpleAsn1Item): defaultValue = 0 tagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 0x00) ) endOfOctets = EndOfOctets() PKh|>tBpyasn1/codec/ber/eoo.pyc; LDc@s9dklZlZdeifdYZeZdS((sbasestags EndOfOctetscBs2tZdZeieieieidZRS(Ni( s__name__s __module__s defaultValuestags initTagSetsTagstagClassUniversalstagFormatSimplestagSet(((s2build/bdist.linux-i686/egg/pyasn1/codec/ber/eoo.pys EndOfOctetssN(s pyasn1.typesbasestagsAbstractSimpleAsn1Items EndOfOctetss endOfOctets(sbasestags EndOfOctetss endOfOctets((s2build/bdist.linux-i686/egg/pyasn1/codec/ber/eoo.pys?sPKsW2pyasn1/codec/ber/__init__.pyPKv!>P3zpyasn1/type/useful.py# ASN.1 "useful" types from pyasn1.type import char, tag class GeneralizedTime(char.VisibleString): tagSet = char.VisibleString.tagSet.tagImplicitly( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 24) ) class UTCTime(char.VisibleString): tagSet = char.VisibleString.tagSet.tagImplicitly( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 23) ) PKh|> m) ) pyasn1/type/tagmap.pyc; Y]Mc@s$dklZdfdYZdS((serrorsTagMapcBs\tZhhedZdZdZdZedZdZ dZ dZ RS( NcCs+|i|_|i|_||_dS(N(sposMapscopysselfs_TagMap__posMapsnegMaps_TagMap__negMapsdefTypes_TagMap__defType(sselfsposMapsnegMapsdefType((s0build/bdist.linux-i686/egg/pyasn1/type/tagmap.pys__init__scCs1||ijp|itj o ||ijSdS(N(stagSetsselfs_TagMap__posMaps_TagMap__defTypesNones_TagMap__negMap(sselfstagSet((s0build/bdist.linux-i686/egg/pyasn1/type/tagmap.pys __contains__ scCsj||ijo|i|SnH||ijotidn%|itj o |iSn tdS(NsKey in negative map( stagSetsselfs_TagMap__posMaps_TagMap__negMapserrors PyAsn1Errors_TagMap__defTypesNonesKeyError(sselfstagSet((s0build/bdist.linux-i686/egg/pyasn1/type/tagmap.pys __getitem__ s cCsSt|idt|i}|itj o|dt|i}n|SdS(Ns/(sreprsselfs_TagMap__posMaps_TagMap__negMapsss_TagMap__defTypesNone(sselfss((s0build/bdist.linux-i686/egg/pyasn1/type/tagmap.pys__repr__s c Cs|itj o|itj otid|n|itj o|i}n |i}|ii }xU|i i D]A\}}|o ||jotid|n|||g/c!!pyasn1/type/tag.pyc; ~Bss, (sselfs __class__s__name__sjoinsmaps_TagSet__superTags(sself((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__repr__?scCs(t|i|if|i|fSdS(N(sapplysselfs __class__s_TagSet__baseTags_TagSet__superTagsssuperTag(sselfssuperTag((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__add__EscCs$t|i|i|f|iSdS(N(sapplysselfs __class__s_TagSet__baseTagssuperTags_TagSet__superTags(sselfssuperTag((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__radd__IscCs^|\}}}|tjotidn|tjot|t|}n||SdS(Ns"Can't tag with UNIVERSAL-class tag( ssuperTagstagClasss tagFormatstagIdstagClassUniversalserrors PyAsn1ErrorstagFormatConstructedsTagsself(sselfssuperTagstagClasss tagFormatstagId((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys tagExplicitlyNs   cCsJ|\}}}|io!t||idd|}n|d |SdS(Nii(ssuperTagstagClasss tagFormatstagIdsselfs_TagSet__superTagssTag(sselfssuperTagstagClasss tagFormatstagId((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys tagImplicitlyXs !cCs |iSdS(N(sselfs_TagSet__baseTag(sself((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys getBaseTag^scCsUt|tjo3t|i|ift|i|i |i Sn|i|SdS(N( stypesidxs SliceTypesapplysselfs __class__s_TagSet__baseTagsgetslices_TagSet__superTagssstartsstop(sselfsidx((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys __getitem___s  cCst|i|iSdS(N(scmpsselfsuniqsother(sselfsother((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__cmp__escCs|i|ijSdS(N(sselfsuniqsother(sselfsother((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__eq__fscCs|i|ijSdS(N(sselfsuniqsother(sselfsother((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__ne__gscCs |iSdS(N(sselfs_TagSet__hashedSuperTags(sself((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__hash__hscCs |iSdS(N(sselfs_TagSet__lenOfSuperTags(sself((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__len__iscCsrt||ijodSn|id}x<|djo.|i|||jodSn|d}q.WdSdS(Nii(slenstagSetsselfs_TagSet__lenOfSuperTagssidxs_TagSet__superTags(sselfstagSetsidx((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pysisSuperTagSetOfjs  (s__name__s __module__s__init__s__repr__s__add__s__radd__s tagExplicitlys tagImplicitlys getBaseTags __getitem__s__cmp__s__eq__s__ne__s__hash__s__len__sisSuperTagSetOf(((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pysTagSet4s           cCst||SdS(N(sTagSetstag(stag((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys initTagSettsN(soperatorsgetslicestypess SliceTypesstringsjoinspyasn1serrorstagClassUniversalstagClassApplicationstagClassContextstagClassPrivatestagFormatSimplestagFormatConstructedstagCategoryImplicitstagCategoryExplicitstagCategoryUntaggedsTagsTagSets initTagSet(sjoinsTagSetsgetslicestagFormatConstructedstagCategoryImplicitstagCategoryExplicitstagClassApplicationsTags initTagSetstagClassContextserrorstagFormatSimplestagClassUniversalstagCategoryUntaggedstagClassPrivates SliceType((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys?s    !@PKPR>ʂWWpyasn1/type/namedtype.py# NamedType specification for constructed types from pyasn1.type import tagmap from pyasn1 import error class NamedType: isOptional = 0 isDefaulted = 0 def __init__(self, name, t): self.__name = name; self.__type = t def __repr__(self): return '%s(%s, %s)' % ( self.__class__.__name__, repr(self.__name), repr(self.__type) ) def getType(self): return self.__type def getName(self): return self.__name def __getitem__(self, idx): if idx == 0: return self.__name if idx == 1: return self.__type raise IndexError() class OptionalNamedType(NamedType): isOptional = 1 class DefaultedNamedType(NamedType): isDefaulted = 1 class NamedTypes: def __init__(self, *namedTypes): self.__namedTypes = namedTypes self.__namedTypesLen = len(self.__namedTypes) self.__minTagSet = None self.__tagToPosIdx = {}; self.__nameToPosIdx = {} self.__tagMap = { False: None, True: None } self.__ambigiousTypes = {} def __repr__(self): r = '%s(' % self.__class__.__name__ for n in self.__namedTypes: r = r + '%s, ' % repr(n) return r + ')' def __getitem__(self, idx): return self.__namedTypes[idx] def __nonzero__(self): return self.__namedTypesLen and 1 or 0 def __len__(self): return self.__namedTypesLen def getTypeByPosition(self, idx): if idx < 0 or idx >= self.__namedTypesLen: raise error.PyAsn1Error('Type position out of range') else: return self.__namedTypes[idx].getType() def getPositionByType(self, tagSet): if not self.__tagToPosIdx: idx = self.__namedTypesLen while idx > 0: idx = idx - 1 tagMap = self.__namedTypes[idx].getType().getTagMap() for t in tagMap.getPosMap().keys(): if t in self.__tagToPosIdx: raise error.PyAsn1Error('Duplicate type %s' % t) self.__tagToPosIdx[t] = idx try: return self.__tagToPosIdx[tagSet] except KeyError: raise error.PyAsn1Error('Type %s not found' % tagSet) def getNameByPosition(self, idx): try: return self.__namedTypes[idx].getName() except IndexError: raise error.PyAsn1Error('Type position out of range') def getPositionByName(self, name): if not self.__nameToPosIdx: idx = self.__namedTypesLen while idx > 0: idx = idx - 1 n = self.__namedTypes[idx].getName() if n in self.__nameToPosIdx: raise error.PyAsn1Error('Duplicate name %s' % n) self.__nameToPosIdx[n] = idx try: return self.__nameToPosIdx[name] except KeyError: raise error.PyAsn1Error('Name %s not found' % name) def __buildAmbigiousTagMap(self): ambigiousTypes = () idx = self.__namedTypesLen while idx > 0: idx = idx - 1 t = self.__namedTypes[idx] if t.isOptional or t.isDefaulted: ambigiousTypes = (t, ) + ambigiousTypes else: ambigiousTypes = (t, ) self.__ambigiousTypes[idx] = apply(NamedTypes, ambigiousTypes) def getTagMapNearPosition(self, idx): if not self.__ambigiousTypes: self.__buildAmbigiousTagMap() try: return self.__ambigiousTypes[idx].getTagMap() except KeyError: raise error.PyAsn1Error('Type position out of range') def getPositionNearType(self, tagSet, idx): if not self.__ambigiousTypes: self.__buildAmbigiousTagMap() try: return idx+self.__ambigiousTypes[idx].getPositionByType(tagSet) except KeyError: raise error.PyAsn1Error('Type position out of range') def genMinTagSet(self): if self.__minTagSet is None: for t in self.__namedTypes: __type = t.getType() tagSet = getattr(__type,'getMinTagSet',__type.getTagSet)() if self.__minTagSet is None or tagSet < self.__minTagSet: self.__minTagSet = tagSet return self.__minTagSet def getTagMap(self, uniq=False): if self.__tagMap[uniq] is None: tagMap = tagmap.TagMap() for nt in self.__namedTypes: tagMap = tagMap.clone( nt.getType(), nt.getType().getTagMap(), uniq ) self.__tagMap[uniq] = tagMap return self.__tagMap[uniq] PKh|>$v6v6pyasn1/type/constraint.pyc; ?sMc@sdZdkZdkZdklZdfdYZdefdYZdefdYZd efd YZd efd YZ d efdYZ defdYZ defdYZ defdYZ de fdYZde fdYZdS(s ASN.1 subtype constraints classes. Constraints are relatively rare, but every ASN1 object is doing checks all the time for whether they have any constraints and whether they are applicable to the object. What we're going to do is define objects/functions that can be called unconditionally if they are present, and that are simply not present if there are no constraints. Original concept and code by Mike C. Fletcher. N(serrorsAbstractConstraintcBsttZdZdZedZdZdZdZdZ dZ dZ d Z d Z d ZRS( sAbstract base-class for constraint objects Constraints should be stored in a simple sequence in the namespace of their client Asn1Item sub-classes. cGs#h|_|i|t|_dS(N(sselfs _valueMaps _setValuessvaluessNones!_AbstractConstraint__hashedValues(sselfsvalues((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys__init__s  cCsLy|i||Wn1tij o"}tid||fnXdS(Ns%s failed at: "%s"(sselfs _testValuesvaluesidxserrorsValueConstraintErrorswhy(sselfsvaluesidxswhy((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys__call__scCs3d|iititd|idfSdS(Ns%s(%s)cCs t|S(N(sreprsx(sx((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys&ss, (sselfs __class__s__name__sstringsjoinsmaps_values(sself((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys__repr__#scCst|i|if|SdS(N(scmpsselfs __class__s_valuessother(sselfsother((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys__cmp__)scCs.||jodp|i|if|jSdS(Ni(sselfsothers __class__s_values(sselfsother((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys__eq__+scCs:|itjot|i|if|_n|iSdS(N(sselfs!_AbstractConstraint__hashedValuessNoneshashs __class__s_values(sself((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys__hash__-scCs ||_dS(N(svaluessselfs_values(sselfsvalues((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys _setValues1scCsti|dS(N(serrorsValueConstraintErrorsvalue(sselfsvaluesidx((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys _testValue2scCs |iSdS(N(sselfs _valueMap(sself((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys getValueMap6scCs.||ijp||jp ||jSdS(N(sselfsotherConstraints getValueMap(sselfsotherConstraint((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys isSuperTypeOf7scCs+||ijp||jp ||jSdS(N(sotherConstraintsselfs _valueMap(sselfsotherConstraint((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys isSubTypeOf:s(s__name__s __module__s__doc__s__init__sNones__call__s__repr__s__cmp__s__eq__s__hash__s _setValuess _testValues getValueMaps isSuperTypeOfs isSubTypeOf(((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pysAbstractConstraints           sSingleValueConstraintcBstZdZdZRS(s/Value must be part of defined values constraintcCs'||ijoti|ndS(N(svaluesselfs_valuesserrorsValueConstraintError(sselfsvaluesidx((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys _testValue@s(s__name__s __module__s__doc__s _testValue(((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pysSingleValueConstraint>s sContainedSubtypeConstraintcBstZdZdZRS(s4Value must satisfy all of defined set of constraintscCs%x|iD]}|||q WdS(N(sselfs_valuesscsvaluesidx(sselfsvaluesidxsc((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys _testValueGs (s__name__s __module__s__doc__s _testValue(((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pysContainedSubtypeConstraintEs sValueRangeConstraintcBs tZdZdZdZRS(s6Value must be within start and stop values (inclusive)cCs7||ijp ||ijoti|ndS(N(svaluesselfsstartsstopserrorsValueConstraintError(sselfsvaluesidx((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys _testValueMs cCst|djo tid|iifn|\|_|_|i|ijo,tid|ii|i|ifnt i ||dS(Nis%s: bad constraint valuess5%s: screwed constraint values (start > stop): %s > %s( slensvaluesserrors PyAsn1Errorsselfs __class__s__name__sstartsstopsAbstractConstraints _setValues(sselfsvalues((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys _setValuesQs  ,(s__name__s __module__s__doc__s _testValues _setValues(((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pysValueRangeConstraintKs  sValueSizeConstraintcBstZdZdZRS(s;len(value) must be within start and stop values (inclusive)cCsCt|}||ijp ||ijoti|ndS(N(slensvalueslsselfsstartsstopserrorsValueConstraintError(sselfsvaluesidxsl((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys _testValuebs  (s__name__s __module__s__doc__s _testValue(((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pysValueSizeConstraint`s sPermittedAlphabetConstraintcBstZdZdZRS(NcCs4f|_x$|D]}|it||_qWdS(N(sselfs_valuessvaluessvstuple(sselfsvaluessv((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys _setValueshs cCs8x1|D])}||ijoti|qqWdS(N(svaluesvsselfs_valuesserrorsValueConstraintError(sselfsvaluesidxsv((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys _testValuems(s__name__s __module__s _setValuess _testValue(((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pysPermittedAlphabetConstraintgs sInnerTypeConstraintcBs tZdZdZdZRS(s0Value must satisfy type and presense constraintscCs|io|i|no|iod||ijoti|n|i|\}}|djoti|n||ndS(NsABSENT( sselfs*_InnerTypeConstraint__singleTypeConstraintsvalues,_InnerTypeConstraint__multipleTypeConstraintsidxserrorsValueConstraintErrors constraintsstatus(sselfsvaluesidxsstatuss constraint((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys _testValueus   cCsyh|_t|_xP|D]H}t|tijo#|d|df|i|df~pyasn1/type/tagmap.pyfrom pyasn1 import error class TagMap: def __init__(self, posMap={}, negMap={}, defType=None): self.__posMap = posMap.copy() self.__negMap = negMap.copy() self.__defType = defType def __contains__(self, tagSet): return tagSet in self.__posMap or \ self.__defType is not None and tagSet not in self.__negMap def __getitem__(self, tagSet): if tagSet in self.__posMap: return self.__posMap[tagSet] elif tagSet in self.__negMap: raise error.PyAsn1Error('Key in negative map') elif self.__defType is not None: return self.__defType else: raise KeyError() def __repr__(self): s = repr(self.__posMap) + '/' + repr(self.__negMap) if self.__defType is not None: s = s + '/' + repr(self.__defType) return s def clone(self, parentType, tagMap, uniq=False): if self.__defType is not None and tagMap.getDef() is not None: raise error.PyAsn1Error('Duplicate default value at %s' % self) if tagMap.getDef() is not None: defType = tagMap.getDef() else: defType = self.__defType posMap = self.__posMap.copy() for k, v in tagMap.getPosMap().items(): if uniq and k in posMap: raise error.PyAsn1Error('Duplicate positive key %s' % k) posMap[k] = parentType negMap = self.__negMap.copy() negMap.update(tagMap.getNegMap()) return self.__class__( posMap, negMap, defType, ) def getPosMap(self): return self.__posMap.copy() def getNegMap(self): return self.__negMap.copy() def getDef(self): return self.__defType PK27>(ipyasn1/type/tag.py# ASN.1 types tags from operator import getslice from types import SliceType from string import join from pyasn1 import error tagClassUniversal = 0x00 tagClassApplication = 0x40 tagClassContext = 0x80 tagClassPrivate = 0xC0 tagFormatSimple = 0x00 tagFormatConstructed = 0x20 tagCategoryImplicit = 0x01 tagCategoryExplicit = 0x02 tagCategoryUntagged = 0x04 class Tag: def __init__(self, tagClass, tagFormat, tagId): if tagId < 0: raise error.PyAsn1Error( 'Negative tag ID (%s) not allowed' % tagId ) self.__tag = (tagClass, tagFormat, tagId) self.uniq = (tagClass, tagId) self.__hashedUniqTag = hash(self.uniq) def __repr__(self): return '%s(tagClass=%s, tagFormat=%s, tagId=%s)' % ( (self.__class__.__name__,) + self.__tag ) # These is really a hotspot -- expose public "uniq" attribute to save on # function calls def __cmp__(self, other): return cmp(self.uniq, other.uniq) def __eq__(self, other): return self.uniq == other.uniq def __ne__(self, other): return self.uniq != other.uniq def __hash__(self): return self.__hashedUniqTag def __getitem__(self, idx): return self.__tag[idx] def __and__(self, (tagClass, tagFormat, tagId)): return self.__class__( self.__tag&tagClass, self.__tag&tagFormat, self.__tag&tagId ) def __or__(self, (tagClass, tagFormat, tagId)): return self.__class__( self.__tag[0]|tagClass, self.__tag[1]|tagFormat, self.__tag[2]|tagId ) def asTuple(self): return self.__tag # __getitem__() is slow class TagSet: def __init__(self, baseTag=(), *superTags): self.__baseTag = baseTag self.__superTags = superTags self.__hashedSuperTags = hash(superTags) _uniq = () for t in superTags: _uniq = _uniq + t.uniq self.uniq = _uniq self.__lenOfSuperTags = len(superTags) def __repr__(self): return '%s(%s)' % ( self.__class__.__name__, join(map(lambda x: repr(x), self.__superTags), ', ') ) def __add__(self, superTag): return apply( self.__class__, (self.__baseTag,) + self.__superTags + (superTag,) ) def __radd__(self, superTag): return apply( self.__class__, (self.__baseTag, superTag) + self.__superTags ) def tagExplicitly(self, superTag): tagClass, tagFormat, tagId = superTag if tagClass == tagClassUniversal: raise error.PyAsn1Error( 'Can\'t tag with UNIVERSAL-class tag' ) if tagFormat != tagFormatConstructed: superTag = Tag(tagClass, tagFormatConstructed, tagId) return self + superTag def tagImplicitly(self, superTag): tagClass, tagFormat, tagId = superTag if self.__superTags: superTag = Tag(tagClass, self.__superTags[-1][1], tagId) return self[:-1] + superTag def getBaseTag(self): return self.__baseTag def __getitem__(self, idx): if type(idx) == SliceType: return apply(self.__class__, (self.__baseTag,) + getslice(self.__superTags, idx.start, idx.stop)) return self.__superTags[idx] def __cmp__(self, other): return cmp(self.uniq, other.uniq) def __eq__(self, other): return self.uniq == other.uniq def __ne__(self, other): return self.uniq != other.uniq def __hash__(self): return self.__hashedSuperTags def __len__(self): return self.__lenOfSuperTags def isSuperTagSetOf(self, tagSet): if len(tagSet) < self.__lenOfSuperTags: return idx = self.__lenOfSuperTags - 1 while idx >= 0: if self.__superTags[idx] != tagSet[idx]: return idx = idx - 1 return 1 def initTagSet(tag): return TagSet(tag, tag) PKǦs> = pyasn1/type/base.py# Base classes for ASN.1 types from operator import getslice, setslice, delslice from string import join from types import SliceType from pyasn1.type import constraint, tagmap from pyasn1 import error class Asn1Item: pass class Asn1ItemBase(Asn1Item): # Set of tags for this ASN.1 type tagSet = () # A list of constraint.Constraint instances for checking values subtypeSpec = constraint.ConstraintsIntersection() # Used for ambiguous ASN.1 types identification typeId = None def __init__(self, tagSet=None, subtypeSpec=None): if tagSet is None: self._tagSet = self.tagSet else: self._tagSet = tagSet if subtypeSpec is None: self._subtypeSpec = self.subtypeSpec else: self._subtypeSpec = subtypeSpec def _verifySubtypeSpec(self, value, idx=None): self._subtypeSpec(value, idx) def getSubtypeSpec(self): return self._subtypeSpec def getTagSet(self): return self._tagSet def getEffectiveTagSet(self): return self._tagSet # used by untagged types def getTagMap(self): return tagmap.TagMap({self._tagSet: self}) def isSameTypeWith(self, other): return self is other or \ self._tagSet == other.getTagSet() and \ self._subtypeSpec == other.getSubtypeSpec() def isSuperTypeOf(self, other): """Returns true if argument is a ASN1 subtype of ourselves""" return self._tagSet.isSuperTagSetOf(other.getTagSet()) and \ self._subtypeSpec.isSuperTypeOf(other.getSubtypeSpec()) class __NoValue: def __getattr__(self, attr): raise error.PyAsn1Error('No value for %s()' % attr) noValue = __NoValue() # Base class for "simple" ASN.1 objects. These are immutable. class AbstractSimpleAsn1Item(Asn1ItemBase): defaultValue = noValue def __init__(self, value=None, tagSet=None, subtypeSpec=None): Asn1ItemBase.__init__(self, tagSet, subtypeSpec) if value is None or value is noValue: value = self.defaultValue if value is None or value is noValue: self.__hashedValue = value = noValue else: value = self.prettyIn(value) self._verifySubtypeSpec(value) self.__hashedValue = hash(value) self._value = value self._len = None def __repr__(self): if self._value is noValue: return self.__class__.__name__ + '()' else: return self.__class__.__name__ + '(' + self.prettyOut(self._value) + ')' def __str__(self): return str(self._value) def __cmp__(self, value): return cmp(self._value, value) def __hash__(self): return self.__hashedValue def __nonzero__(self): return self._value and 1 or 0 def clone(self, value=None, tagSet=None, subtypeSpec=None): if value is None and tagSet is None and subtypeSpec is None: return self if value is None: value = self._value if tagSet is None: tagSet = self._tagSet if subtypeSpec is None: subtypeSpec = self._subtypeSpec return self.__class__(value, tagSet, subtypeSpec) def subtype(self, value=None, implicitTag=None, explicitTag=None, subtypeSpec=None): if value is None: value = self._value if implicitTag is not None: tagSet = self._tagSet.tagImplicitly(implicitTag) elif explicitTag is not None: tagSet = self._tagSet.tagExplicitly(explicitTag) else: tagSet = self._tagSet if subtypeSpec is None: subtypeSpec = self._subtypeSpec else: subtypeSpec = subtypeSpec + self._subtypeSpec return self.__class__(value, tagSet, subtypeSpec) def prettyIn(self, value): return value def prettyOut(self, value): return str(value) def prettyPrint(self, scope=0): return self.prettyOut(self._value) # XXX Compatibility stub def prettyPrinter(self, scope=0): return self.prettyPrint(scope) # # Constructed types: # * There are five of them: Sequence, SequenceOf/SetOf, Set and Choice # * ASN1 types and values are represened by Python class instances # * Value initialization is made for defaulted components only # * Primary method of component addressing is by-position. Data model for base # type is Python sequence. Additional type-specific addressing methods # may be implemented for particular types. # * SequenceOf and SetOf types do not implement any additional methods # * Sequence, Set and Choice types also implement by-identifier addressing # * Sequence, Set and Choice types also implement by-asn1-type (tag) addressing # * Sequence and Set types may include optional and defaulted # components # * Constructed types hold a reference to component types used for value # verification and ordering. # * Component type is a scalar type for SequenceOf/SetOf types and a list # of types for Sequence/Set/Choice. # class AbstractConstructedAsn1Item(Asn1ItemBase): componentType = None sizeSpec = constraint.ConstraintsIntersection() def __init__(self, componentType=None, tagSet=None, subtypeSpec=None, sizeSpec=None): Asn1ItemBase.__init__(self, tagSet, subtypeSpec) if componentType is None: self._componentType = self.componentType else: self._componentType = componentType if sizeSpec is None: self._sizeSpec = self.sizeSpec else: self._sizeSpec = sizeSpec self._componentValues = [] self._componentValuesSet = 0 def __repr__(self): r = self.__class__.__name__ + '()' for idx in range(len(self._componentValues)): if self._componentValues[idx] is None: continue r = r + '.setComponentByPosition(%s, %s)' % ( idx, repr(self._componentValues[idx]) ) return r def __cmp__(self, other): return cmp(self._componentValues, other) def getComponentTagMap(self): raise error.PyAsn1Error('Method not implemented') def _cloneComponentValues(self, myClone, cloneValueFlag): pass def clone(self, tagSet=None, subtypeSpec=None, sizeSpec=None, cloneValueFlag=None): if tagSet is None: tagSet = self._tagSet if subtypeSpec is None: subtypeSpec = self._subtypeSpec if sizeSpec is None: sizeSpec = self._sizeSpec r = self.__class__(self._componentType, tagSet, subtypeSpec, sizeSpec) if cloneValueFlag: self._cloneComponentValues(r, cloneValueFlag) return r def subtype(self, implicitTag=None, explicitTag=None, subtypeSpec=None, sizeSpec=None, cloneValueFlag=None): if implicitTag is not None: tagSet = self._tagSet.tagImplicitly(implicitTag) elif explicitTag is not None: tagSet = self._tagSet.tagExplicitly(explicitTag) else: tagSet = self._tagSet if subtypeSpec is None: subtypeSpec = self._subtypeSpec else: subtypeSpec = subtypeSpec + self._subtypeSpec if sizeSpec is None: sizeSpec = self._sizeSpec else: sizeSpec = sizeSpec + self._sizeSpec r = self.__class__(self._componentType, tagSet, subtypeSpec, sizeSpec) if cloneValueFlag: self._cloneComponentValues(r, cloneValueFlag) return r def _verifyComponent(self, idx, value): pass def verifySizeSpec(self): self._sizeSpec(self) def getComponentByPosition(self, idx): raise error.PyAsn1Error('Method not implemented') def setComponentByPosition(self, idx, value, verifyConstraints=True): raise error.PyAsn1Error('Method not implemented') def getComponentType(self): return self._componentType def __getitem__(self, idx): return self.getComponentByPosition(idx) def __setitem__(self, idx, value): self.setComponentByPosition(idx, value) def __len__(self): return len(self._componentValues) def clear(self): self._componentValues = [] self._componentValuesSet = 0 def setDefaultComponents(self): pass PK >QBapppyasn1/type/univ.py# ASN.1 "universal" data types import string import types import operator from pyasn1.type import base, tag, constraint, namedtype, namedval, tagmap from pyasn1.codec.ber import eoo from pyasn1 import error # "Simple" ASN.1 types (yet incomplete) class Integer(base.AbstractSimpleAsn1Item): tagSet = baseTagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 0x02) ) namedValues = namedval.NamedValues() def __init__(self, value=None, tagSet=None, subtypeSpec=None, namedValues=None): if namedValues is None: self.__namedValues = self.namedValues else: self.__namedValues = namedValues base.AbstractSimpleAsn1Item.__init__( self, value, tagSet, subtypeSpec ) def __and__(self, value): return self.clone(self._value & value) def __rand__(self, value): return self.clone(value & self._value) def __or__(self, value): return self.clone(self._value | value) def __ror__(self, value): return self.clone(value | self._value) def __xor__(self, value): return self.clone(self._value ^ value) def __rxor__(self, value): return self.clone(value ^ self._value) def __lshift__(self, value): return self.clone(self._value << value) def __rshift__(self, value): return self.clone(self._value >> value) def __add__(self, value): return self.clone(self._value + value) def __radd__(self, value): return self.clone(value + self._value) def __sub__(self, value): return self.clone(self._value - value) def __rsub__(self, value): return self.clone(value - self._value) def __mul__(self, value): return self.clone(self._value * value) def __rmul__(self, value): return self.clone(value * self._value) def __div__(self, value): return self.clone(self._value / value) def __rdiv__(self, value): return self.clone(value / self._value) def __mod__(self, value): return self.clone(self._value % value) def __rmod__(self, value): return self.clone(value % self._value) def __pow__(self, value, modulo=None): return self.clone(pow(self._value, value, modulo)) def __rpow__(self, value): return self.clone(pow(value, self._value)) def __int__(self): return int(self._value) def __long__(self): return long(self._value) def __float__(self): return float(self._value) def __abs__(self): return abs(self._value) def __index__(self): return int(self._value) def __lt__(self, value): return self._value < value def __le__(self, value): return self._value <= value def __eq__(self, value): return self._value == value def __ne__(self, value): return self._value != value def __gt__(self, value): return self._value > value def __ge__(self, value): return self._value >= value def prettyIn(self, value): if type(value) != types.StringType: return long(value) r = self.__namedValues.getValue(value) if r is not None: return r try: return string.atoi(value) except: try: return string.atol(value) except: raise error.PyAsn1Error( 'Can\'t coerce %s into integer' % value ) def prettyOut(self, value): r = self.__namedValues.getName(value) if r is not None: return '%s(%s)' % (r, value) else: return str(value) def getNamedValues(self): return self.__namedValues def clone(self, value=None, tagSet=None, subtypeSpec=None, namedValues=None): if value is None and tagSet is None and subtypeSpec is None \ and namedValues is None: return self if value is None: value = self._value if tagSet is None: tagSet = self._tagSet if subtypeSpec is None: subtypeSpec = self._subtypeSpec if namedValues is None: namedValues = self.__namedValues return self.__class__(value, tagSet, subtypeSpec, namedValues) def subtype(self, value=None, implicitTag=None, explicitTag=None, subtypeSpec=None, namedValues=None): if value is None: value = self._value if implicitTag is not None: tagSet = self._tagSet.tagImplicitly(implicitTag) elif explicitTag is not None: tagSet = self._tagSet.tagExplicitly(explicitTag) else: tagSet = self._tagSet if subtypeSpec is None: subtypeSpec = self._subtypeSpec else: subtypeSpec = subtypeSpec + self._subtypeSpec if namedValues is None: namedValues = self.__namedValues else: namedValues = namedValues + self.__namedValues return self.__class__(value, tagSet, subtypeSpec, namedValues) class Boolean(Integer): tagSet = baseTagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 0x01), ) subtypeSpec = Integer.subtypeSpec+constraint.SingleValueConstraint(0,1) namedValues = Integer.namedValues.clone(('False', 0), ('True', 1)) class BitString(base.AbstractSimpleAsn1Item): tagSet = baseTagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 0x03) ) namedValues = namedval.NamedValues() def __init__(self, value=None, tagSet=None, subtypeSpec=None, namedValues=None): if namedValues is None: self.__namedValues = self.namedValues else: self.__namedValues = namedValues base.AbstractSimpleAsn1Item.__init__( self, value, tagSet, subtypeSpec ) def clone(self, value=None, tagSet=None, subtypeSpec=None, namedValues=None): if value is None and tagSet is None and subtypeSpec is None \ and namedValues is None: return self if value is None: value = self._value if tagSet is None: tagSet = self._tagSet if subtypeSpec is None: subtypeSpec = self._subtypeSpec if namedValues is None: namedValues = self.__namedValues return self.__class__(value, tagSet, subtypeSpec, namedValues) def subtype(self, value=None, implicitTag=None, explicitTag=None, subtypeSpec=None, namedValues=None): if value is None: value = self._value if implicitTag is not None: tagSet = self._tagSet.tagImplicitly(implicitTag) elif explicitTag is not None: tagSet = self._tagSet.tagExplicitly(explicitTag) else: tagSet = self._tagSet if subtypeSpec is None: subtypeSpec = self._subtypeSpec else: subtypeSpec = subtypeSpec + self._subtypeSpec if namedValues is None: namedValues = self.__namedValues else: namedValues = namedValues + self.__namedValues return self.__class__(value, tagSet, subtypeSpec, namedValues) def __str__(self): return str(tuple(self)) # Immutable sequence object protocol def __len__(self): if self._len is None: self._len = len(self._value) return self._len def __getitem__(self, i): if type(i) == types.SliceType: return self.clone(operator.getslice(self._value, i.start, i.stop)) else: return self._value[i] def __add__(self, value): return self.clone(self._value + value) def __radd__(self, value): return self.clone(value + self._value) def __mul__(self, value): return self.clone(self._value * value) def __rmul__(self, value): return self * value def prettyIn(self, value): r = [] if not value: return () elif type(value) == types.StringType: if value[0] == '\'': if value[-2:] == '\'B': for v in value[1:-2]: if v == '0': r.append(0) elif v == '1': r.append(1) else: raise error.PyAsn1Error( 'Non-binary BIT STRING initializer %s' % (v,) ) return tuple(r) elif value[-2:] == '\'H': for v in value[1:-2]: i = 4 v = string.atoi(v, 16) while i: i = i - 1 r.append((v>>i)&0x01) return tuple(r) else: raise error.PyAsn1Error( 'Bad BIT STRING value notation %s' % value ) else: for i in string.split(value, ','): j = self.__namedValues.getValue(i) if j is None: raise error.PyAsn1Error( 'Unknown bit identifier \'%s\'' % i ) if j >= len(r): r.extend([0]*(j-len(r)+1)) r[j] = 1 return tuple(r) elif type(value) == types.TupleType or type(value) == types.ListType: r = tuple(value) for b in r: if b and b != 1: raise error.PyAsn1Error( 'Non-binary BitString initializer \'%s\'' % (r,) ) return r elif isinstance(value, BitString): return tuple(value) else: raise error.PyAsn1Error( 'Bad BitString initializer type \'%s\'' % (value,) ) def prettyOut(self, value): return '\"\'%s\'B\"' % string.join(map(str, value), '') class OctetString(base.AbstractSimpleAsn1Item): tagSet = baseTagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 0x04) ) def prettyOut(self, value): return repr(value) def prettyIn(self, value): if type(value) == types.StringType: return value else: return str(value) def purePrettyIn(self, value): if type(value) != types.StringType: return str(value) elif not value: return value elif value[0] == '\'': r = '' if value[-2:] == '\'B': bitNo = 8; byte = 0 for v in value[1:-2]: if bitNo: bitNo = bitNo - 1 else: bitNo = 7 r = r + chr(byte) byte = 0 if v == '0': v = 0 elif v == '1': v = 1 else: raise error.PyAsn1Error( 'Non-binary OCTET STRING initializer %s' % (v,) ) byte = byte | (v << bitNo) r = r + chr(byte) elif value[-2:] == '\'H': p = '' for v in value[1:-2]: if p: r = r + chr(string.atoi(p+v, 16)) p = '' else: p = v if p: r = r + chr(string.atoi(p+'0', 16)) else: raise error.PyAsn1Error( 'Bad OCTET STRING value notation %s' % value ) return r else: return value # Immutable sequence object protocol def __len__(self): if self._len is None: self._len = len(self._value) return self._len def __getitem__(self, i): if type(i) == types.SliceType: return self.clone(operator.getslice(self._value, i.start, i.stop)) else: return self._value[i] def __add__(self, value): return self.clone(self._value + value) def __radd__(self, value): return self.clone(value + self._value) def __mul__(self, value): return self.clone(self._value * value) def __rmul__(self, value): return self * value class Null(OctetString): defaultValue = '' # This is tightly constrained tagSet = baseTagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 0x05) ) subtypeSpec = OctetString.subtypeSpec+constraint.SingleValueConstraint('') class ObjectIdentifier(base.AbstractSimpleAsn1Item): tagSet = baseTagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 0x06) ) def __add__(self, other): return self.clone(self._value + other) def __radd__(self, other): return self.clone(other + self._value) def asTuple(self): return self._value # Sequence object protocol def __len__(self): if self._len is None: self._len = len(self._value) return self._len def __getitem__(self, i): if type(i) == types.SliceType: return self.clone( operator.getslice(self._value, i.start, i.stop) ) else: return self._value[i] def index(self, suboid): return self._value.index(suboid) def isPrefixOf(self, value): """Returns true if argument OID resides deeper in the OID tree""" l = len(self) if l <= len(value): if self._value[:l] == value[:l]: return 1 return 0 def prettyIn(self, value): """Dotted -> tuple of numerics OID converter""" if type(value) is types.TupleType: pass elif isinstance(value, ObjectIdentifier): return tuple(value) elif type(value) is types.StringType: r = [] for element in filter(None, string.split(value, '.')): try: r.append(string.atoi(element, 0)) except string.atoi_error: try: r.append(string.atol(element, 0)) except string.atol_error, why: raise error.PyAsn1Error( 'Malformed Object ID %s at %s: %s' % (str(value), self.__class__.__name__, why) ) value = tuple(r) pass else: value = tuple(value) for x in value: if x < 0: raise error.PyAsn1Error( 'Negative sub-ID in %s at %s' % (value, self.__class__.__name__) ) return value def prettyOut(self, value): """Tuple of numerics -> dotted string OID converter""" r = [] for subOid in value: r.append(str(subOid)) if r[-1] and r[-1][-1] == 'L': r[-1][-1] = r[-1][:-1] return string.join(r, '.') class Real(base.AbstractSimpleAsn1Item): _plusInf = float('inf') _minusInf = float('-inf') _inf = (_plusInf, _minusInf) tagSet = baseTagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 0x09) ) def __normalizeBase10(self, value): m, b, e = value while m and m % 10 == 0: m = m / 10 e = e + 1 return m, b, e def prettyIn(self, value): if type(value) == types.TupleType and len(value) == 3: for d in value: if type(d) not in (types.IntType, types.LongType): raise error.PyAsn1Error( 'Lame Real value syntax: %s' % (value,) ) if value[1] not in (2, 10): raise error.PyAsn1Error( 'Prohibited base for Real value: %s' % value[1] ) if value[1] == 10: value = self.__normalizeBase10(value) return value elif type(value) in (types.IntType, types.LongType): return self.__normalizeBase10((value, 10, 0)) elif type(value) == types.FloatType: if value in self._inf: return value else: e = 0 while long(value) != value: value = value * 10 e = e - 1 return self.__normalizeBase10((long(value), 10, e)) elif isinstance(value, Real): return tuple(value) elif type(value) == types.StringType: # handle infinite literal try: inf = float(value) except ValueError: pass else: if inf in self._inf: return inf raise error.PyAsn1Error( 'Bad real value syntax: %s' % (value,) ) def prettyOut(self, value): if value in self._inf: return '\'%s\'' % value else: return str(value) def isPlusInfinity(self): return self._value == self._plusInf def isMinusInfinity(self): return self._value == self._minusInf def isInfinity(self): return self._value in self._inf def __str__(self): return str(float(self)) def __add__(self, value): return self.clone(float(self) + value) def __radd__(self, value): return self + value def __mul__(self, value): return self.clone(float(self) * value) def __rmul__(self, value): return self * value def __sub__(self, value): return self.clone(float(self) - value) def __rsub__(self, value): return self.clone(value - float(self)) def __div__(self, value): return self.clone(float(self) / value) def __rdiv__(self, value): return self.clone(value / float(self)) def __mod__(self, value): return self.clone(float(self) % value) def __rmod__(self, value): return self.clone(value % float(self)) def __pow__(self, value, modulo=None): return self.clone(pow(float(self), value, modulo)) def __rpow__(self, value): return self.clone(pow(value, float(self))) def __int__(self): return int(float(self)) def __long__(self): return long(float(self)) def __float__(self): if self._value in self._inf: return self._value else: return float( self._value[0] * pow(self._value[1], self._value[2]) ) def __abs__(self): return abs(float(self)) def __lt__(self, value): return float(self) < value def __le__(self, value): return float(self) <= value def __eq__(self, value): return float(self) == value def __ne__(self, value): return float(self) != value def __gt__(self, value): return float(self) > value def __ge__(self, value): return float(self) >= value def __nonzero__(self): return float(self) and 1 or 0 def __getitem__(self, idx): if self._value in self._inf: raise error.PyAsn1Error('Invalid infinite value operation') else: return self._value[idx] class Enumerated(Integer): tagSet = baseTagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 0x0A) ) # "Structured" ASN.1 types class SetOf(base.AbstractConstructedAsn1Item): componentType = None tagSet = baseTagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatConstructed, 0x11) ) typeId = 1 def _cloneComponentValues(self, myClone, cloneValueFlag): idx = 0; l = len(self._componentValues) while idx < l: c = self._componentValues[idx] if c is not None: if isinstance(c, base.AbstractConstructedAsn1Item): myClone.setComponentByPosition( idx, c.clone(cloneValueFlag=cloneValueFlag) ) else: myClone.setComponentByPosition(idx, c.clone()) idx = idx + 1 def _verifyComponent(self, idx, value): if self._componentType is not None and \ not self._componentType.isSuperTypeOf(value): raise error.PyAsn1Error('Component type error %s' % value) def getComponentByPosition(self, idx): return self._componentValues[idx] def setComponentByPosition(self, idx, value=None, verifyConstraints=True): l = len(self._componentValues) if idx >= l: self._componentValues = self._componentValues + (idx-l+1)*[None] if value is None: if self._componentValues[idx] is None: if self._componentType is None: raise error.PyAsn1Error('Component type not defined') self._componentValues[idx] = self._componentType.clone() self._componentValuesSet = self._componentValuesSet + 1 return self elif type(value) != types.InstanceType: if self._componentType is None: raise error.PyAsn1Error('Component type not defined') if isinstance(self._componentType, base.AbstractSimpleAsn1Item): value = self._componentType.clone(value=value) else: raise error.PyAsn1Error('Instance value required') if verifyConstraints: if self._componentType is not None: self._verifyComponent(idx, value) self._verifySubtypeSpec(value, idx) if self._componentValues[idx] is None: self._componentValuesSet = self._componentValuesSet + 1 self._componentValues[idx] = value return self def getComponentTagMap(self): if self._componentType is not None: return self._componentType.getTagMap() def prettyPrint(self, scope=0): scope = scope + 1 r = self.__class__.__name__ + ':\n' for idx in range(len(self._componentValues)): r = r + ' '*scope if self._componentValues[idx] is None: r = r + '' else: r = r + self._componentValues[idx].prettyPrint(scope) return r class SequenceOf(SetOf): tagSet = baseTagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatConstructed, 0x10) ) typeId = 2 class SequenceAndSetBase(base.AbstractConstructedAsn1Item): componentType = namedtype.NamedTypes() def __init__(self, componentType=None, tagSet=None, subtypeSpec=None, sizeSpec=None): base.AbstractConstructedAsn1Item.__init__( self, componentType, tagSet, subtypeSpec, sizeSpec ) if self._componentType is None: self._componentTypeLen = 0 else: self._componentTypeLen = len(self._componentType) def __getitem__(self, idx): if type(idx) == types.StringType: return self.getComponentByName(idx) else: return base.AbstractConstructedAsn1Item.__getitem__(self, idx) def __setitem__(self, idx, value): if type(idx) == types.StringType: self.setComponentByName(idx, value) else: base.AbstractConstructedAsn1Item.__setitem__(self, idx, value) def _cloneComponentValues(self, myClone, cloneValueFlag): idx = 0; l = len(self._componentValues) while idx < l: c = self._componentValues[idx] if c is not None: if isinstance(c, base.AbstractConstructedAsn1Item): myClone.setComponentByPosition( idx, c.clone(cloneValueFlag=cloneValueFlag) ) else: myClone.setComponentByPosition(idx, c.clone()) idx = idx + 1 def _verifyComponent(self, idx, value): if idx >= self._componentTypeLen: raise error.PyAsn1Error( 'Component type error out of range' ) t = self._componentType[idx].getType() if not t.isSuperTypeOf(value): raise error.PyAsn1Error('Component type error %s vs %s' % (repr(t), repr(value))) def getComponentByName(self, name): return self.getComponentByPosition( self._componentType.getPositionByName(name) ) def setComponentByName(self, name, value=None, verifyConstraints=True): return self.setComponentByPosition( self._componentType.getPositionByName(name), value, verifyConstraints ) def getComponentByPosition(self, idx): try: return self._componentValues[idx] except IndexError: if idx < self._componentTypeLen: return raise def setComponentByPosition(self, idx, value=None, verifyConstraints=True): l = len(self._componentValues) if idx >= l: self._componentValues = self._componentValues + (idx-l+1)*[None] if value is None: if self._componentValues[idx] is None: self._componentValues[idx] = self._componentType.getTypeByPosition(idx).clone() self._componentValuesSet = self._componentValuesSet + 1 return self elif type(value) != types.InstanceType: t = self._componentType.getTypeByPosition(idx) if isinstance(t, base.AbstractSimpleAsn1Item): value = t.clone(value=value) else: raise error.PyAsn1Error('Instance value required') if verifyConstraints: if self._componentTypeLen: self._verifyComponent(idx, value) self._verifySubtypeSpec(value, idx) if self._componentValues[idx] is None: self._componentValuesSet = self._componentValuesSet + 1 self._componentValues[idx] = value return self def getNameByPosition(self, idx): if self._componentTypeLen: return self._componentType.getNameByPosition(idx) def getDefaultComponentByPosition(self, idx): if self._componentTypeLen and self._componentType[idx].isDefaulted: return self._componentType[idx].getType() def getComponentType(self): if self._componentTypeLen: return self._componentType def setDefaultComponents(self): if self._componentTypeLen == self._componentValuesSet: return idx = self._componentTypeLen while idx: idx = idx - 1 if self._componentType[idx].isDefaulted: if self.getComponentByPosition(idx) is None: self.setComponentByPosition(idx) elif not self._componentType[idx].isOptional: if self.getComponentByPosition(idx) is None: raise error.PyAsn1Error( 'Uninitialized component #%s at %s' % (idx, repr(self)) ) def prettyPrint(self, scope=0): scope = scope + 1 r = self.__class__.__name__ + ':\n' for idx in range(len(self._componentValues)): if self._componentValues[idx] is not None: r = r + ' '*scope componentType = self.getComponentType() if componentType is None: r = r + '' else: r = r + componentType.getNameByPosition(idx) r = '%s=%s\n' % ( r, self._componentValues[idx].prettyPrint(scope) ) return r class Sequence(SequenceAndSetBase): tagSet = baseTagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatConstructed, 0x10) ) typeId = 3 def getComponentTagMapNearPosition(self, idx): if self._componentType: return self._componentType.getTagMapNearPosition(idx) def getComponentPositionNearType(self, tagSet, idx): if self._componentType: return self._componentType.getPositionNearType(tagSet, idx) else: return idx class Set(SequenceAndSetBase): tagSet = baseTagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatConstructed, 0x11) ) typeId = 4 def getComponent(self, innerFlag=0): return self def getComponentByType(self, tagSet, innerFlag=0): c = self.getComponentByPosition( self._componentType.getPositionByType(tagSet) ) if innerFlag and isinstance(c, Set): # get inner component by inner tagSet return c.getComponent(1) else: # get outer component by inner tagSet return c def setComponentByType(self, tagSet, value=None, innerFlag=0, verifyConstraints=True): idx = self._componentType.getPositionByType(tagSet) t = self._componentType.getTypeByPosition(idx) if innerFlag: # set inner component by inner tagSet if t.getTagSet(): return self.setComponentByPosition( idx, value, verifyConstraints ) else: t = self.setComponentByPosition(idx).getComponentByPosition(idx) return t.setComponentByType( tagSet, value, innerFlag, verifyConstraints ) else: # set outer component by inner tagSet return self.setComponentByPosition( idx, value, verifyConstraints ) def getComponentTagMap(self): if self._componentType: return self._componentType.getTagMap(True) def getComponentPositionByType(self, tagSet): if self._componentType: return self._componentType.getPositionByType(tagSet) class Choice(Set): tagSet = baseTagSet = tag.TagSet() # untagged sizeSpec = constraint.ConstraintsIntersection( constraint.ValueSizeConstraint(1, 1) ) typeId = 5 _currentIdx = None def __cmp__(self, other): if self._componentValues: return cmp(self._componentValues[self._currentIdx], other) return -1 def __len__(self): return self._currentIdx is not None and 1 or 0 def verifySizeSpec(self): if self._currentIdx is None: raise error.PyAsn1Error('Component not chosen') else: self._sizeSpec(' ') def _cloneComponentValues(self, myClone, cloneValueFlag): try: c = self.getComponent() except error.PyAsn1Error: pass else: if isinstance(c, Choice): tagSet = c.getEffectiveTagSet() else: tagSet = c.getTagSet() if isinstance(c, base.AbstractConstructedAsn1Item): myClone.setComponentByType( tagSet, c.clone(cloneValueFlag=cloneValueFlag) ) else: myClone.setComponentByType(tagSet, c.clone()) def setComponentByPosition(self, idx, value=None, verifyConstraints=True): l = len(self._componentValues) if idx >= l: self._componentValues = self._componentValues + (idx-l+1)*[None] if self._currentIdx is not None: self._componentValues[self._currentIdx] = None if value is None: if self._componentValues[idx] is None: self._componentValues[idx] = self._componentType.getTypeByPosition(idx).clone() self._componentValuesSet = 1 self._currentIdx = idx return self elif type(value) != types.InstanceType: value = self._componentType.getTypeByPosition(idx).clone( value=value ) if verifyConstraints: if self._componentTypeLen: self._verifyComponent(idx, value) self._verifySubtypeSpec(value, idx) self._componentValues[idx] = value self._currentIdx = idx self._componentValuesSet = 1 return self def getMinTagSet(self): if self._tagSet: return self._tagSet else: return self._componentType.genMinTagSet() def getEffectiveTagSet(self): if self._tagSet: return self._tagSet else: c = self.getComponent() if isinstance(c, Choice): return c.getEffectiveTagSet() else: return c.getTagSet() def getTagMap(self): if self._tagSet: return Set.getTagMap(self) else: return Set.getComponentTagMap(self) def getComponent(self, innerFlag=0): if self._currentIdx is None: raise error.PyAsn1Error('Component not chosen') else: c = self._componentValues[self._currentIdx] if innerFlag and isinstance(c, Choice): return c.getComponent(innerFlag) else: return c def getName(self, innerFlag=0): if self._currentIdx is None: raise error.PyAsn1Error('Component not chosen') else: if innerFlag: c = self._componentValues[self._currentIdx] if isinstance(c, Choice): return c.getName(innerFlag) return self._componentType.getNameByPosition(self._currentIdx) def setDefaultComponents(self): pass class Any(OctetString): tagSet = baseTagSet = tag.TagSet() # untagged typeId = 6 def getTagMap(self): return tagmap.TagMap( { self.getTagSet(): self }, { eoo.endOfOctets.getTagSet(): eoo.endOfOctets }, self ) # XXX # coercion rules? PKh|>- - pyasn1/type/namedval.pyc; ~n  pyasn1/type/useful.pyc; Mc@sIdklZlZdeifdYZdeifdYZdS((scharstagsGeneralizedTimecBs2tZeiiieieiei dZRS(Ni( s__name__s __module__schars VisibleStringstagSets tagImplicitlystagsTagstagClassUniversalstagFormatSimple(((s0build/bdist.linux-i686/egg/pyasn1/type/useful.pysGeneralizedTimessUTCTimecBs2tZeiiieieiei dZRS(Ni( s__name__s __module__schars VisibleStringstagSets tagImplicitlystagsTagstagClassUniversalstagFormatSimple(((s0build/bdist.linux-i686/egg/pyasn1/type/useful.pysUTCTime sN(s pyasn1.typescharstags VisibleStringsGeneralizedTimesUTCTime(scharsUTCTimestagsGeneralizedTime((s0build/bdist.linux-i686/egg/pyasn1/type/useful.pys?sPKh|>`pyasn1/type/__init__.pyc; Mc@sdS(N((((s2build/bdist.linux-i686/egg/pyasn1/type/__init__.pys?sPKh|>+ ""pyasn1/type/namedtype.pyc; ^Mc@spdklZdklZdfdYZdefdYZdefdYZdfd YZd S( (stagmap(serrors NamedTypecBsAtZdZdZdZdZdZdZdZRS(NicCs||_||_dS(N(snamesselfs_NamedType__namests_NamedType__type(sselfsnamest((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pys__init__scCs-d|iit|it|ifSdS(Ns %s(%s, %s)(sselfs __class__s__name__sreprs_NamedType__names_NamedType__type(sself((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pys__repr__ scCs |iSdS(N(sselfs_NamedType__type(sself((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pysgetType scCs |iSdS(N(sselfs_NamedType__name(sself((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pysgetNamescCs=|djo |iSn|djo |iSntdS(Nii(sidxsselfs_NamedType__names_NamedType__types IndexError(sselfsidx((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pys __getitem__s   ( s__name__s __module__s isOptionals isDefaulteds__init__s__repr__sgetTypesgetNames __getitem__(((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pys NamedTypes    sOptionalNamedTypecBstZdZRS(Ni(s__name__s __module__s isOptional(((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pysOptionalNamedTypessDefaultedNamedTypecBstZdZRS(Ni(s__name__s __module__s isDefaulted(((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pysDefaultedNamedTypess NamedTypescBstZdZdZdZdZdZdZdZdZ d Z d Z d Z d Z d ZedZRS(NcGs^||_t|i|_t|_h|_h|_ht t<t t<|_ h|_ dS(N( s namedTypessselfs_NamedTypes__namedTypesslens_NamedTypes__namedTypesLensNones_NamedTypes__minTagSets_NamedTypes__tagToPosIdxs_NamedTypes__nameToPosIdxsFalsesTrues_NamedTypes__tagMaps_NamedTypes__ambigiousTypes(sselfs namedTypes((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pys__init__s   cCsDd|ii}x%|iD]}|dt|}qW|dSdS(Ns%s(s%s, s)(sselfs __class__s__name__srs_NamedTypes__namedTypessnsrepr(sselfsrsn((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pys__repr__"s  cCs|i|SdS(N(sselfs_NamedTypes__namedTypessidx(sselfsidx((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pys __getitem__(scCs|iodpdSdS(Nii(sselfs_NamedTypes__namedTypesLen(sself((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pys __nonzero__*scCs |iSdS(N(sselfs_NamedTypes__namedTypesLen(sself((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pys__len__+scCsE|djp ||ijotidn|i|iSdS(NisType position out of range(sidxsselfs_NamedTypes__namedTypesLenserrors PyAsn1Errors_NamedTypes__namedTypessgetType(sselfsidx((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pysgetTypeByPosition-scCs|i o|i}x|djox|d}|i|ii}xN|ii D]:}||ijot i d|n||i|y|i|iSWn"tj otidnXdS(NsType position out of range(sselfs_NamedTypes__namedTypessidxsgetNames IndexErrorserrors PyAsn1Error(sselfsidx((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pysgetNameByPositionBscCs|i os|i}xg|djoU|d}|i|i}||ijotid|n||i|(pyasn1/type/error.pyc; Mc@s'dklZdefdYZdS((s PyAsn1ErrorsValueConstraintErrorcBstZRS(N(s__name__s __module__(((s/build/bdist.linux-i686/egg/pyasn1/type/error.pysValueConstraintErrorsN(s pyasn1.errors PyAsn1ErrorsValueConstraintError(s PyAsn1ErrorsValueConstraintError((s/build/bdist.linux-i686/egg/pyasn1/type/error.pys?s PKh|>?|pyasn1/type/univ.pyc; Mc@sdkZdkZdkZdklZlZlZlZlZl Z dk l Z dk l Z deifdYZdefdYZdeifd YZd eifd YZd efd YZdeifdYZdeifdYZdefdYZdeifdYZdefdYZdeifdYZdefdYZdefdYZdefdYZd efd!YZdS("N(sbasestags constraints namedtypesnamedvalstagmap(seoo(serrorsIntegercBstZeieieieidZZe i Z e e e e dZ dZdZdZdZdZdZd Zd Zd Zd Zd ZdZdZdZdZdZdZdZe dZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*d Z+d!Z,d"Z-d#Z.d$Z/e e e e d%Z0e e e e e d&Z1RS('NicCsC|tjo|i|_n ||_tii||||dS(N( s namedValuessNonesselfs_Integer__namedValuessbasesAbstractSimpleAsn1Items__init__svaluestagSets subtypeSpec(sselfsvaluestagSets subtypeSpecs namedValues((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__init__s  cCs|i|i|@SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__and__scCs|i||i@SdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rand__scCs|i|i|BSdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__or__scCs|i||iBSdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__ror__scCs|i|i|ASdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__xor__scCs|i||iASdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rxor__scCs|i|i|>SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __lshift__ scCs|i|i|?SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __rshift__!scCs|i|i|SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__add__#scCs|i||iSdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__radd__$scCs|i|i|SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__sub__%scCs|i||iSdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rsub__&scCs|i|i|SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__mul__'scCs|i||iSdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rmul__(scCs|i|i|SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__div__)scCs|i||iSdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rdiv__*scCs|i|i|SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__mod__+scCs|i||iSdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rmod__,scCs |it|i||SdS(N(sselfsclonespows_valuesvaluesmodulo(sselfsvaluesmodulo((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__pow__-scCs|it||iSdS(N(sselfsclonespowsvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rpow__.scCst|iSdS(N(sintsselfs_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__int__0scCst|iSdS(N(slongsselfs_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__long__1scCst|iSdS(N(sfloatsselfs_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __float__2scCst|iSdS(N(sabssselfs_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__abs__3scCst|iSdS(N(sintsselfs_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __index__4scCs|i|jSdS(N(sselfs_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__lt__6scCs|i|jSdS(N(sselfs_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__le__7scCs|i|jSdS(N(sselfs_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__eq__8scCs|i|jSdS(N(sselfs_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__ne__9scCs|i|jSdS(N(sselfs_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__gt__:scCs|i|jSdS(N(sselfs_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__ge__;scCst|tijot|Sn|ii|}|t j o|Snyt i |SWn5yt i |SWqt id|qXnXdS(NsCan't coerce %s into integer(stypesvaluestypess StringTypeslongsselfs_Integer__namedValuessgetValuesrsNonesstringsatoisatolserrors PyAsn1Error(sselfsvaluesr((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysprettyIn=s cCs?|ii|}|tj od||fSn t|SdS(Ns%s(%s)(sselfs_Integer__namedValuessgetNamesvaluesrsNonesstr(sselfsvaluesr((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys prettyOutMs cCs |iSdS(N(sselfs_Integer__namedValues(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetNamedValuesTscCs|tjo$|tjo|tjo |tjo|Sn|tjo |i}n|tjo |i}n|tjo |i}n|tjo |i }n|i ||||SdS(N( svaluesNonestagSets subtypeSpecs namedValuessselfs_values_tagSets _subtypeSpecs_Integer__namedValuess __class__(sselfsvaluestagSets subtypeSpecs namedValues((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pyscloneVs4        cCs|tjo |i}n|tj o|ii|}n-|tj o|ii |}n |i}|tjo |i }n||i }|tjo |i }n||i }|i||||SdS(N(svaluesNonesselfs_values implicitTags_tagSets tagImplicitlystagSets explicitTags tagExplicitlys subtypeSpecs _subtypeSpecs namedValuess_Integer__namedValuess __class__(sselfsvalues implicitTags explicitTags subtypeSpecs namedValuesstagSet((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pyssubtypees           (2s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatSimplestagSets baseTagSetsnamedvals NamedValuess namedValuessNones__init__s__and__s__rand__s__or__s__ror__s__xor__s__rxor__s __lshift__s __rshift__s__add__s__radd__s__sub__s__rsub__s__mul__s__rmul__s__div__s__rdiv__s__mod__s__rmod__s__pow__s__rpow__s__int__s__long__s __float__s__abs__s __index__s__lt__s__le__s__eq__s__ne__s__gt__s__ge__sprettyIns prettyOutsgetNamedValuessclonessubtype(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysInteger sN(                                   sBooleancBsjtZeieieieidZZe i e i ddZ e i iddfddfZ RS(NiisFalsesTrue(s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatSimplestagSets baseTagSetsIntegers subtypeSpecs constraintsSingleValueConstraints namedValuessclone(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysBooleanys(s BitStringcBstZeieieieidZZe i Z e e e e dZ e e e e dZe e e e e dZdZdZdZdZd Zd Zd Zd Zd ZRS(NicCsC|tjo|i|_n ||_tii||||dS(N( s namedValuessNonesselfs_BitString__namedValuessbasesAbstractSimpleAsn1Items__init__svaluestagSets subtypeSpec(sselfsvaluestagSets subtypeSpecs namedValues((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__init__s  cCs|tjo$|tjo|tjo |tjo|Sn|tjo |i}n|tjo |i}n|tjo |i}n|tjo |i }n|i ||||SdS(N( svaluesNonestagSets subtypeSpecs namedValuessselfs_values_tagSets _subtypeSpecs_BitString__namedValuess __class__(sselfsvaluestagSets subtypeSpecs namedValues((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysclones4        cCs|tjo |i}n|tj o|ii|}n-|tj o|ii |}n |i}|tjo |i }n||i }|tjo |i }n||i }|i||||SdS(N(svaluesNonesselfs_values implicitTags_tagSets tagImplicitlystagSets explicitTags tagExplicitlys subtypeSpecs _subtypeSpecs namedValuess_BitString__namedValuess __class__(sselfsvalues implicitTags explicitTags subtypeSpecs namedValuesstagSet((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pyssubtypes           cCstt|SdS(N(sstrstuplesself(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__str__scCs1|itjot|i|_n|iSdS(N(sselfs_lensNoneslens_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__len__scCsNt|tijo)|iti|i|i |i Sn |i|SdS(N( stypesistypess SliceTypesselfsclonesoperatorsgetslices_valuesstartsstop(sselfsi((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __getitem__s)cCs|i|i|SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__add__scCs|i||iSdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__radd__scCs|i|i|SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__mul__scCs ||SdS(N(sselfsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rmul__scCsg}| ofSnt|tijo|ddjo|ddjoxxg|dd!D]X}|djo|idq\|djo|idq\tid|fq\Wt |Sq|dd jolx[|dd!D]L}d }t i |d }x+|o#|d}|i||?d@qWqWt |Sqtid |qxt i |d D]}|ii|}|tjotid|n|t|jo&|idg|t|dnd||B}qvW|t |}n|dd jod}xL|dd!D]=}|o*|t t i||d }d}q<|}q<W|o$|t t i|d d }qnt i d||Sn|SdS(Nis'sis'Biiis0s1s&Non-binary OCTET STRING initializer %ss'His"Bad OCTET STRING value notation %s(stypesvaluestypess StringTypesstrsrsbitNosbytesvschrserrors PyAsn1Errorspsstringsatoi(sselfsvaluesbitNospsrsvsbyte((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys purePrettyIn sF        (cCs1|itjot|i|_n|iSdS(N(sselfs_lensNoneslens_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__len__8scCsNt|tijo)|iti|i|i |i Sn |i|SdS(N( stypesistypess SliceTypesselfsclonesoperatorsgetslices_valuesstartsstop(sselfsi((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __getitem__<s)cCs|i|i|SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__add__BscCs|i||iSdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__radd__CscCs|i|i|SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__mul__DscCs ||SdS(N(sselfsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rmul__Es(s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatSimplestagSets baseTagSets prettyOutsprettyIns purePrettyIns__len__s __getitem__s__add__s__radd__s__mul__s__rmul__(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys OctetStrings(   .     sNullcBsLtZdZeieieieidZZ e i e i dZ RS(Nsi(s__name__s __module__s defaultValuestags initTagSetsTagstagClassUniversalstagFormatSimplestagSets baseTagSets OctetStrings subtypeSpecs constraintsSingleValueConstraint(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysNullGs(sObjectIdentifiercBstZeieieieidZZdZ dZ dZ dZ dZ dZdZd Zd ZRS( NicCs|i|i|SdS(N(sselfsclones_valuesother(sselfsother((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__add__RscCs|i||iSdS(N(sselfsclonesothers_value(sselfsother((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__radd__SscCs |iSdS(N(sselfs_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysasTupleUscCs1|itjot|i|_n|iSdS(N(sselfs_lensNoneslens_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__len__YscCsNt|tijo)|iti|i|i |i Sn |i|SdS(N( stypesistypess SliceTypesselfsclonesoperatorsgetslices_valuesstartsstop(sselfsi((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __getitem__]s)cCs|ii|SdS(N(sselfs_valuesindexssuboid(sselfssuboid((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysindexescCsKt|}|t|jo$|i| || jodSqCndSdS(s;Returns true if argument OID resides deeper in the OID treeiiN(slensselfslsvalues_value(sselfsvaluesl((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys isPrefixOfgs   cCsut|tijont|tot|Snt|tijog}xt t t i |dD]}y|it i|dWqpt ij ogy|it i|dWq t ij o1}tidt||ii|fq XqpXqpWt|}n t|}x>|D]6}|djo#tid||iifq3q3W|SdS(s)Dotted -> tuple of numerics OID converters.is Malformed Object ID %s at %s: %ssNegative sub-ID in %s at %sN(stypesvaluestypess TupleTypes isinstancesObjectIdentifierstuples StringTypesrsfiltersNonesstringssplitselementsappendsatois atoi_errorsatols atol_errorswhyserrors PyAsn1Errorsstrsselfs __class__s__name__sx(sselfsvalueselementsrsxswhy((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysprettyInos06   'cCsxg}x[|D]S}|it||do|dddjo|dd |dd dotted string OID converterisLs.N(srsvaluessubOidsappendsstrsstringsjoin(sselfsvaluesrssubOid((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys prettyOuts (s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatSimplestagSets baseTagSets__add__s__radd__sasTuples__len__s __getitem__sindexs isPrefixOfsprettyIns prettyOut(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysObjectIdentifierNs(        !sRealcBsntZedZedZeefZeieiei ei dZ Z dZ dZdZdZdZd Zd Zd Zd Zd ZdZdZdZdZdZdZdZedZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)d Z*d!Z+d"Z,RS(#Nsinfs-infi cCsT|\}}}x1|o|ddjo|d}|d}qW|||fSdS(Ni ii(svaluesmsbse(sselfsvaluesesbsm((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__normalizeBase10s  cCst|tijot|djoxG|D]?}t|titifjoti d|fq0q0W|dddfjoti d|dn|ddjo|i |}n|Sn3t|titifjo|i |ddfSnt|ti jom||i jo|Sqd}x,t||jo|d}|d}qAW|i t|d|fSnwt|tot|SnYt|tijoByt|}Wntj oqX||i jo|Sqnti d|fdS( NisLame Real value syntax: %siii s"Prohibited base for Real value: %sisBad real value syntax: %s(stypesvaluestypess TupleTypeslensdsIntTypesLongTypeserrors PyAsn1Errorsselfs_Real__normalizeBase10s FloatTypes_infseslongs isinstancesRealstuples StringTypesfloatsinfs ValueError(sselfsvaluesesdsinf((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysprettyIns>)   cCs*||ijo d|Sn t|SdS(Ns'%s'(svaluesselfs_infsstr(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys prettyOuts cCs|i|ijSdS(N(sselfs_values_plusInf(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysisPlusInfinityscCs|i|ijSdS(N(sselfs_values _minusInf(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysisMinusInfinityscCs|i|ijSdS(N(sselfs_values_inf(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys isInfinityscCstt|SdS(N(sstrsfloatsself(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__str__scCs|it||SdS(N(sselfsclonesfloatsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__add__scCs ||SdS(N(sselfsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__radd__scCs|it||SdS(N(sselfsclonesfloatsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__mul__scCs ||SdS(N(sselfsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rmul__scCs|it||SdS(N(sselfsclonesfloatsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__sub__scCs|i|t|SdS(N(sselfsclonesvaluesfloat(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rsub__scCs|it||SdS(N(sselfsclonesfloatsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__div__scCs|i|t|SdS(N(sselfsclonesvaluesfloat(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rdiv__scCs|it||SdS(N(sselfsclonesfloatsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__mod__scCs|i|t|SdS(N(sselfsclonesvaluesfloat(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rmod__scCs#|itt|||SdS(N(sselfsclonespowsfloatsvaluesmodulo(sselfsvaluesmodulo((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__pow__scCs |it|t|SdS(N(sselfsclonespowsvaluesfloat(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rpow__scCstt|SdS(N(sintsfloatsself(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__int__scCstt|SdS(N(slongsfloatsself(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__long__scCsN|i|ijo |iSn-t|idt|id|idSdS(Niii(sselfs_values_infsfloatspow(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __float__s cCstt|SdS(N(sabssfloatsself(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__abs__scCst||jSdS(N(sfloatsselfsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__lt__scCst||jSdS(N(sfloatsselfsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__le__scCst||jSdS(N(sfloatsselfsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__eq__scCst||jSdS(N(sfloatsselfsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__ne__scCst||jSdS(N(sfloatsselfsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__gt__scCst||jSdS(N(sfloatsselfsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__ge__scCst|odpdSdS(Nii(sfloatsself(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __nonzero__scCs5|i|ijotidn |i|SdS(Ns Invalid infinite value operation(sselfs_values_infserrors PyAsn1Errorsidx(sselfsidx((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __getitem__s(-s__name__s __module__sfloats_plusInfs _minusInfs_infstags initTagSetsTagstagClassUniversalstagFormatSimplestagSets baseTagSets_Real__normalizeBase10sprettyIns prettyOutsisPlusInfinitysisMinusInfinitys isInfinitys__str__s__add__s__radd__s__mul__s__rmul__s__sub__s__rsub__s__div__s__rdiv__s__mod__s__rmod__sNones__pow__s__rpow__s__int__s__long__s __float__s__abs__s__lt__s__le__s__eq__s__ne__s__gt__s__ge__s __nonzero__s __getitem__(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysRealsF   (  (                            s EnumeratedcBs0tZeieieieidZZRS(Ni ( s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatSimplestagSets baseTagSet(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys EnumeratedssSetOfcBs{tZeZeieieieidZ Z dZ dZ dZ dZeedZdZdd ZRS( NiicCsd}t|i}x||jou|i|}|tj oMt|ti o |i ||i d|q|i ||i n|d}qWdS(NiscloneValueFlagi(sidxslensselfs_componentValuesslscsNones isinstancesbasesAbstractConstructedAsn1ItemsmyClonessetComponentByPositionsclonescloneValueFlag(sselfsmyClonescloneValueFlagsidxscsl((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys_cloneComponentValuess    cCs?|itj o|ii| otid|ndS(NsComponent type error %s(sselfs_componentTypesNones isSuperTypeOfsvalueserrors PyAsn1Error(sselfsidxsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys_verifyComponents$cCs|i|SdS(N(sselfs_componentValuessidx(sselfsidx((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentByPosition#scCst|i}||jo#|i||dtg|_n|tjoi|i|tjoM|itjoti dn|ii |i|<|i d|_ n|Sn|t |t ijoe|itjoti dnt|itio|ii d|}q0ti dn|o8|itj o|i||n|i||n|i|tjo|i d|_ n||i|<|SdS(NisComponent type not definedsvaluesInstance value required(slensselfs_componentValuesslsidxsNonesvalues_componentTypeserrors PyAsn1Errorsclones_componentValuesSetstypestypess InstanceTypes isinstancesbasesAbstractSimpleAsn1ItemsverifyConstraintss_verifyComponents_verifySubtypeSpec(sselfsidxsvaluesverifyConstraintssl((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pyssetComponentByPosition$s0 #  cCs%|itj o|iiSndS(N(sselfs_componentTypesNones getTagMap(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentTagMap?sicCs|d}|iid}xgtt|iD]P}|d|}|i|t jo|d}q0||i|i |}q0W|SdS(Nis: s s( sscopesselfs __class__s__name__srsrangeslens_componentValuessidxsNones prettyPrint(sselfsscopesidxsr((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys prettyPrintCs (s__name__s __module__sNones componentTypestags initTagSetsTagstagClassUniversalstagFormatConstructedstagSets baseTagSetstypeIds_cloneComponentValuess_verifyComponentsgetComponentByPositionsTruessetComponentByPositionsgetComponentTagMaps prettyPrint(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysSetOf s(   s SequenceOfcBs6tZeieieieidZZdZ RS(Nii( s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatConstructedstagSets baseTagSetstypeId(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys SequenceOfNs(sSequenceAndSetBasecBstZeiZeeeedZdZdZdZ dZ dZ ee dZ dZee d Zd Zd Zd Zd ZddZRS(NcCsOtii||||||it jo d|_ nt |i|_ dS(Ni( sbasesAbstractConstructedAsn1Items__init__sselfs componentTypestagSets subtypeSpecssizeSpecs_componentTypesNones_componentTypeLenslen(sselfs componentTypestagSets subtypeSpecssizeSpec((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__init__Vs cCs>t|tijo|i|Sntii||SdS(N( stypesidxstypess StringTypesselfsgetComponentByNamesbasesAbstractConstructedAsn1Items __getitem__(sselfsidx((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __getitem__`scCsDt|tijo|i||ntii |||dS(N( stypesidxstypess StringTypesselfssetComponentByNamesvaluesbasesAbstractConstructedAsn1Items __setitem__(sselfsidxsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __setitem__fscCsd}t|i}x||jou|i|}|tj oMt|ti o |i ||i d|q|i ||i n|d}qWdS(NiscloneValueFlagi(sidxslensselfs_componentValuesslscsNones isinstancesbasesAbstractConstructedAsn1ItemsmyClonessetComponentByPositionsclonescloneValueFlag(sselfsmyClonescloneValueFlagsidxscsl((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys_cloneComponentValuesls    cCst||ijotidn|i|i}|i| o)tidt |t |fndS(Ns!Component type error out of rangesComponent type error %s vs %s( sidxsselfs_componentTypeLenserrors PyAsn1Errors_componentTypesgetTypests isSuperTypeOfsvaluesrepr(sselfsidxsvaluest((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys_verifyComponentys cCs|i|ii|SdS(N(sselfsgetComponentByPositions_componentTypesgetPositionByNamesname(sselfsname((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentByNamescCs#|i|ii|||SdS(N(sselfssetComponentByPositions_componentTypesgetPositionByNamesnamesvaluesverifyConstraints(sselfsnamesvaluesverifyConstraints((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pyssetComponentByNamescCsDy|i|SWn.tj o"||ijodSnnXdS(N(sselfs_componentValuessidxs IndexErrors_componentTypeLen(sselfsidx((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentByPositions cCsut|i}||jo#|i||dtg|_n|tjoO|i|tjo3|ii|i |i|<|i d|_ n|Snet |t i joN|ii|}t|tio|i d|}qtidn|o2|io|i||n|i||n|i|tjo|i d|_ n||i|<|SdS(NisvaluesInstance value required(slensselfs_componentValuesslsidxsNonesvalues_componentTypesgetTypeByPositionsclones_componentValuesSetstypestypess InstanceTypests isinstancesbasesAbstractSimpleAsn1Itemserrors PyAsn1ErrorsverifyConstraintss_componentTypeLens_verifyComponents_verifySubtypeSpec(sselfsidxsvaluesverifyConstraintsslst((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pyssetComponentByPositions* #   cCs"|io|ii|SndS(N(sselfs_componentTypeLens_componentTypesgetNameByPositionsidx(sselfsidx((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetNameByPositions cCs4|io|i|io|i|iSndS(N(sselfs_componentTypeLens_componentTypesidxs isDefaultedsgetType(sselfsidx((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetDefaultComponentByPositionscCs|io |iSndS(N(sselfs_componentTypeLens_componentType(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentTypes cCs|i|ijodSn|i}x|o|d}|i|io+|i|tjo|i|qq'|i|i o=|i|tjo#t i d|t |fqq'q'WdS(Nis!Uninitialized component #%s at %s( sselfs_componentTypeLens_componentValuesSetsidxs_componentTypes isDefaultedsgetComponentByPositionsNonessetComponentByPositions isOptionalserrors PyAsn1Errorsrepr(sselfsidx((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pyssetDefaultComponentss  icCs|d}|iid}xtt|iD]}|i|t j ol|d|}|i }|t jo|d}n||i |}d||i|i |f}q0q0W|SdS(Nis: s s s%s=%s (sscopesselfs __class__s__name__srsrangeslens_componentValuessidxsNonesgetComponentTypes componentTypesgetNameByPositions prettyPrint(sselfsscopesidxs componentTypesr((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys prettyPrints   ((s__name__s __module__s namedtypes NamedTypess componentTypesNones__init__s __getitem__s __setitem__s_cloneComponentValuess_verifyComponentsgetComponentByNamesTruessetComponentByNamesgetComponentByPositionssetComponentByPositionsgetNameByPositionsgetDefaultComponentByPositionsgetComponentTypessetDefaultComponentss prettyPrint(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysSequenceAndSetBaseTs         sSequencecBsHtZeieieieidZZdZ dZ dZ RS(NiicCs"|io|ii|SndS(N(sselfs_componentTypesgetTagMapNearPositionsidx(sselfsidx((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentTagMapNearPositions cCs)|io|ii||Sn|SdS(N(sselfs_componentTypesgetPositionNearTypestagSetsidx(sselfstagSetsidx((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentPositionNearTypes ( s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatConstructedstagSets baseTagSetstypeIdsgetComponentTagMapNearPositionsgetComponentPositionNearType(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysSequences( sSetcBsrtZeieieieidZZdZ ddZ ddZ e de dZdZdZRS( NiiicCs|SdS(N(sself(sselfs innerFlag((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys getComponentscCsK|i|ii|}|o t|to|i dSn|SdS(Ni( sselfsgetComponentByPositions_componentTypesgetPositionByTypestagSetscs innerFlags isinstancesSets getComponent(sselfstagSets innerFlagsc((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentByTypescCs|ii|}|ii|}|oV|io|i |||Sq|i |i |}|i ||||Sn|i |||SdS(N(sselfs_componentTypesgetPositionByTypestagSetsidxsgetTypeByPositionsts innerFlags getTagSetssetComponentByPositionsvaluesverifyConstraintssgetComponentByPositionssetComponentByType(sselfstagSetsvalues innerFlagsverifyConstraintssidxst((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pyssetComponentByTypes cCs"|io|iitSndS(N(sselfs_componentTypes getTagMapsTrue(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentTagMap s cCs"|io|ii|SndS(N(sselfs_componentTypesgetPositionByTypestagSet(sselfstagSet((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentPositionByTypes (s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatConstructedstagSets baseTagSetstypeIds getComponentsgetComponentByTypesNonesTruessetComponentByTypesgetComponentTagMapsgetComponentPositionByType(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysSets(   sChoicecBstZeiZZeieiddZ dZ e Z dZ dZdZdZe edZdZd Zd Zd d Zd d ZdZRS(NiicCs-|iot|i|i|SndSdS(Ni(sselfs_componentValuesscmps _currentIdxsother(sselfsother((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__cmp__s cCs|itj odpdSdS(Nii(sselfs _currentIdxsNone(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__len__"scCs4|itjotidn|iddS(NsComponent not chosens (sselfs _currentIdxsNoneserrors PyAsn1Errors _sizeSpec(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysverifySizeSpec$scCsy|i}Wntij onwXt|to|i}n |i }t|t i o |i ||id|n|i ||idS(NscloneValueFlag(sselfs getComponentscserrors PyAsn1Errors isinstancesChoicesgetEffectiveTagSetstagSets getTagSetsbasesAbstractConstructedAsn1ItemsmyClonessetComponentByTypesclonescloneValueFlag(sselfsmyClonescloneValueFlagscstagSet((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys_cloneComponentValues*s  cCsYt|i}||jo#|i||dtg|_n|itj ot|i|i/44pyasn1/type/base.pyc; Mc@sdklZlZlZdklZdklZdkl Z l Z dk l Z dfdYZ de fdYZd fd YZeZd efd YZd efdYZdS((sgetslicessetslicesdelslice(sjoin(s SliceType(s constraintstagmap(serrorsAsn1ItemcBstZRS(N(s__name__s __module__(((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysAsn1Itemss Asn1ItemBasecBsqtZfZeiZeZeedZedZ dZ dZ dZ dZ dZdZRS( NcCsP|tjo|i|_n ||_|tjo|i|_n ||_dS(N(stagSetsNonesselfs_tagSets subtypeSpecs _subtypeSpec(sselfstagSets subtypeSpec((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys__init__s    cCs|i||dS(N(sselfs _subtypeSpecsvaluesidx(sselfsvaluesidx((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys_verifySubtypeSpecscCs |iSdS(N(sselfs _subtypeSpec(sself((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysgetSubtypeSpec!scCs |iSdS(N(sselfs_tagSet(sself((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys getTagSet#scCs |iSdS(N(sselfs_tagSet(sself((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysgetEffectiveTagSet$scCstih|i|<SdS(N(stagmapsTagMapsselfs_tagSet(sself((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys getTagMap%scCs:||jp)|i|ijo|i|ijSdS(N(sselfsothers_tagSets getTagSets _subtypeSpecsgetSubtypeSpec(sselfsother((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysisSameTypeWith'scCs3|ii|io|ii|iSdS(s7Returns true if argument is a ASN1 subtype of ourselvesN(sselfs_tagSetsisSuperTagSetOfsothers getTagSets _subtypeSpecs isSuperTypeOfsgetSubtypeSpec(sselfsother((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys isSuperTypeOf+s(s__name__s __module__stagSets constraintsConstraintsIntersections subtypeSpecsNonestypeIds__init__s_verifySubtypeSpecsgetSubtypeSpecs getTagSetsgetEffectiveTagSets getTagMapsisSameTypeWiths isSuperTypeOf(((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys Asn1ItemBase s       s __NoValuecBstZdZRS(NcCstid|dS(NsNo value for %s()(serrors PyAsn1Errorsattr(sselfsattr((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys __getattr__1s(s__name__s __module__s __getattr__(((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys __NoValue0ssAbstractSimpleAsn1ItemcBstZeZeeedZdZdZdZdZ dZ eeedZ eeeedZ d Z d Zd d Zd d ZRS(NcCsti||||tjp |tjo |i}n|tjp |tjot|_ }n,|i |}|i |t ||_ ||_ t|_dS(N(s Asn1ItemBases__init__sselfstagSets subtypeSpecsvaluesNonesnoValues defaultValues$_AbstractSimpleAsn1Item__hashedValuesprettyIns_verifySubtypeSpecshashs_values_len(sselfsvaluestagSets subtypeSpec((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys__init__8s   cCsH|itjo|iidSn#|iid|i|idSdS(Ns()s(s)(sselfs_valuesnoValues __class__s__name__s prettyOut(sself((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys__repr__EscCst|iSdS(N(sstrsselfs_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys__str__JscCst|i|SdS(N(scmpsselfs_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys__cmp__KscCs |iSdS(N(sselfs$_AbstractSimpleAsn1Item__hashedValue(sself((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys__hash__LscCs|iodpdSdS(Nii(sselfs_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys __nonzero__NscCs|tjo|tjo |tjo|Sn|tjo |i}n|tjo |i}n|tjo |i}n|i|||SdS(N( svaluesNonestagSets subtypeSpecsselfs_values_tagSets _subtypeSpecs __class__(sselfsvaluestagSets subtypeSpec((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysclonePs'      cCs|tjo |i}n|tj o|ii|}n-|tj o|ii |}n |i}|tjo |i }n||i }|i |||SdS(N( svaluesNonesselfs_values implicitTags_tagSets tagImplicitlystagSets explicitTags tagExplicitlys subtypeSpecs _subtypeSpecs __class__(sselfsvalues implicitTags explicitTags subtypeSpecstagSet((s.build/bdist.linux-i686/egg/pyasn1/type/base.pyssubtype[s        cCs|SdS(N(svalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysprettyInkscCst|SdS(N(sstrsvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys prettyOutlsicCs|i|iSdS(N(sselfs prettyOuts_value(sselfsscope((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys prettyPrintnscCs|i|SdS(N(sselfs prettyPrintsscope(sselfsscope((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys prettyPrinterps(s__name__s __module__snoValues defaultValuesNones__init__s__repr__s__str__s__cmp__s__hash__s __nonzero__sclonessubtypesprettyIns prettyOuts prettyPrints prettyPrinter(((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysAbstractSimpleAsn1Item6s         sAbstractConstructedAsn1ItemcBstZeZeiZeeeedZdZdZ dZ dZ eeeedZ eeeeedZ dZd Zd Zed Zd Zd ZdZdZdZdZRS(NcCsuti||||tjo|i|_n ||_|tjo|i|_ n ||_ g|_ d|_ dS(Ni( s Asn1ItemBases__init__sselfstagSets subtypeSpecs componentTypesNones_componentTypessizeSpecs _sizeSpecs_componentValuess_componentValuesSet(sselfs componentTypestagSets subtypeSpecssizeSpec((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys__init__s     cCst|iid}xYtt|iD]B}|i|tjoq&n|d|t |i|f}q&W|SdS(Ns()s.setComponentByPosition(%s, %s)( sselfs __class__s__name__srsrangeslens_componentValuessidxsNonesrepr(sselfsidxsr((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys__repr__s%cCst|i|SdS(N(scmpsselfs_componentValuessother(sselfsother((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys__cmp__scCstiddS(NsMethod not implemented(serrors PyAsn1Error(sself((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysgetComponentTagMapscCsdS(N((sselfsmyClonescloneValueFlag((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys_cloneComponentValuesscCs|tjo |i}n|tjo |i}n|tjo |i}n|i|i |||}|o|i ||n|SdS(N( stagSetsNonesselfs_tagSets subtypeSpecs _subtypeSpecssizeSpecs _sizeSpecs __class__s_componentTypesrscloneValueFlags_cloneComponentValues(sselfstagSets subtypeSpecssizeSpecscloneValueFlagsr((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysclones      cCs|tj o|ii|}n-|tj o|ii|}n |i}|tjo |i }n||i }|tjo |i }n||i }|i |i |||}|o|i||n|SdS(N(s implicitTagsNonesselfs_tagSets tagImplicitlystagSets explicitTags tagExplicitlys subtypeSpecs _subtypeSpecssizeSpecs _sizeSpecs __class__s_componentTypesrscloneValueFlags_cloneComponentValues(sselfs implicitTags explicitTags subtypeSpecssizeSpecscloneValueFlagsrstagSet((s.build/bdist.linux-i686/egg/pyasn1/type/base.pyssubtypes         cCsdS(N((sselfsidxsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys_verifyComponentscCs|i|dS(N(sselfs _sizeSpec(sself((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysverifySizeSpecscCstiddS(NsMethod not implemented(serrors PyAsn1Error(sselfsidx((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysgetComponentByPositionscCstiddS(NsMethod not implemented(serrors PyAsn1Error(sselfsidxsvaluesverifyConstraints((s.build/bdist.linux-i686/egg/pyasn1/type/base.pyssetComponentByPositionscCs |iSdS(N(sselfs_componentType(sself((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysgetComponentTypescCs|i|SdS(N(sselfsgetComponentByPositionsidx(sselfsidx((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys __getitem__scCs|i||dS(N(sselfssetComponentByPositionsidxsvalue(sselfsidxsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys __setitem__scCst|iSdS(N(slensselfs_componentValues(sself((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys__len__scCsg|_d|_dS(Ni(sselfs_componentValuess_componentValuesSet(sself((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysclears cCsdS(N((sself((s.build/bdist.linux-i686/egg/pyasn1/type/base.pyssetDefaultComponentss(s__name__s __module__sNones componentTypes constraintsConstraintsIntersectionssizeSpecs__init__s__repr__s__cmp__sgetComponentTagMaps_cloneComponentValuessclonessubtypes_verifyComponentsverifySizeSpecsgetComponentByPositionsTruessetComponentByPositionsgetComponentTypes __getitem__s __setitem__s__len__sclearssetDefaultComponents(((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysAbstractConstructedAsn1Items&              N(soperatorsgetslicessetslicesdelslicesstringsjoinstypess SliceTypes pyasn1.types constraintstagmapspyasn1serrorsAsn1Items Asn1ItemBases __NoValuesnoValuesAbstractSimpleAsn1ItemsAbstractConstructedAsn1Item(s Asn1ItemBasesnoValuesjoinsAsn1Items constraintsgetslices __NoValuessetslicesdelslicestagmapserrorsAbstractSimpleAsn1ItemsAbstractConstructedAsn1Items SliceType((s.build/bdist.linux-i686/egg/pyasn1/type/base.pys?s   & OPKv!>>q__pyasn1/type/char.py# ASN.1 "character string" types from pyasn1.type import univ, tag class UTF8String(univ.OctetString): tagSet = univ.OctetString.tagSet.tagImplicitly( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 12) ) class NumericString(univ.OctetString): tagSet = univ.OctetString.tagSet.tagImplicitly( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 18) ) class PrintableString(univ.OctetString): tagSet = univ.OctetString.tagSet.tagImplicitly( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 19) ) class TeletexString(univ.OctetString): tagSet = univ.OctetString.tagSet.tagImplicitly( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 20) ) class VideotexString(univ.OctetString): tagSet = univ.OctetString.tagSet.tagImplicitly( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 21) ) class IA5String(univ.OctetString): tagSet = univ.OctetString.tagSet.tagImplicitly( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 22) ) class GraphicString(univ.OctetString): tagSet = univ.OctetString.tagSet.tagImplicitly( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 25) ) class VisibleString(univ.OctetString): tagSet = univ.OctetString.tagSet.tagImplicitly( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 26) ) class GeneralString(univ.OctetString): tagSet = univ.OctetString.tagSet.tagImplicitly( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 27) ) class UniversalString(univ.OctetString): tagSet = univ.OctetString.tagSet.tagImplicitly( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 28) ) class BMPString(univ.OctetString): tagSet = univ.OctetString.tagSet.tagImplicitly( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 30) ) PK Xf>|PPpyasn1/type/constraint.py""" ASN.1 subtype constraints classes. Constraints are relatively rare, but every ASN1 object is doing checks all the time for whether they have any constraints and whether they are applicable to the object. What we're going to do is define objects/functions that can be called unconditionally if they are present, and that are simply not present if there are no constraints. Original concept and code by Mike C. Fletcher. """ import types import string from pyasn1.type import error class AbstractConstraint: """Abstract base-class for constraint objects Constraints should be stored in a simple sequence in the namespace of their client Asn1Item sub-classes. """ def __init__(self, *values): self._valueMap = {} self._setValues(values) self.__hashedValues = None def __call__(self, value, idx=None): try: self._testValue(value, idx) except error.ValueConstraintError, why: raise error.ValueConstraintError('%s failed at: \"%s\"' % ( self, why )) def __repr__(self): return '%s(%s)' % ( self.__class__.__name__, string.join(map(lambda x: repr(x), self._values), ', ') ) # __cmp__ must accompany __hash__ def __cmp__(self, other): return cmp((self.__class__, self._values), other) def __eq__(self, other): return self is other and 1 or (self.__class__, self._values) == other def __hash__(self): if self.__hashedValues is None: self.__hashedValues = hash((self.__class__, self._values)) return self.__hashedValues def _setValues(self, values): self._values = values def _testValue(self, value, idx): raise error.ValueConstraintError(value) # Constraints derivation logic def getValueMap(self): return self._valueMap def isSuperTypeOf(self, otherConstraint): return self in otherConstraint.getValueMap() or \ otherConstraint is self or otherConstraint == self def isSubTypeOf(self, otherConstraint): return otherConstraint in self._valueMap or \ otherConstraint is self or otherConstraint == self class SingleValueConstraint(AbstractConstraint): """Value must be part of defined values constraint""" def _testValue(self, value, idx): # XXX index vals for performance? if value not in self._values: raise error.ValueConstraintError(value) class ContainedSubtypeConstraint(AbstractConstraint): """Value must satisfy all of defined set of constraints""" def _testValue(self, value, idx): for c in self._values: c(value, idx) class ValueRangeConstraint(AbstractConstraint): """Value must be within start and stop values (inclusive)""" def _testValue(self, value, idx): if value < self.start or value > self.stop: raise error.ValueConstraintError(value) def _setValues(self, values): if len(values) != 2: raise error.PyAsn1Error( '%s: bad constraint values' % (self.__class__.__name__,) ) self.start, self.stop = values if self.start > self.stop: raise error.PyAsn1Error( '%s: screwed constraint values (start > stop): %s > %s' % ( self.__class__.__name__, self.start, self.stop ) ) AbstractConstraint._setValues(self, values) class ValueSizeConstraint(ValueRangeConstraint): """len(value) must be within start and stop values (inclusive)""" def _testValue(self, value, idx): l = len(value) if l < self.start or l > self.stop: raise error.ValueConstraintError(value) class PermittedAlphabetConstraint(SingleValueConstraint): def _setValues(self, values): self._values = () for v in values: self._values = self._values + tuple(v) def _testValue(self, value, idx): for v in value: if v not in self._values: raise error.ValueConstraintError(value) # This is a bit kludgy, meaning two op modes within a single constraing class InnerTypeConstraint(AbstractConstraint): """Value must satisfy type and presense constraints""" def _testValue(self, value, idx): if self.__singleTypeConstraint: self.__singleTypeConstraint(value) elif self.__multipleTypeConstraint: if idx not in self.__multipleTypeConstraint: raise error.ValueConstraintError(value) constraint, status = self.__multipleTypeConstraint[idx] if status == 'ABSENT': # XXX presense is not checked! raise error.ValueConstraintError(value) constraint(value) def _setValues(self, values): self.__multipleTypeConstraint = {} self.__singleTypeConstraint = None for v in values: if type(v) == types.TupleType: self.__multipleTypeConstraint[v[0]] = v[1], v[2] else: self.__singleTypeConstraint = v AbstractConstraint._setValues(self, values) # Boolean ops on constraints class ConstraintsExclusion(AbstractConstraint): """Value must not fit the single constraint""" def _testValue(self, value, idx): try: self._values[0](value, idx) except error.ValueConstraintError: return else: raise error.ValueConstraintError(value) def _setValues(self, values): if len(values) != 1: raise error.PyAsn1Error('Single constraint expected') AbstractConstraint._setValues(self, values) class AbstractConstraintSet(AbstractConstraint): """Value must not satisfy the single constraint""" def __getitem__(self, idx): return self._values[idx] def __add__(self, value): return self.__class__(self, value) def __radd__(self, value): return self.__class__(self, value) def __len__(self): return len(self._values) # Constraints inclusion in sets def _setValues(self, values): self._values = values for v in values: self._valueMap[v] = 1 self._valueMap.update(v.getValueMap()) class ConstraintsIntersection(AbstractConstraintSet): """Value must satisfy all constraints""" def _testValue(self, value, idx): for v in self._values: v(value, idx) class ConstraintsUnion(AbstractConstraintSet): """Value must satisfy at least one constraint""" def _testValue(self, value, idx): for v in self._values: try: v(value, idx) except error.ValueConstraintError: pass else: return raise error.ValueConstraintError( 'all of %s failed for \"%s\"' % (self._values, value) ) # XXX # add tests for type check PK27>ZHggpyasn1/type/namedval.py# ASN.1 named integers from types import TupleType from pyasn1 import error __all__ = [ 'NamedValues' ] class NamedValues: def __init__(self, *namedValues): self.nameToValIdx = {}; self.valToNameIdx = {} self.namedValues = () automaticVal = 1 for namedValue in namedValues: if type(namedValue) == TupleType: name, val = namedValue else: name = namedValue val = automaticVal if name in self.nameToValIdx: raise error.PyAsn1Error('Duplicate name %s' % name) self.nameToValIdx[name] = val if val in self.valToNameIdx: raise error.PyAsn1Error('Duplicate value %s' % name) self.valToNameIdx[val] = name self.namedValues = self.namedValues + ((name, val),) automaticVal = automaticVal + 1 def __str__(self): return str(self.namedValues) def getName(self, value): if value in self.valToNameIdx: return self.valToNameIdx[value] def getValue(self, name): if name in self.nameToValIdx: return self.nameToValIdx[name] def __getitem__(self, i): return self.namedValues[i] def __len__(self): return len(self.namedValues) def __add__(self, namedValues): return apply(self.__class__, self.namedValues + namedValues) def __radd__(self, namedValues): return apply(self.__class__, namedValues + tuple(self)) def clone(self, *namedValues): return apply(self.__class__, tuple(self) + namedValues) # XXX clone/subtype? PKh|>ge--pyasn1/type/char.pyc; Mc@s*dklZlZdeifdYZdeifdYZdeifdYZdeifdYZd eifd YZd eifd YZ d eifdYZ deifdYZ deifdYZ deifdYZ deifdYZdS((sunivstags UTF8StringcBs2tZeiiieieiei dZRS(Ni ( s__name__s __module__sunivs OctetStringstagSets tagImplicitlystagsTagstagClassUniversalstagFormatSimple(((s.build/bdist.linux-i686/egg/pyasn1/type/char.pys UTF8Stringss NumericStringcBs2tZeiiieieiei dZRS(Ni( s__name__s __module__sunivs OctetStringstagSets tagImplicitlystagsTagstagClassUniversalstagFormatSimple(((s.build/bdist.linux-i686/egg/pyasn1/type/char.pys NumericString ssPrintableStringcBs2tZeiiieieiei dZRS(Ni( s__name__s __module__sunivs OctetStringstagSets tagImplicitlystagsTagstagClassUniversalstagFormatSimple(((s.build/bdist.linux-i686/egg/pyasn1/type/char.pysPrintableStringss TeletexStringcBs2tZeiiieieiei dZRS(Ni( s__name__s __module__sunivs OctetStringstagSets tagImplicitlystagsTagstagClassUniversalstagFormatSimple(((s.build/bdist.linux-i686/egg/pyasn1/type/char.pys TeletexStringssVideotexStringcBs2tZeiiieieiei dZRS(Ni( s__name__s __module__sunivs OctetStringstagSets tagImplicitlystagsTagstagClassUniversalstagFormatSimple(((s.build/bdist.linux-i686/egg/pyasn1/type/char.pysVideotexStringss IA5StringcBs2tZeiiieieiei dZRS(Ni( s__name__s __module__sunivs OctetStringstagSets tagImplicitlystagsTagstagClassUniversalstagFormatSimple(((s.build/bdist.linux-i686/egg/pyasn1/type/char.pys IA5Stringss GraphicStringcBs2tZeiiieieiei dZRS(Ni( s__name__s __module__sunivs OctetStringstagSets tagImplicitlystagsTagstagClassUniversalstagFormatSimple(((s.build/bdist.linux-i686/egg/pyasn1/type/char.pys GraphicString"ss VisibleStringcBs2tZeiiieieiei dZRS(Ni( s__name__s __module__sunivs OctetStringstagSets tagImplicitlystagsTagstagClassUniversalstagFormatSimple(((s.build/bdist.linux-i686/egg/pyasn1/type/char.pys VisibleString'ss GeneralStringcBs2tZeiiieieiei dZRS(Ni( s__name__s __module__sunivs OctetStringstagSets tagImplicitlystagsTagstagClassUniversalstagFormatSimple(((s.build/bdist.linux-i686/egg/pyasn1/type/char.pys GeneralString,ssUniversalStringcBs2tZeiiieieiei dZRS(Ni( s__name__s __module__sunivs OctetStringstagSets tagImplicitlystagsTagstagClassUniversalstagFormatSimple(((s.build/bdist.linux-i686/egg/pyasn1/type/char.pysUniversalString1ss BMPStringcBs2tZeiiieieiei dZRS(Ni( s__name__s __module__sunivs OctetStringstagSets tagImplicitlystagsTagstagClassUniversalstagFormatSimple(((s.build/bdist.linux-i686/egg/pyasn1/type/char.pys BMPString6sN(s pyasn1.typesunivstags OctetStrings UTF8Strings NumericStringsPrintableStrings TeletexStringsVideotexStrings IA5Strings GraphicStrings VisibleStrings GeneralStringsUniversalStrings BMPString( s TeletexStrings GraphicStringsUniversalStrings VisibleStringsVideotexStrings GeneralStrings NumericStrings UTF8StringsPrintableStrings IA5Stringstags BMPStringsuniv((s.build/bdist.linux-i686/egg/pyasn1/type/char.pys?sPKv!>pyasn1/type/__init__.pyPKv!>_RMTTpyasn1/type/error.pyfrom pyasn1.error import PyAsn1Error class ValueConstraintError(PyAsn1Error): pass PKh|>  EGG-INFO/SOURCES.txtCHANGES LICENSE MANIFEST.in README THANKS TODO setup.py doc/pyasn1-tutorial.html pyasn1/__init__.py pyasn1/error.py pyasn1.egg-info/PKG-INFO pyasn1.egg-info/SOURCES.txt pyasn1.egg-info/dependency_links.txt pyasn1.egg-info/top_level.txt pyasn1.egg-info/zip-safe pyasn1/codec/__init__.py pyasn1/codec/ber/__init__.py pyasn1/codec/ber/decoder.py pyasn1/codec/ber/encoder.py pyasn1/codec/ber/eoo.py pyasn1/codec/cer/__init__.py pyasn1/codec/cer/decoder.py pyasn1/codec/cer/encoder.py pyasn1/codec/der/__init__.py pyasn1/codec/der/decoder.py pyasn1/codec/der/encoder.py pyasn1/type/__init__.py pyasn1/type/base.py pyasn1/type/char.py pyasn1/type/constraint.py pyasn1/type/error.py pyasn1/type/namedtype.py pyasn1/type/namedval.py pyasn1/type/tag.py pyasn1/type/tagmap.py pyasn1/type/univ.py pyasn1/type/useful.py test/__init__.py test/suite.py test/codec/__init__.py test/codec/ber/__init__.py test/codec/ber/decoder.py test/codec/ber/encoder.py test/codec/ber/suite.py test/codec/cer/__init__.py test/codec/cer/decoder.py test/codec/cer/encoder.py test/codec/cer/suite.py test/codec/der/__init__.py test/codec/der/decoder.py test/codec/der/encoder.py test/codec/der/suite.py test/type/__init__.py test/type/constraint.py test/type/namedtype.py test/type/suite.py test/type/tag.py test/type/univ.pyPKh|>U 0EGG-INFO/top_level.txtpyasn1 PKh|>}OEGG-INFO/PKG-INFOMetadata-Version: 1.0 Name: pyasn1 Version: 0.0.13 Summary: ASN.1 types and codecs Home-page: http://sourceforge.net/projects/pyasn1/ Author: Ilya Etingof Author-email: ilya@glas.net License: BSD Description: UNKNOWN Platform: UNKNOWN PKh|>2EGG-INFO/dependency_links.txt PK=2EGG-INFO/zip-safe PKh|>ݶUpyasn1/__init__.pycPKh|>/Ipyasn1/error.pycPKsW2-<ٚpyasn1/__init__.pyPKv!>Mpyasn1/error.pyPKh|>4pyasn1/codec/__init__.pycPKsW2Kpyasn1/codec/__init__.pyPKPR>opyasn1/codec/der/decoder.pyPKh|>G9ccEpyasn1/codec/der/decoder.pycPKPR>l8pyasn1/codec/der/encoder.pyPKh|> J pyasn1/codec/der/__init__.pycPKh|>[00 pyasn1/codec/der/encoder.pycPKsW2(pyasn1/codec/der/__init__.pyPKtf>H#&(bpyasn1/codec/cer/decoder.pyPKh|>`4@pyasn1/codec/cer/decoder.pycPKPR> K pyasn1/codec/cer/encoder.pyPKh|>/V-pyasn1/codec/cer/__init__.pycPKh|>u.pyasn1/codec/cer/encoder.pycPKsW2Apyasn1/codec/cer/__init__.pyPKǦs>r_ttMApyasn1/codec/ber/decoder.pyPKh|>d@[@FF>pyasn1/codec/ber/decoder.pycPKǦs>'HL009pyasn1/codec/ber/encoder.pyPKh|>OÇjpyasn1/codec/ber/__init__.pycPKh|>bAbAKkpyasn1/codec/ber/encoder.pycPKR4pyasn1/codec/ber/eoo.pyPKh|>tB pyasn1/codec/ber/eoo.pycPKsW2pyasn1/codec/ber/__init__.pyPKv!>P3z#pyasn1/type/useful.pyPKh|> m) ) ߲pyasn1/type/tagmap.pycPKh|>g/c!!<pyasn1/type/tag.pycPKPR>ʂWW0pyasn1/type/namedtype.pyPKh|>$v6v6pyasn1/type/constraint.pycPKQ>f~k+pyasn1/type/tagmap.pyPK27>(i2pyasn1/type/tag.pyPKǦs> = Bpyasn1/type/base.pyPK >QBappZcpyasn1/type/univ.pyPKh|>- - pyasn1/type/namedval.pycPKh|>n  ^pyasn1/type/useful.pycPKh|>`pyasn1/type/__init__.pycPKh|>+ ""Wpyasn1/type/namedtype.pycPKh|>(pyasn1/type/error.pycPKh|>?|pyasn1/type/univ.pycPKh|>/44pyasn1/type/base.pycPKv!>>q__ %pyasn1/type/char.pyPK Xf>|PP,pyasn1/type/constraint.pyPK27>ZHgg!Hpyasn1/type/namedval.pyPKh|>ge--Npyasn1/type/char.pycPKv!>apyasn1/type/__init__.pyPKv!>_RMTTQapyasn1/type/error.pyPKh|>  aEGG-INFO/SOURCES.txtPKh|>U 0gEGG-INFO/top_level.txtPKh|>}OQgEGG-INFO/PKG-INFOPKh|>2khEGG-INFO/dependency_links.txtPK=2hEGG-INFO/zip-safePK55ch