PKS=U 0EGG-INFO/top_level.txtpyasn1 PKS=GVVEGG-INFO/SOURCES.txtCHANGES LICENSE MANIFEST.in README THANKS TODO setup.py doc/notes.html examples/ldap.py examples/ocsp.py examples/pkcs7.py 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.egg-info/zip-safe pyasn1/codec/__init__.py pyasn1/codec/ber/__init__.py pyasn1/codec/ber/decoder.py pyasn1/codec/ber/encoder.py pyasn1/codec/ber/eoo.py pyasn1/codec/cer/__init__.py pyasn1/codec/cer/decoder.py pyasn1/codec/cer/encoder.py pyasn1/codec/der/__init__.py pyasn1/codec/der/decoder.py pyasn1/codec/der/encoder.py pyasn1/type/__init__.py pyasn1/type/base.py pyasn1/type/char.py pyasn1/type/constraint.py pyasn1/type/error.py pyasn1/type/namedtype.py pyasn1/type/namedval.py pyasn1/type/tag.py pyasn1/type/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.pyPKS=REGG-INFO/PKG-INFOMetadata-Version: 1.0 Name: pyasn1 Version: 0.0.12a Summary: ASN.1 types and codecs Home-page: http://sourceforge.net/projects/pyasn1/ Author: Ilya Etingof Author-email: ilya@glas.net License: BSD Description: UNKNOWN Platform: UNKNOWN PK=2EGG-INFO/zip-safe PKS=2EGG-INFO/dependency_links.txt PKsW2-<ٚpyasn1/__init__.pymajorVersionId = '1' PKS=׆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?sPKsW2Mpyasn1/error.pyclass PyAsn1Error(StandardError): pass class ValueConstraintError(PyAsn1Error): pass class SubstrateUnderrunError(PyAsn1Error): pass PKS=ݶUpyasn1/__init__.pyc; ZBc@s dZdS(s1N(smajorVersionId(smajorVersionId((s-build/bdist.linux-i686/egg/pyasn1/__init__.pys?sPKsW2pyasn1/codec/__init__.pyPKS=4pyasn1/codec/__init__.pyc; ZBc@sdS(N((((s3build/bdist.linux-i686/egg/pyasn1/codec/__init__.pys?sPKsW2pyasn1/codec/ber/__init__.pyPKS=eaapyasn1/codec/ber/decoder.pyc; =Lc @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  &?*PKS=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?sPKls=Q%%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) 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() PKS=OÇpyasn1/codec/ber/__init__.pyc; [Bc@sdS(N((((s7build/bdist.linux-i686/egg/pyasn1/codec/ber/__init__.pys?sPKls=m`SSpyasn1/codec/ber/decoder.py# BER decoder import types from pyasn1.type import tag, univ, char, useful from pyasn1.codec.ber import eoo from pyasn1 import error class AbstractDecoder: protoComponent = None def _createComponent(self, tagSet, asn1Spec): if asn1Spec is None: return self.protoComponent.clone(tagSet=tagSet) else: return asn1Spec.clone() def valueDecoder(self, substrate, asn1Spec, tagSet, length, state, decodeFun): raise error.PyAsn1Error('Decoder not implemented for %s' % tagSet) def indefLenValueDecoder(self, substrate, asn1Spec, tagSet, length, state, decodeFun): raise error.PyAsn1Error('Indefinite length mode decoder not implemented for %s' % tagSet) class EndOfOctetsDecoder(AbstractDecoder): def valueDecoder(self, substrate, asn1Spec, tagSet, length, state, decodeFun): return eoo.endOfOctets, substrate class IntegerDecoder(AbstractDecoder): protoComponent = univ.Integer(0) def _valueFilter(self, value): try: return int(value) except OverflowError: return value def valueDecoder(self, substrate, asn1Spec, tagSet, length, state, decodeFun): if not substrate: raise error.PyAsn1Error('Empty substrate') octets = map(ord, substrate) if octets[0] & 0x80: value = -1L else: value = 0L for octet in octets: value = value << 8 | octet value = self._valueFilter(value) return self._createComponent(tagSet, asn1Spec).clone(value), substrate class BooleanDecoder(IntegerDecoder): protoComponent = univ.Boolean(0) def _valueFilter(self, value): if value: return 1 else: return 0 class BitStringDecoder(AbstractDecoder): protoComponent = univ.BitString(()) 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? if not substrate: raise error.PyAsn1Error('Missing initial octet') trailingBits = ord(substrate[0]) if trailingBits > 7: raise error.PyAsn1Error( 'Trailing bits overflow %s' % trailingBits ) substrate = substrate[1:] lsb = p = 0; l = len(substrate)-1; b = [] while p <= l: if p == l: lsb = trailingBits j = 7 o = ord(substrate[p]) while j >= lsb: b.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 PKS=z{F22pyasn1/codec/ber/encoder.pyc; =Lc@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 'PKsW2pyasn1/codec/der/__init__.pyPKS=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  PKls=YWWpyasn1/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) PKS= Jpyasn1/codec/der/__init__.pyc; [Bc@sdS(N((((s7build/bdist.linux-i686/egg/pyasn1/codec/der/__init__.pys?sPKsW2||pyasn1/codec/der/decoder.py# DER decoder from pyasn1.type import univ from pyasn1.codec.cer import decoder decode = decoder.Decoder(decoder.codecMap) PKS='$gpyasn1/codec/der/encoder.pyc; =Lc@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/cer/__init__.pyPKS=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   PKls=c#  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 PKS=/pyasn1/codec/cer/__init__.pyc; [Bc@sdS(N((((s7build/bdist.linux-i686/egg/pyasn1/codec/cer/__init__.pys?sPKp4 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) PKS=y|tpyasn1/codec/cer/encoder.pyc; =Lc@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    'XPKsW2 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? PKsW2pyasn1/type/__init__.pyPKS=ƩPpyasn1/type/error.pyc; [Bc@s'dklZdefdYZdS((s PyAsn1ErrorsValueConstraintErrorcBstZRS(N(s__name__s __module__(((s/build/bdist.linux-i686/egg/pyasn1/type/error.pysValueConstraintErrorsN(s pyasn1.errors PyAsn1ErrorsValueConstraintError(s PyAsn1ErrorsValueConstraintError((s/build/bdist.linux-i686/egg/pyasn1/type/error.pys?s PKS=5252pyasn1/type/base.pyc; =Lc@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| 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 PKsW2_RMTTpyasn1/type/error.pyfrom pyasn1.error import PyAsn1Error class ValueConstraintError(PyAsn1Error): pass PKS=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?sPKsW2P3zpyasn1/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) ) PKS=䰤""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&    APKp7{%%pyasn1/type/tag.py# ASN.1 types tags try: from sys import version_info except ImportError: version_info = (0, 0) # a really early version from operator import getslice from types import SliceType from string import join from pyasn1 import error tagClassUniversal = 0x00 tagClassApplication = 0x40 tagClassContext = 0x80 tagClassPrivate = 0xC0 tagFormatSimple = 0x00 tagFormatConstructed = 0x20 tagCategoryImplicit = 0x01 tagCategoryExplicit = 0x02 tagCategoryUntagged = 0x04 class Tag: def __init__(self, tagClass, tagFormat, tagId): if tagId < 0: raise error.PyAsn1Error( 'Negative tag ID (%s) not allowed' % tagId ) self.__tag = (tagClass, tagFormat, tagId) self.__uniqTag = (tagClass, tagId) self.__hashedUniqTag = hash(self.__uniqTag) def __repr__(self): return '%s(tagClass=%s, tagFormat=%s, tagId=%s)' % ( (self.__class__.__name__,) + self.__tag ) def __cmp__(self, other): return cmp(self.__uniqTag, other) def __eq__(self, other): return self is other or self.__hashedUniqTag == other def __ne__(self, other): return not (self is other) and self.__hashedUniqTag != other def __hash__(self): return self.__hashedUniqTag def __getitem__(self, idx): return self.__tag[idx] def __and__(self, (tagClass, tagFormat, tagId)): return self.__class__( self.__tag&tagClass, self.__tag&tagFormat, self.__tag&tagId ) def __or__(self, (tagClass, tagFormat, tagId)): return self.__class__( self.__tag[0]|tagClass, self.__tag[1]|tagFormat, self.__tag[2]|tagId ) class TagSet: def __init__(self, baseTag=(), *superTags): self.__baseTag = baseTag self.__superTags = superTags self.__hashedSuperTags = hash(superTags) self.__lenOfSuperTags = len(superTags) def __repr__(self): return '%s(%s)' % ( self.__class__.__name__, join(map(lambda x: repr(x), self.__superTags), ', ') ) def __add__(self, superTag): return apply( self.__class__, (self.__baseTag,) + self.__superTags + (superTag,) ) def __radd__(self, superTag): return apply( self.__class__, (self.__baseTag, superTag) + self.__superTags ) def tagExplicitly(self, superTag): tagClass, tagFormat, tagId = superTag if tagClass == tagClassUniversal: raise error.PyAsn1Error( 'Can\'t tag with UNIVERSAL-class tag' ) if tagFormat != tagFormatConstructed: superTag = Tag(tagClass, tagFormatConstructed, tagId) return self + superTag def tagImplicitly(self, superTag): tagClass, tagFormat, tagId = superTag if self.__superTags: superTag = Tag(tagClass, self.__superTags[-1][1], tagId) return self[:-1] + superTag def getBaseTag(self): return self.__baseTag def __getitem__(self, idx): if type(idx) == SliceType: return apply(self.__class__, (self.__baseTag,) + getslice(self.__superTags, idx.start, idx.stop)) return self.__superTags[idx] if version_info < (2, 0): def __getslice__(self, i, j): return self[max(0, i):max(0, j):] def __cmp__(self, other): return cmp(self.__superTags, other) def __eq__(self, other): return self is other or self.__hashedSuperTags == other def __ne__(self, other): return not (self is other) and self.__hashedSuperTags != other def __hash__(self): return self.__hashedSuperTags def __len__(self): return self.__lenOfSuperTags def isSuperTagSetOf(self, tagSet): if len(tagSet) < self.__lenOfSuperTags: return idx = self.__lenOfSuperTags - 1 while idx >= 0: if self.__superTags[idx] != tagSet[idx]: return idx = idx - 1 return 1 def initTagSet(tag): return TagSet(tag, tag) PKS=єѮ""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|> 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 isinstance(value, self.__class__): return tuple(value) elif type(value) is types.StringType: r = [] for element in filter(None, string.split(value, '.')): try: r.append(string.atoi(element, 0)) except string.atoi_error: try: r.append(string.atol(element, 0)) except string.atol_error, why: raise error.PyAsn1Error( 'Malformed Object ID %s at %s: %s' % (str(value), self.__class__.__name__, why) ) value = tuple(r) elif type(value) is types.TupleType: pass else: value = tuple(value) if filter(lambda x: x < 0, value): raise error.PyAsn1Error( 'Negative sub-ID in %s at %s' % (value, self.__class__.__name__) ) return value def prettyOut(self, value): """Tuple of numerics -> dotted string OID converter""" r = [] for subOid in value: r.append(str(subOid)) if r[-1] and r[-1][-1] == 'L': r[-1][-1] = r[-1][:-1] return string.join(r, '.') class Real(base.AbstractSimpleAsn1Item): 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? PKS=൘pyasn1/type/univ.pyc; =Lc@sdkZdkZdkZdklZlZlZlZlZdk l Z dei fdYZ de fdYZ dei fdYZd ei fd YZd efd YZd ei fdYZdei fdYZde fdYZdeifdYZdefdYZdeifdYZdefdYZdefdYZdefdYZdS(N(sbasestags constraints namedtypesnamedval(serrorsIntegercBsytZeieieieidZei Z e e e e dZ dZ dZdZdZdZdZd Zd Zd Zd Zd ZdZdZdZdZdZe dZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(e e e e dZ)e e e e e d Z*RS(!NicCsC|tjo|i|_n ||_tii||||dS(N( s namedValuessNonesselfs_Integer__namedValuessbasesAbstractSimpleAsn1Items__init__svaluestagSets subtypeSpec(sselfsvaluestagSets subtypeSpecs namedValues((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__init__s  cCs|i|i|@SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__and__scCs|i||i@SdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rand__scCs|i|i|BSdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__or__scCs|i||iBSdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__ror__scCs|i|i|ASdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__xor__scCs|i||iASdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rxor__scCs|i|i|SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__add__ scCs|i||iSdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__radd__!scCs|i|i|SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__sub__"scCs|i||iSdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rsub__#scCs|i|i|SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__mul__$scCs|i||iSdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rmul__%scCs|i|i|SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__div__&scCs|i||iSdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rdiv__'scCs|i|i|SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__mod__(scCs|i||iSdS(N(sselfsclonesvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rmod__)scCs |it|i||SdS(N(sselfsclonespows_valuesvaluesmodulo(sselfsvaluesmodulo((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__pow__*scCs|it||iSdS(N(sselfsclonespowsvalues_value(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys__rpow__,scCs|i|i|>SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __lshift__-scCs|i|i|?SdS(N(sselfsclones_valuesvalue(sselfsvalue((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys __rshift__.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: %scCs |djS(Ni(sx(sx((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys:ssNegative sub-ID in %s at %sN(s isinstancesvaluesselfs __class__stuplestypestypess StringTypesrsfiltersNonesstringssplitselementsappendsatois atoi_errorsatols atol_errorswhyserrors PyAsn1Errorsstrs__name__s TupleType(sselfsvalueselementsrswhy((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysprettyIn#s*6 #cCsxg}x[|D]S}|it||do|dddjo|dd |dd dotted string OID converterisLs.N(srsvaluessubOidsappendsstrsstringsjoin(sselfsvaluesrssubOid((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys prettyOutAs (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.pysRealJss EnumeratedcBs,tZeieieieidZRS(Ni (s__name__s __module__stags initTagSetsTagstagClassUniversalstagFormatSimplestagSet(((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pys EnumeratedOssSetOfcBsntZeZeieieieidZ 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_cloneComponentValues\s    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_verifyComponentis$cCs|i|SdS(N(sselfs_componentValuessidx(sselfsidx((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentByPositionnscCsit|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.pysgetComponentByType scCs|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.pyssetComponentByTypes cCs|iidSdS(Ni(sselfs_componentTypes getTypeMap(sself((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentTypeMap!scCs|ii|SdS(N(sselfs_componentTypesgetPositionByTypestagSet(sselfstagSet((s.build/bdist.linux-i686/egg/pyasn1/type/univ.pysgetComponentPositionByType#s( 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.pysverifySizeSpec1scCsy|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_cloneComponentValues5s cCs<t|i}||jo#|i||dtg|_nt|dot|i|i 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 PKS=`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|dq__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) ) PKS=U 0EGG-INFO/top_level.txtPKS=GVV;EGG-INFO/SOURCES.txtPKS=REGG-INFO/PKG-INFOPK=2EGG-INFO/zip-safePKS=2EGG-INFO/dependency_links.txtPKsW2-<ٚJpyasn1/__init__.pyPKS=׆pyasn1/error.pycPKsW2MI pyasn1/error.pyPKS=ݶU pyasn1/__init__.pycPKsW2 pyasn1/codec/__init__.pyPKS=4 pyasn1/codec/__init__.pycPKsW2 pyasn1/codec/ber/__init__.pyPKS=eaapyasn1/codec/ber/decoder.pycPKS=tBppyasn1/codec/ber/eoo.pycPKls=Q%%rpyasn1/codec/ber/encoder.pyPKR4ʘpyasn1/codec/ber/eoo.pyPKS=OÇpyasn1/codec/ber/__init__.pycPKls=m`SSpyasn1/codec/ber/decoder.pyPKS=z{F22pyasn1/codec/ber/encoder.pycPKsW2!pyasn1/codec/der/__init__.pyPKS=c^SS!pyasn1/codec/der/decoder.pycPKls=YWWV#pyasn1/codec/der/encoder.pyPKS= J&pyasn1/codec/der/__init__.pycPKsW2||'pyasn1/codec/der/decoder.pyPKS='$g](pyasn1/codec/der/encoder.pycPKsW2(/pyasn1/codec/cer/__init__.pyPKS=K+ZZb/pyasn1/codec/cer/decoder.pycPKls=c#  5pyasn1/codec/cer/encoder.pyPKS=/2Bpyasn1/codec/cer/__init__.pycPKp4 IQBpyasn1/codec/cer/decoder.pyPKS=y|tq__pyasn1/type/char.pyPK33 8