PKW=ݶUpyasn1/__init__.pyc; ZBc@s dZdS(s1N(smajorVersionId(smajorVersionId((s-build/bdist.linux-i686/egg/pyasn1/__init__.pys?sPKW=׆pyasn1/error.pyc; ZBc@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' PKsW2Mpyasn1/error.pyclass PyAsn1Error(StandardError): pass class ValueConstraintError(PyAsn1Error): pass class SubstrateUnderrunError(PyAsn1Error): pass PKW=4pyasn1/codec/__init__.pyc; ZBc@sdS(N((((s3build/bdist.linux-i686/egg/pyasn1/codec/__init__.pys?sPKsW2pyasn1/codec/__init__.pyPKsW2||pyasn1/codec/der/decoder.py# DER decoder from pyasn1.type import univ from pyasn1.codec.cer import decoder decode = decoder.Decoder(decoder.codecMap) PKW=c^SSpyasn1/codec/der/decoder.pyc; [Bc@s0dklZdklZeieiZdS((suniv(sdecoderN(s pyasn1.typesunivspyasn1.codec.cersdecodersDecoderscodecMapsdecode(sdecodesunivsdecoder((s6build/bdist.linux-i686/egg/pyasn1/codec/der/decoder.pys?s  PK3YWWpyasn1/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): return cmp( getattr(c1, 'getEffectiveTagSet', c1.getTagSet)(), getattr(c2, 'getEffectiveTagSet', c2.getTagSet)() ) codecMap = encoder.codecMap.copy() codecMap.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() }) class Encoder(encoder.Encoder): def __call__(self, client, defMode=1, maxChunkSize=0): return encoder.Encoder.__call__(self, client, defMode, maxChunkSize) encode = Encoder(codecMap) PKW= Jpyasn1/codec/der/__init__.pyc; [Bc@sdS(N((((s7build/bdist.linux-i686/egg/pyasn1/codec/der/__init__.pys?sPKW=@?pyasn1/codec/der/encoder.pyc; :Cc@sdklZdklZdeifdYZeiiZeiheii eii <ei i eii <ei i e<deifdYZeeZdS((suniv(sencoders SetOfEncodercBstZdZRS(NcCs5tt|d|it|d|iSdS(NsgetEffectiveTagSet(scmpsgetattrsc1s getTagSetsc2(sselfsc1sc2((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 SetOfEncoderscodecMapscopysupdates BitStringstagSetsBitStringEncoders OctetStringsOctetStringEncodersSetOfsEncodersencode(s SetOfEncodersunivsEncodersencodesencoderscodecMap((s6build/bdist.linux-i686/egg/pyasn1/codec/der/encoder.pys?s  RPKsW2pyasn1/codec/der/__init__.pyPKp4 IQpyasn1/codec/cer/decoder.py# CER decoder from pyasn1.type import univ from pyasn1.codec.ber import decoder from pyasn1 import error class BooleanDecoder(decoder.AbstractDecoder): protoComponent = univ.Boolean(0) def valueDecoder(self, substrate, asn1Spec, tagSet, length, state, decodeFun): if not substrate: raise error.PyAsn1Error('Empty substrate') byte = ord(substrate[0]) if byte == 0xff: value = 1 elif byte == 0x00: value = 0 return self._createComponent( tagSet, asn1Spec ).clone(value), substrate[1:] codecMap = decoder.codecMap.copy() codecMap.update({ univ.Boolean.tagSet: BooleanDecoder(), }) class Decoder(decoder.Decoder): pass decode = Decoder(codecMap) PKW=K+ZZpyasn1/codec/cer/decoder.pyc; TLDc@sdklZdklZdklZdeifdYZeii Zei hei i e<dei fdYZ e eZdS((suniv(sdecoder(serrorsBooleanDecodercBs tZeidZdZRS(Nic Cs| otidnt|d}|djo d}n|djo d}n|i||i ||dfSdS(NsEmpty substrateiii( s substrateserrors PyAsn1Errorsordsbytesvaluesselfs_createComponentstagSetsasn1Specsclone( sselfs 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.bersdecoderspyasn1serrorsAbstractDecodersBooleanDecoderscodecMapscopysupdatesBooleanstagSetsDecodersdecode(sunivsDecodersdecodesdecoderserrorsBooleanDecoderscodecMap((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/decoder.pys?s   PKS34q@ 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): return cmp( getattr(c1, 'getMinimalTagSet', c1.getTagSet)(), getattr(c2, 'getMinimalTagSet', c2.getTagSet)() ) def _encodeValue(self, encodeFun, client, defMode, maxChunkSize): if hasattr(client, 'setDefaultComponents'): 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 hasattr(client, 'getDefaultComponentByPosition'): # 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 codecMap = encoder.codecMap.copy() codecMap.update({ univ.Boolean.tagSet: BooleanEncoder(), univ.BitString.tagSet: BitStringEncoder(), univ.OctetString.tagSet: OctetStringEncoder(), # Set & SetOf have same tags univ.SetOf().tagSet: SetOfEncoder() }) class Encoder(encoder.Encoder): def __call__(self, client, defMode=0, maxChunkSize=0): return encoder.Encoder.__call__(self, client, defMode, maxChunkSize) encode = Encoder(codecMap) # EncoderFactory queries class instance and builds a map of tags -> encoders PKW=/pyasn1/codec/cer/__init__.pyc; [Bc@sdS(N((((s7build/bdist.linux-i686/egg/pyasn1/codec/cer/__init__.pys?sPKW=}pyasn1/codec/cer/encoder.pyc; n@Cc@sdkZdklZdklZdeifdYZdeifdYZdeifdYZd ei fd YZ ei i Z e i heiie<eiie<eiie<eiie <d eifd YZee ZdS( 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(NcCs5tt|d|it|d|iSdS(NsgetMinimalTagSet(scmpsgetattrsc1s getTagSetsc2(sselfsc1sc2((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pys_cmpSetComponents sc Cs`t|do|in|id} t|}t|dog}xf|djoX|d}||tjoqSn|i |||joqSn|i ||qSW|i |i x|D]}| ||||} qWn_g}x9|djo+|d}|i |||||qW|i ti|d} | dfSdS(NssetDefaultComponentsssgetDefaultComponentByPositionii(shasattrsclientssetDefaultComponentssverifySizeSpecs 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__Ps(s__name__s __module__s__call__(((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pysEncoderOs(sstrings pyasn1.typesunivspyasn1.codec.bersencodersIntegerEncodersBooleanEncodersBitStringEncodersOctetStringEncodersSequenceOfEncoders SetOfEncoderscodecMapscopysupdatesBooleanstagSets BitStrings OctetStringsSetOfsEncodersencode( sBooleanEncodersstringsunivsBitStringEncodersencodersEncodersencodescodecMapsOctetStringEncoders SetOfEncoder((s6build/bdist.linux-i686/egg/pyasn1/codec/cer/encoder.pys?s    'XPKsW2pyasn1/codec/cer/__init__.pyPKr) 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.append((o>>j)&0x01) j = j - 1 p = p + 1 return r.clone(tuple(b)), '' if r: r = r.clone(value=()) if not decodeFun: return r, substrate while substrate: component, substrate = decodeFun(substrate) r = r + component return r, substrate def indefLenValueDecoder(self, substrate, asn1Spec, tagSet, length, state, decodeFun): r = self._createComponent(tagSet, asn1Spec) # XXX use default tagset if r: r = r.clone(value='') 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(AbstractDecoder): protoComponent = univ.OctetString('') def valueDecoder(self, substrate, asn1Spec, tagSet, length, state, decodeFun): r = self._createComponent(tagSet, asn1Spec) # XXX use default tagset if tagSet[0][1] == tag.tagFormatSimple: # XXX what tag to check? return r.clone(str(substrate)), '' if r: r = r.clone(value='') if not decodeFun: return r, substrate while substrate: component, substrate = decodeFun(substrate) r = r + component return r, substrate def indefLenValueDecoder(self, substrate, asn1Spec, tagSet, length, state, decodeFun): r = self._createComponent(tagSet, asn1Spec) # XXX use default tagset if r: r = r.clone(value='') 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(AbstractDecoder): protoComponent = univ.Null('') def valueDecoder(self, substrate, asn1Spec, tagSet, length, state, decodeFun): r = self._createComponent(tagSet, asn1Spec) # XXX use default tagset if substrate: raise error.PyAsn1Error('Unexpected substrate for Null') return r, substrate class ObjectIdentifierDecoder(AbstractDecoder): protoComponent = univ.ObjectIdentifier(()) def valueDecoder(self, substrate, asn1Spec, tagSet, length, state, decodeFun): r = self._createComponent(tagSet, asn1Spec) # XXX use default tagset if not substrate: raise error.PyAsn1Error('Empty substrate') oid = []; index = 0 # Get the first subid subId = ord(substrate[index]) oid.append(int(subId / 40)) oid.append(int(subId % 40)) index = index + 1 substrateLen = len(substrate) while index < substrateLen: subId = ord(substrate[index]) if subId < 128: oid.append(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.append(subId) index = index + 1 return r.clone(tuple(oid)), substrate[index:] class SequenceDecoder(AbstractDecoder): protoComponent = univ.Sequence() def _getAsn1SpecByPosition(self, t, idx): if t.getComponentType() is not None: if hasattr(t, 'getComponentTypeMapNearPosition'): return t.getComponentTypeMapNearPosition(idx) # Sequence elif hasattr(t, 'getComponentType'): # XXX return t.getComponentType() # SequenceOf # or no asn1Specs def _getPositionByType(self, t, c, idx): if t.getComponentType() is not None: if hasattr(t, 'getComponentPositionNearType'): effectiveTagSet = getattr( c, 'getEffectiveTagSet', c.getTagSet )() return t.getComponentPositionNearType(effectiveTagSet, idx) # Sequence return idx # SequenceOf or w/o asn1Specs def valueDecoder(self, substrate, asn1Spec, tagSet, length, state, decodeFun): r = self._createComponent(tagSet, asn1Spec) idx = 0 if not decodeFun: return r, substrate while substrate: asn1Spec = self._getAsn1SpecByPosition(r, idx) component, substrate = decodeFun( substrate, asn1Spec ) idx = self._getPositionByType(r, component, idx) r.setComponentByPosition(idx, component) idx = idx + 1 if hasattr(r, 'setDefaultComponents'): r.setDefaultComponents() r.verifySizeSpec() return r, substrate def indefLenValueDecoder(self, substrate, asn1Spec, tagSet, length, state, decodeFun): r = self._createComponent(tagSet, asn1Spec) idx = 0 while substrate: try: asn1Spec = self._getAsn1SpecByPosition(r, idx) except error.PyAsn1Error: asn1Spec = None # XXX if not decodeFun: return r, substrate component, substrate = decodeFun(substrate, asn1Spec) if component == eoo.endOfOctets: break idx = self._getPositionByType(r, component, idx) r.setComponentByPosition(idx, component) idx = idx + 1 else: raise error.SubstrateUnderrunError( 'No EOO seen before substrate ends' ) if hasattr(r, 'setDefaultComponents'): r.setDefaultComponents() r.verifySizeSpec() return r, substrate class SetDecoder(SequenceDecoder): protoComponent = univ.Set() def _getAsn1SpecByPosition(self, t, idx): if t.getComponentType() is not None: if hasattr(t, 'getComponentTypeMap'): return t.getComponentTypeMap() # Set/SetOf # or no asn1Specs def _getPositionByType(self, t, c, idx): if t.getComponentType() is not None: if hasattr(t,'getComponentPositionByType') and t.getComponentType(): effectiveTagSet = getattr( c, 'getEffectiveTagSet', c.getTagSet )() return t.getComponentPositionByType(effectiveTagSet) # Set return idx # SetOf or w/o asn1Specs class ChoiceDecoder(AbstractDecoder): protoComponent = univ.Choice() def valueDecoder(self, substrate, asn1Spec, tagSet, length, state, decodeFun): r = self._createComponent(tagSet, asn1Spec) if not decodeFun: return r, substrate if r.getTagSet() == tagSet: # explicitly tagged Choice component, substrate = decodeFun( substrate, r.getComponentTypeMap() ) else: component, substrate = decodeFun( substrate, r.getComponentTypeMap(), tagSet, length, state ) effectiveTagSet = getattr( component, 'getEffectiveTagSet', component.getTagSet )() r.setComponentByType(effectiveTagSet, component) return r, substrate indefLenValueDecoder = valueDecoder # 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() codecMap = { 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.Sequence.tagSet: SequenceDecoder(), univ.Set.tagSet: SetDecoder(), univ.Choice.tagSet: ChoiceDecoder(), # 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() } ( stDecodeTag, stDecodeLength, stGetValueDecoder, stGetValueDecoderByAsn1Spec, stGetValueDecoderByTag, stTryAsExplicitTag, stDecodeValue, stDumpRawValue, stErrorCondition, stStop ) = range(10) class Decoder: defaultErrorState = stErrorCondition defaultRawDecoder = OctetStringDecoder() def __init__(self, codecMap): self.__codecMap = codecMap def __call__(self, substrate, asn1Spec=None, tagSet=None, length=None, state=stDecodeTag, recursiveFlag=1): # Decode tag & length while state != stStop: if state == stDecodeTag: # Decode tag if not substrate: raise error.SubstrateUnderrunError( 'Short octet stream on tag decoding' ) t = ord(substrate[0]) tagClass = t&0xC0 tagFormat = t&0x20 tagId = t&0x1F substrate = substrate[1:] 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 tagSet is None: tagSet = tag.TagSet((), lastTag) # base tag not recovered 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: concreteDecoder = self.__codecMap.get(tagSet) if concreteDecoder: state = stDecodeValue else: concreteDecoder = self.__codecMap.get(tagSet[:1]) if concreteDecoder: state = stDecodeValue else: state = stTryAsExplicitTag if state == stGetValueDecoderByAsn1Spec: if tagSet == eoo.endOfOctets.getTagSet(): concreteDecoder = self.__codecMap[tagSet] state = stDecodeValue continue if type(asn1Spec) == types.DictType: __chosenSpec = asn1Spec.get(tagSet) elif asn1Spec is not None: __chosenSpec = asn1Spec else: __chosenSpec = None if __chosenSpec is None or not\ __chosenSpec.getTypeMap().has_key(tagSet): state = stTryAsExplicitTag else: # use base type for codec lookup to recover untagged types baseTag = __chosenSpec.getTagSet().getBaseTag() if baseTag: # XXX ugly baseTagSet = tag.TagSet(baseTag, baseTag) else: baseTagSet = tag.TagSet() concreteDecoder = self.__codecMap.get( # tagged subtype baseTagSet ) if concreteDecoder: asn1Spec = __chosenSpec 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 state = stDecodeTag else: state = self.defaultErrorState if state == stDecodeValue: if recursiveFlag: decodeFun = self else: decodeFun = None if length == -1: # indef length value, substrate = concreteDecoder.indefLenValueDecoder( substrate, asn1Spec, tagSet, length, stGetValueDecoder, decodeFun ) else: value, _substrate = concreteDecoder.valueDecoder( substrate[:length], asn1Spec, tagSet, length, stGetValueDecoder, decodeFun ) if recursiveFlag: substrate = substrate[length:] else: substrate = _substrate state = stStop if state == stDumpRawValue: concreteDecoder = self.defaultRawDecoder state = stDecodeValue if state == stErrorCondition: raise error.PyAsn1Error( '%s not in asn1Spec: %s' % (tagSet, asn1Spec) ) return value, substrate decode = Decoder(codecMap) # XXX # non-recursive decoding; return position rather than substrate PKW=z%~aaapyasn1/codec/ber/decoder.pyc; fHKc @sRdkZdklZlZlZlZdklZdkl Z dfdYZ de fdYZ de fd YZ d e fd YZ d e fd YZde fdYZde fdYZde fdYZde fdYZdefdYZde fdYZdefdYZdefdYZdefdYZd efd!YZd"efd#YZd$efd%YZd&efd'YZd(efd)YZd*efd+YZd,efd-YZd.efd/YZd0efd1YZ d2efd3YZ!hei"i#e <ei$i#e <ei%i#e <ei&i#e<ei'i#e<ei(i#e<ei)i#e<ei*i#e <ei+i#e<ei,i#e<ei-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!Z?Z@ZAZBZCZDZEZFd5fd6YZGeGe;ZHdS(7N(stagsunivscharsuseful(seoo(serrorsAbstractDecodercBs)tZeZdZdZdZRS(NcCs2|tjo|iid|Sn |iSdS(NstagSet(sasn1SpecsNonesselfsprotoComponentsclonestagSet(sselfstagSetsasn1Spec((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys_createComponent s cCstid|dS(NsDecoder not implemented for %s(serrors PyAsn1ErrorstagSet(sselfs substratesasn1SpecstagSetslengthsstates decodeFun((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoderscCstid|dS(Ns5Indefinite length mode decoder not implemented for %s(serrors PyAsn1ErrorstagSet(sselfs substratesasn1SpecstagSetslengthsstates decodeFun((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysindefLenValueDecoders(s__name__s __module__sNonesprotoComponents_createComponents valueDecodersindefLenValueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysAbstractDecoders  sEndOfOctetsDecodercBstZdZRS(NcCsti|fSdS(N(seoos endOfOctetss substrate(sselfs substratesasn1SpecstagSetslengthsstates decodeFun((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoders(s__name__s __module__s valueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysEndOfOctetsDecoderssIntegerDecodercBs)tZeidZdZdZRS(NicCs,yt|SWntj o |SnXdS(N(sintsvalues OverflowError(sselfsvalue((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys _valueFiltersc Cs| otidntt|}|dd@o d} nd} x|D]}| d>|B} qPW|i | } |i ||i | |fSdS(NsEmpty substrateiilli(s substrateserrors PyAsn1Errorsmapsordsoctetssvaluesoctetsselfs _valueFilters_createComponentstagSetsasn1Specsclone( sselfs substratesasn1SpecstagSetslengthsstates decodeFunsoctetsoctetssvalue((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoder$s (s__name__s __module__sunivsIntegersprotoComponents _valueFilters valueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysIntegerDecoders sBooleanDecodercBs tZeidZdZRS(NicCs|odSndSdS(Nii(svalue(sselfsvalue((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys _valueFilter4s(s__name__s __module__sunivsBooleansprotoComponents _valueFilter(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysBooleanDecoder2ssBitStringDecodercBs)tZeifZdZdZRS(NcCs|i||} |ddtijo| oti dnt |d}|djoti d|n|d}d}} t|d} g}x}| | joo| | jo |}nd} t || }x1| |jo#|i|| ?d@| d} qW| d} qW| it|dfSn| o| idf} n| o| |fSnx(|o ||\} }| | } qvW| |fSdS(NiisMissing initial octetisTrailing bits overflow %sssvalue(sselfs_createComponentstagSetsasn1SpecsrstagstagFormatSimples substrateserrors PyAsn1Errorsords trailingBitsslsbspslenslsbsjsosappendsclonestuples decodeFuns component(sselfs substratesasn1SpecstagSetslengthsstates decodeFunsosbs componentsjslspsrs trailingBitsslsb((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoder<s<       c Cs|i||}|o|idd}n| o||fSnxL|o5||\}}|t i joPn||}qHWt i d||fSdS(Nsvaluess!No EOO seen before substrate ends( sselfs_createComponentstagSetsasn1Specsrsclones decodeFuns substrates componentseoos endOfOctetsserrorsSubstrateUnderrunError( sselfs substratesasn1SpecstagSetslengthsstates decodeFuns componentsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysindefLenValueDecoder[s(s__name__s __module__sunivs BitStringsprotoComponents valueDecodersindefLenValueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysBitStringDecoder:s sOctetStringDecodercBs)tZeidZdZdZRS(Nsc Cs|i||}|ddtijo|it|dfSn|o|idd}n| o||fSnx(|o ||\}}||}q}W||fSdS(Niissvalue( sselfs_createComponentstagSetsasn1SpecsrstagstagFormatSimplesclonesstrs substrates decodeFuns component( sselfs substratesasn1SpecstagSetslengthsstates decodeFuns componentsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecodernsc Cs|i||}|o|idd}n| o||fSnxL|o5||\}}|t i joPn||}qHWt i d||fSdS(Nsvaluess!No EOO seen before substrate ends( sselfs_createComponentstagSetsasn1Specsrsclones decodeFuns substrates componentseoos endOfOctetsserrorsSubstrateUnderrunError( sselfs substratesasn1SpecstagSetslengthsstates decodeFuns componentsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysindefLenValueDecoder{s(s__name__s __module__sunivs OctetStringsprotoComponents valueDecodersindefLenValueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysOctetStringDecoderls s NullDecodercBs tZeidZdZRS(NscCs:|i||}|otidn||fSdS(NsUnexpected substrate for Null(sselfs_createComponentstagSetsasn1Specsrs substrateserrors PyAsn1Error(sselfs 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|i||} | otidng}d}t ||} |i t | d|i t | d|d}t|} x|| jot ||} | djo|i | |d}q| } d} xK| djo || jo0| d>| d@} |d}t ||} qW|| jotid|n| d>| } |i | |d}qW| it|||fSdS( NsEmpty substrateii(iiiisShort substrate for OID %s(sselfs_createComponentstagSetsasn1Specsrs substrateserrors PyAsn1ErrorsoidsindexsordssubIdsappendsintslens substrateLens nextSubIdsSubstrateUnderrunErrorsclonestuple( sselfs substratesasn1SpecstagSetslengthsstates decodeFunsindexsoidssubIdsrs substrateLens nextSubId((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoders8         (s__name__s __module__sunivsObjectIdentifiersprotoComponents valueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysObjectIdentifierDecoderssSequenceDecodercBs8tZeiZdZdZdZdZRS(NcCsZ|itj oCt|do|i|SqVt|do|iSqVndS(NsgetComponentTypeMapNearPositionsgetComponentType(stsgetComponentTypesNoneshasattrsgetComponentTypeMapNearPositionsidx(sselfstsidx((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys_getAsn1SpecByPositions cCs[|itj o@t|do,t|d|i}|i||SqSn|SdS(NsgetComponentPositionNearTypesgetEffectiveTagSet( stsgetComponentTypesNoneshasattrsgetattrscs getTagSetseffectiveTagSetsgetComponentPositionNearTypesidx(sselfstscsidxseffectiveTagSet((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys_getPositionByTypes c Cs|i||} d}| o| |fSnxb|oZ|i| |}|||\}}|i | ||}| i |||d}q1Wt | do| i n| i| |fSdS(NiissetDefaultComponents(sselfs_createComponentstagSetsasn1Specsrsidxs decodeFuns substrates_getAsn1SpecByPositions components_getPositionByTypessetComponentByPositionshasattrssetDefaultComponentssverifySizeSpec( sselfs substratesasn1SpecstagSetslengthsstates decodeFunsidxs componentsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoders c Cs|i||} d}x|oy|i| |}Wnti j o t }nX| o| |fSn|||\}}|t ijoPn|i| ||}| i|||d}qWtidt| do| in| i| |fSdS(Niis!No EOO seen before substrate endsssetDefaultComponents(sselfs_createComponentstagSetsasn1Specsrsidxs substrates_getAsn1SpecByPositionserrors PyAsn1ErrorsNones decodeFuns componentseoos endOfOctetss_getPositionByTypessetComponentByPositionsSubstrateUnderrunErrorshasattrssetDefaultComponentssverifySizeSpec( sselfs substratesasn1SpecstagSetslengthsstates decodeFunsidxs componentsr((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysindefLenValueDecoders*  ( s__name__s __module__sunivsSequencesprotoComponents_getAsn1SpecByPositions_getPositionByTypes valueDecodersindefLenValueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysSequenceDecoders    s SetDecodercBs&tZeiZdZdZRS(NcCs9|itj o"t|do|iSq5ndS(NsgetComponentTypeMap(stsgetComponentTypesNoneshasattrsgetComponentTypeMap(sselfstsidx((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys_getAsn1SpecByPositionscCse|itj oJt|do |io)t|d|i}|i|Sq]n|SdS(NsgetComponentPositionByTypesgetEffectiveTagSet( stsgetComponentTypesNoneshasattrsgetattrscs getTagSetseffectiveTagSetsgetComponentPositionByTypesidx(sselfstscsidxseffectiveTagSet((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys_getPositionByTypes (s__name__s __module__sunivsSetsprotoComponents_getAsn1SpecByPositions_getPositionByType(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys SetDecoders  s ChoiceDecodercBs#tZeiZdZeZRS(Nc Cs|i||}| o||fSn|i|jo|||i\}}n%|||i|||\}}t |d|i} |i| |||fSdS(NsgetEffectiveTagSet(sselfs_createComponentstagSetsasn1Specsrs decodeFuns substrates getTagSetsgetComponentTypeMaps componentslengthsstatesgetattrseffectiveTagSetssetComponentByType( sselfs substratesasn1SpecstagSetslengthsstates decodeFuns componentsrseffectiveTagSet((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys valueDecoder s$(s__name__s __module__sunivsChoicesprotoComponents valueDecodersindefLenValueDecoder(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys ChoiceDecoder s  sUTF8StringDecodercBstZeiZRS(N(s__name__s __module__schars UTF8StringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysUTF8StringDecoder"ssNumericStringDecodercBstZeiZRS(N(s__name__s __module__schars NumericStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysNumericStringDecoder$ssPrintableStringDecodercBstZeiZRS(N(s__name__s __module__scharsPrintableStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysPrintableStringDecoder&ssTeletexStringDecodercBstZeiZRS(N(s__name__s __module__schars TeletexStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysTeletexStringDecoder(ssVideotexStringDecodercBstZeiZRS(N(s__name__s __module__scharsVideotexStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysVideotexStringDecoder*ssIA5StringDecodercBstZeiZRS(N(s__name__s __module__schars IA5StringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysIA5StringDecoder,ssGraphicStringDecodercBstZeiZRS(N(s__name__s __module__schars GraphicStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysGraphicStringDecoder.ssVisibleStringDecodercBstZeiZRS(N(s__name__s __module__schars VisibleStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysVisibleStringDecoder0ssGeneralStringDecodercBstZeiZRS(N(s__name__s __module__schars GeneralStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysGeneralStringDecoder2ssUniversalStringDecodercBstZeiZRS(N(s__name__s __module__scharsUniversalStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysUniversalStringDecoder4ssBMPStringDecodercBstZeiZRS(N(s__name__s __module__schars BMPStringsprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysBMPStringDecoder6ssGeneralizedTimeDecodercBstZeiZRS(N(s__name__s __module__susefulsGeneralizedTimesprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysGeneralizedTimeDecoder:ssUTCTimeDecodercBstZeiZRS(N(s__name__s __module__susefulsUTCTimesprotoComponent(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysUTCTimeDecoder<si sDecodercBs8tZeZeZdZeeeeddZ RS(NcCs ||_dS(N(scodecMapsselfs_Decoder__codecMap(sselfscodecMap((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys__init__csicCsx|tjo|tjo&| otidnt|d}|d@} |d@} |d@}|d}|djoqd}xhno\| otidnt|d}|d >|d @B}|d}|d @ oPqqWnt i d | d | d|} |tjot if| }n | |}t}n|tjoI| otidnt|d}|d jod} d}n|d jo|df\}} n|d @} d}|d| d!}t|| jo&tid| t||fnx"|D]} |d>t| B}qW| d} t}|| }|djot||jo!tid|t|qn|tjo!|tjo t}qt}n|tjoT|ii|}|o t }q(|ii|d }|o t }q(t!}n|tjo|t"i#i$jo|i|}t }qnt%|t&i'jo|i|}n|tj o |}nt}|tjp|i)i*| o t!}qG|i$i+}|ot i||}n t i}|ii|}|o|}t }qGt!}n|t!joN|o-|ddt i.jo|ddt i/jo t}q|i0}n|t jo|o |}nt}|djo(|i3||||t|\}}nD|i5|| |||t|\}}|o||}n|}t}n|t7jo|i8}t }n|t9joti:d||fqqW||fSdS(Ns"Short octet stream on tag decodingiii iils'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(;sstatesstStops stDecodeTags substrateserrorsSubstrateUnderrunErrorsordststagClasss tagFormatstagIdstagsTagslastTagstagSetsNonesTagSetsstDecodeLengths firstOctetssizeslengths lengthStringslenscharsstGetValueDecodersasn1SpecsstGetValueDecoderByTagsstGetValueDecoderByAsn1Specsselfs_Decoder__codecMapsgetsconcreteDecoders stDecodeValuesstTryAsExplicitTagseoos endOfOctetss getTagSetstypestypessDictTypes_Decoder__chosenSpecs getTypeMapshas_keys getBaseTagsbaseTags baseTagSetstagFormatConstructedstagClassUniversalsdefaultErrorStates recursiveFlags decodeFunsindefLenValueDecodersvalues valueDecoders _substratesstDumpRawValuesdefaultRawDecodersstErrorConditions PyAsn1Error(sselfs substratesasn1SpecstagSetslengthsstates recursiveFlagsbaseTags decodeFunscharslastTagssizestagClasss tagFormatsconcreteDecoders_Decoder__chosenSpecstagIds firstOctetsvalues baseTagSets lengthStringsts _substrate((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys__call__es                 &   %            $     7          "( s__name__s __module__sstErrorConditionsdefaultErrorStatesOctetStringDecodersdefaultRawDecoders__init__sNones stDecodeTags__call__(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pysDecoder`s  (Istypess pyasn1.typestagsunivscharsusefulspyasn1.codec.berseoospyasn1serrorsAbstractDecodersEndOfOctetsDecodersIntegerDecodersBooleanDecodersBitStringDecodersOctetStringDecoders NullDecodersObjectIdentifierDecodersSequenceDecoders SetDecoders ChoiceDecodersUTF8StringDecodersNumericStringDecodersPrintableStringDecodersTeletexStringDecodersVideotexStringDecodersIA5StringDecodersGraphicStringDecodersVisibleStringDecodersGeneralStringDecodersUniversalStringDecodersBMPStringDecodersGeneralizedTimeDecodersUTCTimeDecoders endOfOctetsstagSetsIntegersBooleans BitStrings OctetStringsNullsObjectIdentifiers EnumeratedsSequencesSetsChoices UTF8Strings NumericStringsPrintableStrings TeletexStringsVideotexStrings IA5Strings GraphicStrings VisibleStrings GeneralStringsUniversalStrings BMPStringsGeneralizedTimesUTCTimescodecMapsranges stDecodeTagsstDecodeLengthsstGetValueDecodersstGetValueDecoderByAsn1SpecsstGetValueDecoderByTagsstTryAsExplicitTags stDecodeValuesstDumpRawValuesstErrorConditionsstStopsDecodersdecode(,sEndOfOctetsDecodersusefulsGeneralStringDecodersSequenceDecodersNumericStringDecoderscharsObjectIdentifierDecodersIA5StringDecodersBooleanDecodersunivs SetDecoders NullDecodersIntegerDecodersstTryAsExplicitTagsUTF8StringDecodersOctetStringDecodersstGetValueDecoderByTagsstGetValueDecodersstGetValueDecoderByAsn1SpecsstDecodeLengthsAbstractDecodersdecodesBMPStringDecodersDecoderscodecMapsstErrorConditionsUTCTimeDecoders stDecodeValuesGeneralizedTimeDecodersstDumpRawValuesstStopsTeletexStringDecodersVideotexStringDecodersBitStringDecoderstypessPrintableStringDecoders stDecodeTagsVisibleStringDecoderseoosGraphicStringDecoders ChoiceDecoderstagserrorsUniversalStringDecoder((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/decoder.pys?s@   2  &?*PKt; Hڡ%%pyasn1/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): v = t[0]|t[1] if isConstructed: v = v|tag.tagFormatConstructed if t[2] < 31: return chr(v|t[2]) else: longTag = t[2] s = chr(longTag&0x7f) longTag = longTag >> 7 while longTag: s = chr(0x80|(longTag&0x7f)) + s longTag = longTag >> 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 if len(substrate) > 126: raise Error('Length octets overflow (%d)' % len(substrate)) return chr(0x80 | len(substrate)) + 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 def _encodeValue(self, encodeFun, value, defMode, maxChunkSize): oid = tuple(value) 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 0 > 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.append(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.insert(0, chr(0x80 | (subid & 0x7f))) subid = subid >> 7 # Convert packed Sub-Object ID to string and add packed # it to resulted Object ID octets.append(string.join(res, '')) return string.join(octets, ''), 0 class SequenceOfEncoder(AbstractItemEncoder): def _encodeValue(self, encodeFun, value, defMode, maxChunkSize): if hasattr(value, 'setDefaultComponents'): value.setDefaultComponents() value.verifySizeSpec() substrate = ''; idx = len(value) while idx > 0: idx = idx - 1 if value[idx] is None: # Optional component continue if hasattr(value, 'getDefaultComponentByPosition'): if value.getDefaultComponentByPosition(idx) == value[idx]: continue substrate = encodeFun( value[idx], defMode, maxChunkSize ) + substrate return substrate, 1 codecMap = { 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(), # Sequence & Set have same tags as SequenceOf & SetOf univ.SequenceOf.tagSet: SequenceOfEncoder(), univ.SetOf.tagSet: SequenceOfEncoder(), univ.Choice.tagSet: SequenceOfEncoder(), # 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() } class Encoder: def __init__(self, _codecMap): self.__codecMap = _codecMap self.__emptyTagSet = tag.TagSet() def __call__(self, value, defMode=1, maxChunkSize=0): tagSet = value.getTagSet() if len(tagSet) > 1: concreteEncoder = explicitlyTaggedItemEncoder else: concreteEncoder = self.__codecMap.get(tagSet) if not concreteEncoder: # XXX baseTagSet = tagSet.getBaseTag() if baseTagSet: concreteEncoder = self.__codecMap.get( tag.TagSet(baseTagSet, baseTagSet) ) else: concreteEncoder = self.__codecMap.get( self.__emptyTagSet ) if concreteEncoder: return concreteEncoder.encode( self, value, defMode, maxChunkSize ) else: raise Error('No encoder for %s' % value) encode = Encoder(codecMap) PKW=OÇpyasn1/codec/ber/__init__.pyc; [Bc@sdS(N((((s7build/bdist.linux-i686/egg/pyasn1/codec/ber/__init__.pys?sPKW=.22pyasn1/codec/ber/encoder.pyc; |ZKc@sdkZdklZlZlZlZlZdklZdk l Z de fdYZ dfdYZ de fd YZd e fd YZeZd e fd YZde fdYZde fdYZde fdYZde fdYZde fdYZheiie<eiie<eiie<eiie<eiie<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/ieWt|djotdt|ntdt|B|SdS(Nsisiii~sLength octets overflow (%d)(sdefModesselfssupportIndefLenModeslengthschrs substrateslensError(sselfslengthsdefModes substrate((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.pysencode1s  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 _encodeValueBs(s__name__s __module__s _encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysEndOfOctetsEncoderAssExplicitlyTaggedItemEncodercBstZdZRS(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 _encodeValueFs (s__name__s __module__s _encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysExplicitlyTaggedItemEncoderEssIntegerEncodercBstZdZdZRS(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 _encodeValueRs _ (s__name__s __module__ssupportIndefLenModes _encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysIntegerEncoderPssBitStringEncodercBstZdZRS(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.pyslss(s maxChunkSizeslensvaluesrslspsjsdivmodsisgetskeysssortschrsstringsjoinsmapsposs substratesclonesvs encodeFunsdefMode(sselfs encodeFunsvaluesdefModes maxChunkSizesvsisjslsposspsrskeyss substrate((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys _encodeValuecs$ &7 &(s__name__s __module__s _encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysBitStringEncoderbssOctetStringEncodercBstZdZRS(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 _encodeValuezs (s__name__s __module__s _encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysOctetStringEncoderyss 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 NullEncoderssObjectIdentifierEncodercBstZdZdZRS(Nic Cst|}t|djotid|nd}||d} | ||d} d| jo djno!tid|||fnt| g}|d}x||D]} | djo | d jo|i t| d @q| djp | d jotid | |fqt| d @g}| d ?} x:| djo,|i dtd | d @B| d ?} qQW|i t i|dqWt i|ddfSdS(Nis Short OID %sii(iis$Initial sub-ID overflow %s in OID %siiilsSubId overflow %s in %sis(stuplesvaluesoidslenserrors PyAsn1Errorsindexssubidschrsoctetssappendsressinsertsstringsjoin( sselfs encodeFunsvaluesdefModes maxChunkSizesindexsressoidsoctetsssubid((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys _encodeValues0 !    (s__name__s __module__ssupportIndefLenModes _encodeValue(((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pysObjectIdentifierEncoderssSequenceOfEncodercBstZdZRS(NcCst|do|in|id}t|}x|djou|d}||tjoq=nt|do%|i|||joq=qn||||||}q=W|dfSdS(NssetDefaultComponentssiisgetDefaultComponentByPosition( shasattrsvaluessetDefaultComponentssverifySizeSpecs substrateslensidxsNonesgetDefaultComponentByPositions encodeFunsdefModes maxChunkSize(sselfs encodeFunsvaluesdefModes maxChunkSizesidxs substrate((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.pysSequenceOfEncoderssEncodercBs tZdZdddZRS(NcCs||_ti|_dS(N(s _codecMapsselfs_Encoder__codecMapstagsTagSets_Encoder__emptyTagSet(sselfs _codecMap((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys__init__s iicCs|i}t|djo t}ni|ii|}| oN|i }|o"|iit i ||}q|ii|i }n|o|i||||Sntd|dS(NisNo encoder for %s(svalues getTagSetstagSetslensexplicitlyTaggedItemEncodersconcreteEncodersselfs_Encoder__codecMapsgets getBaseTags baseTagSetstagsTagSets_Encoder__emptyTagSetsencodesdefModes maxChunkSizesError(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.pysEncoders (3sstrings pyasn1.typesbasestagsunivscharsusefulspyasn1.codec.berseoospyasn1serrors ExceptionsErrorsAbstractItemEncodersEndOfOctetsEncodersExplicitlyTaggedItemEncodersexplicitlyTaggedItemEncodersIntegerEncodersBitStringEncodersOctetStringEncoders NullEncodersObjectIdentifierEncodersSequenceOfEncoders endOfOctetsstagSetsBooleansIntegers BitStrings OctetStringsNullsObjectIdentifiers Enumerateds SequenceOfsSetOfsChoices UTF8Strings NumericStringsPrintableStrings TeletexStringsVideotexStrings IA5Strings GraphicStrings VisibleStrings GeneralStringsUniversalStrings BMPStringsGeneralizedTimesUTCTimescodecMapsEncodersencode(susefulseooscharstagsExplicitlyTaggedItemEncodersSequenceOfEncodersEndOfOctetsEncodersOctetStringEncodersunivsObjectIdentifierEncodersEncodersencodescodecMapsstrings NullEncodersexplicitlyTaggedItemEncodersBitStringEncodersbasesErrorsIntegerEncodersAbstractItemEncoderserror((s6build/bdist.linux-i686/egg/pyasn1/codec/ber/encoder.pys?s$ %  8 '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() PKW=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__.pyPKsW2P3zpyasn1/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) ) PKW=䰤""pyasn1/type/tag.pyc; ~Fc@sydklZWnej oddfZnXdklZdklZdklZdk l Z dZ dZ dZ dZdZd Zd Zd Zd Zd fdYZdfdYZdZdS((s version_infoi(sgetslice(s SliceType(sjoin(serrori@iii iiisTagcBsYtZdZdZdZdZdZdZdZdZ d Z RS( NcCs[|djotid|n|||f|_||f|_t|i|_ dS(Nis Negative tag ID (%s) not allowed( stagIdserrors PyAsn1ErrorstagClasss tagFormatsselfs _Tag__tags _Tag__uniqTagshashs_Tag__hashedUniqTag(sselfstagClasss tagFormatstagId((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__init__s  cCsd|iif|iSdS(Ns'%s(tagClass=%s, tagFormat=%s, tagId=%s)(sselfs __class__s__name__s _Tag__tag(sself((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__repr__ scCst|i|SdS(N(scmpsselfs _Tag__uniqTagsother(sselfsother((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__cmp__$scCs||jp |i|jSdS(N(sselfsothers_Tag__hashedUniqTag(sselfsother((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__eq__%scCs||j o |i|jSdS(N(sselfsothers_Tag__hashedUniqTag(sselfsother((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__ne__'scCs |iSdS(N(sselfs_Tag__hashedUniqTag(sself((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__hash__)scCs|i|SdS(N(sselfs _Tag__tagsidx(sselfsidx((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys __getitem__*scCs;|\}}}|i|i|@|i|@|i|@SdS(N(stagClasss tagFormatstagIdsselfs __class__s _Tag__tag(sselfs.2stagClasss tagFormatstagId((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__and__+scCsG|\}}}|i|id|B|id|B|id|BSdS(Niii(stagClasss tagFormatstagIdsselfs __class__s _Tag__tag(sselfs.2stagClasss tagFormatstagId((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__or__/s( s__name__s __module__s__init__s__repr__s__cmp__s__eq__s__ne__s__hash__s __getitem__s__and__s__or__(((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pysTags        sTagSetcBstZfdZdZdZdZdZdZdZdZ e d d fjo d Z nd Z d Z dZdZdZdZRS(NcGs4||_||_t||_t||_dS(N( sbaseTagsselfs_TagSet__baseTags superTagss_TagSet__superTagsshashs_TagSet__hashedSuperTagsslens_TagSet__lenOfSuperTags(sselfsbaseTags superTags((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__init__5s  cCs0d|iittd|idfSdS(Ns%s(%s)cCs t|S(N(sreprsx(sx((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys>ss, (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__AscCs$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__EscCs^|\}}}|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 tagExplicitlyJs   cCsJ|\}}}|io!t||idd|}n|d |SdS(Nii(ssuperTagstagClasss tagFormatstagIdsselfs_TagSet__superTagssTag(sselfssuperTagstagClasss tagFormatstagId((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys tagImplicitlyTs !cCs |iSdS(N(sselfs_TagSet__baseTag(sself((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys getBaseTagZscCsUt|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  iicCs'|td|td|dSdS(Ni(sselfsmaxsisj(sselfsisj((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys __getslice__bscCst|i|SdS(N(scmpsselfs_TagSet__superTagssother(sselfsother((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__cmp__dscCs||jp |i|jSdS(N(sselfsothers_TagSet__hashedSuperTags(sselfsother((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__eq__escCs||j o |i|jSdS(N(sselfsothers_TagSet__hashedSuperTags(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__iscCs |iSdS(N(sselfs_TagSet__lenOfSuperTags(sself((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys__len__jscCsrt||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.pysisSuperTagSetOfks  (s__name__s __module__s__init__s__repr__s__add__s__radd__s tagExplicitlys tagImplicitlys getBaseTags __getitem__s version_infos __getslice__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 initTagSetusN(ssyss version_infos ImportErrorsoperatorsgetslicestypess SliceTypesstringsjoinspyasn1serrorstagClassUniversalstagClassApplicationstagClassContextstagClassPrivatestagFormatSimplestagFormatConstructedstagCategoryImplicitstagCategoryExplicitstagCategoryUntaggedsTagsTagSets initTagSet(sjoinsTagSets version_infosgetslicestagFormatConstructedstagCategoryImplicitstagCategoryExplicitstagClassApplicationsTags initTagSetstagClassContextserrorstagFormatSimplestagClassUniversalstagCategoryUntaggedstagClassPrivates SliceType((s-build/bdist.linux-i686/egg/pyasn1/type/tag.pys?s&    APK/2l pyasn1/type/namedtype.py# NamedType specification for constructed types 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.__minTagSet = None self.__typeMap = {}; self.__tagMap = {}; self.__nameMap = {} 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): if self.__namedTypes: return 1 else: return 0 def __len__(self): return len(self.__namedTypes) def getTypeByPosition(self, idx): try: return self.__namedTypes[idx].getType() except IndexError: raise error.PyAsn1Error('Type position out of range') def getPositionByType(self, tagSet): if not self.__tagMap: idx = len(self.__namedTypes) while idx > 0: idx = idx - 1 for t in self.__namedTypes[idx].getType().getTypeMap().keys(): if self.__tagMap.has_key(t): raise error.PyAsn1Error('Duplicate type %s' % t) self.__tagMap[t] = idx try: return self.__tagMap[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.__nameMap: idx = len(self.__namedTypes) while idx > 0: idx = idx - 1 n = self.__namedTypes[idx].getName() if self.__nameMap.has_key(n): raise error.PyAsn1Error('Duplicate name %s' % n) self.__nameMap[n] = idx try: return self.__nameMap[name] except KeyError: raise error.PyAsn1Error('Name %s not found' % name) def __buildAmbigiousTagMap(self): ambigiousTypes = () idx = len(self.__namedTypes) 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 getTypeMapNearPosition(self, idx): if not self.__ambigiousTypes: self.__buildAmbigiousTagMap() try: return self.__ambigiousTypes[idx].getTypeMap() 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 getTypeMap(self, uniq=None): if not self.__typeMap: for t in self.__namedTypes: __type = t.getType() typeMap = __type.getTypeMap() if uniq: for k in typeMap.keys(): if self.__typeMap.has_key(k): raise error.PyAsn1Error( 'Duplicate type %s in map %s'%(k,self.__typeMap) ) self.__typeMap[k] = __type else: for k in typeMap.keys(): self.__typeMap[k] = __type return self.__typeMap PKW=`VU4U4pyasn1/type/constraint.pyc; LdEc@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(sstrsx(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__#scCs1||jodpt|i|if|SdS(Ni(sselfsotherscmps __class__s_values(sselfsother((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys__cmp__)scCs+||jpt|i|if| SdS(N(sselfsotherscmps __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__1scCs ||_dS(N(svaluessselfs_values(sselfsvalues((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys _setValues5scCsti|dS(N(serrorsValueConstraintErrorsvalue(sselfsvaluesidx((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys _testValue6scCs |iSdS(N(sselfs _valueMap(sself((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys getValueMap:scCs1|ii|p||jp ||jSdS(N(sotherConstraints getValueMapshas_keysself(sselfsotherConstraint((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys isSuperTypeOf;scCs.|ii|p||jp ||jSdS(N(sselfs _valueMapshas_keysotherConstraint(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 _testValueDs(s__name__s __module__s__doc__s _testValue(((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pysSingleValueConstraintBs 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 _testValueKs (s__name__s __module__s__doc__s _testValue(((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pysContainedSubtypeConstraintIs 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 _testValueQs 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 _setValuesUs  ,(s__name__s __module__s__doc__s _testValues _setValues(((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pysValueRangeConstraintOs  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 _testValuefs  (s__name__s __module__s__doc__s _testValue(((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pysValueSizeConstraintds sPermittedAlphabetConstraintcBstZRS(N(s__name__s __module__(((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pysPermittedAlphabetConstraintkssInnerTypeConstraintcBs tZdZdZdZRS(s0Value must satisfy type and presense constraintscCs|io|i|ns|ioh|ii| oti|n|i|\}}|djoti|n||ndS(NsABSENT( sselfs*_InnerTypeConstraint__singleTypeConstraintsvalues,_InnerTypeConstraint__multipleTypeConstraintshas_keysidxserrorsValueConstraintErrors constraintsstatus(sselfsvaluesidxsstatuss constraint((s4build/bdist.linux-i686/egg/pyasn1/type/constraint.pys _testValueps   cCsyh|_t|_xP|D]H}t|tijo#|d|df|i|d= 0: if self.__superTags[idx] != tagSet[idx]: return idx = idx - 1 return 1 def initTagSet(tag): return TagSet(tag, tag) PKU4uzzpyasn1/type/base.py# Base classes for ASN.1 types try: from sys import version_info except ImportError: version_info = (0, 0) # a really early version from operator import getslice, setslice, delslice from string import join from types import SliceType from pyasn1.type import constraint 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() 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 getTypeMap(self): return { 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 def __repr__(self): if self._value is noValue: return self.__class__.__name__ + '()' else: return self.__class__.__name__ + '(' + repr( 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): if self._value: return 1 else: return 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 = [] def __repr__(self): r = self.__class__.__name__ + '()' for idx in range(len(self)): 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 getComponentTypeMap(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): raise error.PyAsn1Error('Method not implemented') def getComponentType(self): return self._componentType def __getitem__(self, idx): return self._componentValues[idx] def __len__(self): return len(self._componentValues) def clear(self): self._componentValues = [] PKt;&h{^{^pyasn1/type/univ.py# ASN.1 "universal" data types import string import types import operator from pyasn1.type import base, tag, constraint, namedtype, namedval from pyasn1 import error # "Simple" ASN.1 types (yet incomplete) class Integer(base.AbstractSimpleAsn1Item): tagSet = 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 ) #XXX def __coerce__(self, other): return long(self), long(other) 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 __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 __lshift__(self, value): return self.clone(self._value << value) def __rshift__(self, value): return self.clone(self._value >> 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 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 = 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 = 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): return len(self._value) 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.__mul__(value) # They won't be defined if version is at least 2.0 final if base.version_info < (2, 0): def __getslice__(self, i, j): return self[max(0, i):max(0, j):] def prettyIn(self, value): r = [] if not value: return () elif type(value) != types.StringType: return value elif value[0] == '\'': if value[-2:] == '\'B': for v in value[1:-2]: r.append(int(v)) 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) else: raise error.PyAsn1Error( 'Bad bitstring value notation %s' % value ) else: for i in string.split(value, ','): i = self.__namedValues.getValue(i) if i is None: raise error.PyAsn1Error( 'Unknown identifier \'%s\'' % i ) if i >= len(r): r.extend([0]*(i-len(r)+1)) r[i] = 1 return tuple(r) def prettyOut(self, value): return '\'%s\'B' % string.join(map(str, value), '') class OctetString(base.AbstractSimpleAsn1Item): tagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 0x04) ) def prettyOut(self, value): return str(value) def prettyIn(self, value): return str(value) # Immutable sequence object protocol def __len__(self): return len(self._value) 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.__mul__(value) # They won't be defined if version is at least 2.0 final if base.version_info < (2, 0): def __getslice__(self, i, j): return self[max(0, i):max(0, j):] class Null(OctetString): defaultValue = '' # This is tightly constrained tagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 0x05) ) subtypeSpec = OctetString.subtypeSpec+constraint.SingleValueConstraint('') class ObjectIdentifier(base.AbstractSimpleAsn1Item): tagSet = 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) # Sequence object protocol def __len__(self): return len(self._value) 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] # They won't be defined if version is at least 2.0 final if base.version_info < (2, 0): def __getslice__(self, i, j): return self[max(0, i):max(0, j):] 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._value) 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: return value if type(value) is not types.StringType: return tuple(value) 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) ) return tuple(r) 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): tagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 0x09) ) class Enumerated(Integer): tagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 0x0A) ) # "Structured" ASN.1 types class SetOf(base.AbstractConstructedAsn1Item): componentType = None tagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatConstructed, 0x11) ) 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): 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() 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 self._componentType is not None: self._verifyComponent(idx, value) self._verifySubtypeSpec(value, idx) self._componentValues[idx] = value return self def getComponentTypeMap(self): if self._componentType is not None: return self._componentType.getTypeMap() def prettyPrint(self, scope=0): scope = scope + 1 r = self.__class__.__name__ + ':\n' for idx in range(len(self._componentValues)): r = r + ' '*scope + self._componentValues[idx].prettyPrint(scope) return r class SequenceOf(SetOf): tagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatConstructed, 0x10) ) class SequenceAndSetBase(base.AbstractConstructedAsn1Item): componentType = namedtype.NamedTypes() 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): componentType = self._componentType if componentType: if idx >= len(componentType): raise error.PyAsn1Error( 'Component type error out of range' ) t = 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): return self.setComponentByPosition( self._componentType.getPositionByName(name), value ) def getComponentByPosition(self, idx): try: return self._componentValues[idx] except IndexError: if idx < len(self._componentType): return raise def setComponentByPosition(self, idx, value=None): 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() 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 self._componentType: self._verifyComponent(idx, value) self._verifySubtypeSpec(value, idx) self._componentValues[idx] = value return self def getDefaultComponentByPosition(self, idx): if self._componentType and self._componentType[idx].isDefaulted: return self._componentType[idx].getType() def getComponentType(self): if self._componentType: return self._componentType def setDefaultComponents(self): idx = len(self._componentType) 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 = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatConstructed, 0x10) ) def getComponentTypeMapNearPosition(self, idx): return self._componentType.getTypeMapNearPosition(idx) def getComponentPositionNearType(self, tagSet, idx): return self._componentType.getPositionNearType(tagSet, idx) class Set(SequenceAndSetBase): tagSet = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatConstructed, 0x11) ) def getComponentByType(self, tagSet, innerFlag=0): c = self.getComponentByPosition( self._componentType.getPositionByType(tagSet) ) if innerFlag and hasattr(c, 'getComponent'): # 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): idx = self._componentType.getPositionByType(tagSet) t = self._componentType.getTypeByPosition(idx) if innerFlag: # set inner component by inner tagSet if t.getTagSet(): self.setComponentByPosition(idx, value) else: t = self.setComponentByPosition(idx).getComponentByPosition(idx) t.setComponentByType(tagSet, value, innerFlag) else: # set outer component by inner tagSet self.setComponentByPosition(idx, value) def getComponentTypeMap(self): return self._componentType.getTypeMap(1) def getComponentPositionByType(self, tagSet): return self._componentType.getPositionByType(tagSet) class Choice(Set): tagSet = tag.TagSet() # untagged sizeSpec = constraint.ConstraintsIntersection( constraint.ValueSizeConstraint(1, 1) ) def __cmp__(self, other): if self._componentValues: return cmp(self._componentValues[self._currentIdx], other) return -1 def verifySizeSpec(self): self._sizeSpec( ' '*int(self.getComponent() is not None) # hackerish XXX ) def _cloneComponentValues(self, myClone, cloneValueFlag): try: c = self.getComponent() except error.PyAsn1Error: pass else: tagSet = getattr(c, 'getEffectiveTagSet', 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): l = len(self._componentValues) if idx >= l: self._componentValues = self._componentValues + (idx-l+1)*[None] if hasattr(self, '_currentIdx'): self._componentValues[self._currentIdx] = None if value is None: if self._componentValues[idx] is None: self._componentValues[idx] = self._componentType.getTypeByPosition(idx).clone() self._currentIdx = idx return self elif type(value) != types.InstanceType: value = self._componentType.getTypeByPosition(idx).clone( value=value ) if self._componentType: self._verifyComponent(idx, value) self._verifySubtypeSpec(value, idx) self._componentValues[idx] = value self._currentIdx = idx 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() return getattr(c, 'getEffectiveTagSet', c.getTagSet)() def getTypeMap(self): if self._tagSet: return Set.getTypeMap(self) else: return Set.getComponentTypeMap(self) def getComponent(self, innerFlag=0): if hasattr(self, '_currentIdx'): c = self._componentValues[self._currentIdx] if innerFlag and hasattr(c, 'getComponent'): return c.getComponent(innerFlag) else: return c else: raise error.PyAsn1Error('Component not chosen') def getName(self, innerFlag=0): if hasattr(self, '_currentIdx'): if innerFlag: c = self._componentValues[self._currentIdx] if hasattr(c, 'getComponent'): return c.getName(innerFlag) return self._componentType.getNameByPosition(self._currentIdx) else: raise error.PyAsn1Error('Component not chosen') def setDefaultComponents(self): pass # XXX # coercion rules? PKW=o¿) ) pyasn1/type/namedval.pyc; [Bc@s:dklZdklZdgZdfdYZdS((s TupleType(serrors NamedValuescBsYtZdZdZdZdZdZdZdZdZ d Z RS( NcGsh|_h|_f|_d}x|D]}t|tjo|\}}n |}|}|ii |ot i d|n||i|<|ii |ot i d|n||i|<|i||ff|_|d}q(WdS(NisDuplicate name %ssDuplicate value %s( sselfs nameToValIdxs valToNameIdxs namedValuess automaticVals namedValuestypes TupleTypesnamesvalshas_keyserrors PyAsn1Error(sselfs namedValuessnamesvals automaticVals namedValue((s2build/bdist.linux-i686/egg/pyasn1/type/namedval.pys__init__s"   cCst|iSdS(N(sstrsselfs namedValues(sself((s2build/bdist.linux-i686/egg/pyasn1/type/namedval.pys__str__scCs|ii|SdS(N(sselfs valToNameIdxsgetsvalue(sselfsvalue((s2build/bdist.linux-i686/egg/pyasn1/type/namedval.pysgetNamescCs|ii|SdS(N(sselfs nameToValIdxsgetsname(sselfsname((s2build/bdist.linux-i686/egg/pyasn1/type/namedval.pysgetValuescCs|i|SdS(N(sselfs namedValuessi(sselfsi((s2build/bdist.linux-i686/egg/pyasn1/type/namedval.pys __getitem__scCst|iSdS(N(slensselfs namedValues(sself((s2build/bdist.linux-i686/egg/pyasn1/type/namedval.pys__len__ scCst|i|i|SdS(N(sapplysselfs __class__s namedValues(sselfs namedValues((s2build/bdist.linux-i686/egg/pyasn1/type/namedval.pys__add__"scCst|i|t|SdS(N(sapplysselfs __class__s namedValuesstuple(sselfs namedValues((s2build/bdist.linux-i686/egg/pyasn1/type/namedval.pys__radd__$scGst|it||SdS(N(sapplysselfs __class__stuples namedValues(sselfs namedValues((s2build/bdist.linux-i686/egg/pyasn1/type/namedval.pysclone's( s__name__s __module__s__init__s__str__sgetNamesgetValues __getitem__s__len__s__add__s__radd__sclone(((s2build/bdist.linux-i686/egg/pyasn1/type/namedval.pys NamedValuess        N(stypess TupleTypespyasn1serrors__all__s NamedValues(s NamedValuess TupleTypes__all__serror((s2build/bdist.linux-i686/egg/pyasn1/type/namedval.pys?s   PKW=3  pyasn1/type/useful.pyc; [Bc@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?sPKW=d"pyasn1/type/__init__.pyc; [Bc@sdS(N((((s2build/bdist.linux-i686/egg/pyasn1/type/__init__.pys?sPKW=єѮ""pyasn1/type/namedtype.pyc; ɱBc@scdklZdfdYZdefdYZdefdYZdfdYZd S( (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.pysgetName scCs=|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|_h|_h|_h|_h|_dS(N( s namedTypessselfs_NamedTypes__namedTypessNones_NamedTypes__minTagSets_NamedTypes__typeMaps_NamedTypes__tagMaps_NamedTypes__nameMaps_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|iodSndSdS(Nii(sselfs_NamedTypes__namedTypes(sself((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pys __nonzero__'s cCst|iSdS(N(slensselfs_NamedTypes__namedTypes(sself((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pys__len__*scCs>y|i|iSWn"tj otidnXdS(NsType position out of range(sselfs_NamedTypes__namedTypessidxsgetTypes IndexErrorserrors PyAsn1Error(sselfsidx((s3build/bdist.linux-i686/egg/pyasn1/type/namedtype.pysgetTypeByPosition,scCs|i ot|i}x|djoo|d}x^|i|iiiD]=}|ii |ot 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.pysgetNameByPosition?scCs|i o|t|i}xj|djoX|d}|i|i}|ii|oti d|n||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__.scCst|iSdS(N(sintsselfs_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__int__/scCst|iSdS(N(slongsselfs_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__long__0scCst|iSdS(N(sfloatsselfs_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __float__1scCst|iSdS(N(sabssselfs_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__abs__2scCst|iSdS(N(sintsselfs_value(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __index__3scCst|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.pysprettyIn5s cCs?|ii|}|tj od||fSn t|SdS(Ns%s(%s)(sselfs_Integer__namedValuessgetNamesvaluesrsNonesstr(sselfsvaluesr((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys prettyOutEs cCs |iSdS(N(sselfs_Integer__namedValues(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetNamedValuesLscCs|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.pyscloneNs4        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.pyssubtype]s           (+s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatSimplestagSetsnamedvals NamedValuess namedValuessNones__init__s__and__s__rand__s__or__s__ror__s__xor__s__rxor__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 __lshift__s __rshift__s__int__s__long__s __float__s__abs__s __index__sprettyIns prettyOutsgetNamedValuessclonessubtype(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysInteger sB$                             sBooleancBsftZeieieieidZei e i ddZ ei i ddfddfZ RS(NiisFalsesTrue(s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatSimplestagSetsIntegers subtypeSpecs constraintsSingleValueConstraints namedValuessclone(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysBooleanqs$s BitStringcBstZeieieieidZei Z e e e e dZ e e e e dZ e e e e e dZdZdZdZdZd Zd Zd Zeid d fjo dZndZdZRS(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__scCst|iSdS(N(slensselfs_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|i|SdS(N(sselfs__mul__svalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rmul__siicCs'|td|td|dSdS(Ni(sselfsmaxsisj(sselfsisj((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __getslice__scCsg}| ofSnt|tijo|Snr|ddjo|ddjo/x|dd!D]}|it|qdWq|ddjobxr|dd!D]L}d}t i |d}x+|o#|d}|i||?d@qWqWqt i d |nxt i |d D]}|ii|}|tjot i d |n|t|jo&|idg|t|dnd|| tuple of numerics OID converters.is Malformed Object ID %s at %s: %sN(stypesvaluestypess TupleTypes StringTypestuplesrsfiltersNonesstringssplitselementsappendsatois atoi_errorsatols atol_errorswhyserrors PyAsn1Errorsstrsselfs __class__s__name__(sselfsvalueselementsrswhy((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysprettyIn#s 6cCsxg}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 prettyOut7s (s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatSimplestagSets__add__s__radd__s__len__s __getitem__sbases version_infos __getslice__sindexs isPrefixOfsprettyIns prettyOut(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysObjectIdentifiers$        sRealcBs,tZeieieieidZRS(Ni (s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatSimplestagSet(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysReal@ss EnumeratedcBs,tZeieieieidZRS(Ni (s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatSimplestagSet(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys EnumeratedEssSetOfcBsntZeZeieieieidZ dZ dZ dZ edZ dZddZRS( NicCsd}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_cloneComponentValuesRs    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_verifyComponent_s$cCs|i|SdS(N(sselfs_componentValuessidx(sselfsidx((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentByPositiondscCsit|i}||jo#|i||dtg|_n|tjoY|i|tjo=|itjoti dn|ii |i|tZeieieieidZdZdZ RS(NicCs|ii|SdS(N(sselfs_componentTypesgetTypeMapNearPositionsidx(sselfsidx((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentTypeMapNearPositionscCs|ii||SdS(N(sselfs_componentTypesgetPositionNearTypestagSetsidx(sselfstagSetsidx((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentPositionNearTypes( s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatConstructedstagSetsgetComponentTypeMapNearPositionsgetComponentPositionNearType(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysSequences$ sSetcBsYtZeieieieidZddZe ddZ dZ dZ RS(NiicCsK|i|ii|}|o t|do|idSn|SdS(Ns getComponenti( sselfsgetComponentByPositions_componentTypesgetPositionByTypestagSetscs innerFlagshasattrs getComponent(sselfstagSets innerFlagsc((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentByTypescCs|ii|}|ii|}|oP|io|i ||q|i |i |}|i |||n|i ||dS(N( sselfs_componentTypesgetPositionByTypestagSetsidxsgetTypeByPositionsts innerFlags getTagSetssetComponentByPositionsvaluesgetComponentByPositionssetComponentByType(sselfstagSetsvalues innerFlagsidxst((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pyssetComponentByType s cCs|iidSdS(Ni(sselfs_componentTypes getTypeMap(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentTypeMapscCs|ii|SdS(N(sselfs_componentTypesgetPositionByTypestagSet(sselfstagSet((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentPositionByTypes( s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatConstructedstagSetsgetComponentByTypesNonessetComponentByTypesgetComponentTypeMapsgetComponentPositionByType(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysSets $  sChoicecBstZeiZeieiddZdZ dZ dZ e dZ dZdZdZd d Zd d Zd ZRS( NicCs-|iot|i|i|SndSdS(Ni(sselfs_componentValuesscmps _currentIdxsother(sselfsother((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__cmp__"s cCs'|idt|itj dS(Ns (sselfs _sizeSpecsints getComponentsNone(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysverifySizeSpec'scCsy|i}Wntij oncXt|d|i}t|t i o |i ||i d|n|i ||i dS(NsgetEffectiveTagSetscloneValueFlag(sselfs getComponentscserrors PyAsn1Errorsgetattrs getTagSetstagSets isinstancesbasesAbstractConstructedAsn1ItemsmyClonessetComponentByTypesclonescloneValueFlag(sselfsmyClonescloneValueFlagscstagSet((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys_cloneComponentValues+s cCs<t|i}||jo#|i||dtg|_nt|dot|i|i;d !PKW=+`q5252pyasn1/type/base.pyc; dpDc@sydklZWnej oddfZnXdklZlZlZdklZdk l Z dk l Z dk lZdfdYZd efd YZd fd YZeZd efdYZdefdYZdS((s version_infoi(sgetslicessetslicesdelslice(sjoin(s SliceType(s constraint(serrorsAsn1ItemcBstZRS(N(s__name__s __module__(((s.build/bdist.linux-i686/egg/pyasn1/type/base.pysAsn1Item ss Asn1ItemBasecBsbtZfZeiZeedZedZdZ dZ dZ dZ dZ RS(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$scCsh|i|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) ) PKv5&pyasn1/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: str(x), self._values), ', ') ) # __cmp__ must accompany __hash__ def __cmp__(self, other): return self is other and 0 or cmp( (self.__class__, self._values), other ) def __eq__(self, other): return self is other or not cmp( (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 otherConstraint.getValueMap().has_key(self) or \ otherConstraint is self or otherConstraint == self def isSubTypeOf(self, otherConstraint): return self._valueMap.has_key(otherConstraint) 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): pass # 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 not self.__multipleTypeConstraint.has_key(idx): 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 PKsW2 Spyasn1/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 self.nameToValIdx.has_key(name): raise error.PyAsn1Error('Duplicate name %s' % name) self.nameToValIdx[name] = val if self.valToNameIdx.has_key(val): 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): return self.valToNameIdx.get(value) def getValue(self, name): return self.nameToValIdx.get(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? PKW= ;--pyasn1/type/char.pyc; [Bc@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?sPKsW2pyasn1/type/__init__.pyPKsW2_RMTTpyasn1/type/error.pyfrom pyasn1.error import PyAsn1Error class ValueConstraintError(PyAsn1Error): pass PKW=&nEGG-INFO/SOURCES.txtCHANGES LICENSE MANIFEST README THANKS TODO setup.cfg setup.py doc/notes.html examples/snmp.py examples/sshkey.py examples/x509.py 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/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/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.pyPKW=U 0EGG-INFO/top_level.txtpyasn1 PKW=EGG-INFO/PKG-INFOMetadata-Version: 1.0 Name: pyasn1 Version: 0.0.11a Summary: ASN.1 library for Python Home-page: http://sourceforge.net/projects/pyasn1/ Author: Ilya Etingof Author-email: ilya@glas.net License: BSD Description: UNKNOWN Platform: UNKNOWN PKW=2EGG-INFO/dependency_links.txt PKW=2EGG-INFO/zip-safe PKW=ݶUpyasn1/__init__.pycPKW=׆pyasn1/error.pycPKsW2-<ٚpyasn1/__init__.pyPKsW2Mpyasn1/error.pyPKW=4pyasn1/codec/__init__.pycPKsW2Kpyasn1/codec/__init__.pyPKsW2||pyasn1/codec/der/decoder.pyPKW=c^SS6pyasn1/codec/der/decoder.pycPK3YWWpyasn1/codec/der/encoder.pyPKW= JS pyasn1/codec/der/__init__.pycPKW=@? pyasn1/codec/der/encoder.pycPKsW2pyasn1/codec/der/__init__.pyPKp4 IQpyasn1/codec/cer/decoder.pyPKW=K+ZZbpyasn1/codec/cer/decoder.pycPKS34q@ pyasn1/codec/cer/encoder.pyPKW=/8*pyasn1/codec/cer/__init__.pycPKW=}*pyasn1/codec/cer/encoder.pycPKsW2*=pyasn1/codec/cer/__init__.pyPKr)pyasn1/codec/ber/__init__.pycPKW=.22pyasn1/codec/ber/encoder.pycPKR4Mpyasn1/codec/ber/eoo.pyPKW=tB5Npyasn1/codec/ber/eoo.pycPKsW2Qpyasn1/codec/ber/__init__.pyPKsW2P3zOQpyasn1/type/useful.pyPKW=䰤"" Spyasn1/type/tag.pycPK/2l +vpyasn1/type/namedtype.pyPKW=`VU4U4>pyasn1/type/constraint.pycPKp7{%%˽pyasn1/type/tag.pyPKU4uzz pyasn1/type/base.pyPKt;&h{^{^pyasn1/type/univ.pyPKW=o¿) ) wLpyasn1/type/namedval.pycPKW=3  Xpyasn1/type/useful.pycPKW=d"]pyasn1/type/__init__.pycPKW=єѮ""]pyasn1/type/namedtype.pycPKW=ƩPpyasn1/type/error.pycPKW={=Ȃpyasn1/type/univ.pycPKW=+`q5252pyasn1/type/base.pycPKsW2>q__Lpyasn1/type/char.pyPKv5&~Tpyasn1/type/constraint.pyPKsW2 S9opyasn1/type/namedval.pyPKW= ;--upyasn1/type/char.pycPKsW2pyasn1/type/__init__.pyPKsW2_RMTTpyasn1/type/error.pyPKW=&nEGG-INFO/SOURCES.txtPKW=U 0ߍEGG-INFO/top_level.txtPKW=EGG-INFO/PKG-INFOPKW=28EGG-INFO/dependency_links.txtPKW=2tEGG-INFO/zip-safePK33