U v`3#@sdZddlmZddlmZddlZddlmZddlmZddl m Z d Z dZ d Z d Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZddZddZddZdd Z d!d"Z!dS)#zAbstract Syntax Notation #1.)absolute_import)print_functionN)timegm)dpkt) compat_ord@ c Cs t|dd}t|dd}t|dd}t|dd}t|dd}z t|dd}|dd}Wn$tk rd}|dd}YnX|dd kr|t|d d 8}|t|d d 8}n6|dd kr|t|d d 7}|t|d d 7}td||||||dddf S)zConvert ASN.1 UTCTime string to UTC float. TODO: Long description here. Args: buf: A buffer with format "yymnddhhmm" Returns: A floating point number, indicates seconds since the Epoch. Nr rr r+rrr-i)int TypeErrorr)bufyymnddhhmmssr&a/private/var/folders/0j/yyfkg7712236ncpm167bvylc27vst9/T/pip-unpacked-wheel-y9gppv54/dpkt/asn1.pyutctime&s$  r(cCs:g}|r6t|d}|t@}|t@}t|d}d}|r^|dkr^||t|ddfn|dkr|d@}|dkrt|d}n||dkrtd|ddd}nZ|d krtd |dd dd @}d}n0|dkrtd |dd d}ntd||d|d}|r,||t|fn|t kr|dkrFd}n|dkr^t|d}n~|dkrtd|ddd}nZ|d krtd |dddd?}n2|dkrtd |ddd}ntd||||fn<|t kr||t |d|fn|||d|f||d}q|S)aSleazy ASN.1 decoder. TODO: Long description here. Args: buf: A buffer with Sleazy ASN.1 data. Returns: A list of (id, value) tuples from ASN.1 BER/DER encoded buffer. Raises: UnpackError: An error occurred the ASN.1 length exceed. rrr r Nz>Hrrz>Irirz#excessive long-form ASN.1 length %drz#excessive integer length > %d bytes) r CONSTRUCTEDTAGMASKappenddecodestructunpackr UnpackErrorINTEGERUTC_TIMEr()rmsgtZ constructedtagZl_cnr&r&r'r-FsT           r-c.Cs~d}t|ddddddddd d dd d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,g"fgfgfgksztdS)-NsU0Q cJxcn=Douglas J Song 1, ou=Information Technology Division, ou=Faculty and Staff, ou=People, o=University of Michigan, c=US   objectclass0 memberOfGroupaclcntitle postalAddresstelephoneNumbermailmember homePhonehomePostalAddress objectClass descriptionfacsimileTelephoneNumberpageruid userPasswordjoinableassociatedDomainownerrfc822ErrorsToErrorsTorfc822RequestsTo RequestsTo moderator labeledURL onVacationvacationMessagedrinklastModifiedBylastModifiedTime modifiersnamemodifytimestamp creatorsnamecreatetimestamp0)r c)rsxcn=Douglas J Song 1, ou=Information Technology Division, ou=Faculty and Staff, ou=People, o=University of Michigan, c=US)r)rr r)rr;)s objectclass)rs memberOfGroup)rsacl)rscn)rstitle)rs postalAddress)rstelephoneNumber)rsmail)rsmember)rs homePhone)rshomePostalAddress)rs objectClass)rs description)rsfacsimileTelephoneNumber)rspager)rsuid)rs userPassword)rsjoinable)rsassociatedDomain)rsowner)rsrfc822ErrorsTo)rsErrorsTo)rsrfc822RequestsTo)rs RequestsTo)rs moderator)rs labeledURL)rs onVacation)rsvacationMessage)rsdrink)rslastModifiedBy)rslastModifiedTime)rs modifiersname)rsmodifytimestamp)rs creatorsname)rscreatetimestamp)r-AssertionError)sr&r&r' test_asn1sh rAcCs,d}t|dkstd}t|dks(tdS)Nz201005012345+1234g@:qAz201005012345-1234g@A)r(r?)rr&r&r' test_utctimes rBc Cs4ddl}ddlm}|d}t|dgfdgfgks8t|d}t|dgksRt|d}t|dgkslt|d }t|d gkst|d }t|d gkst|d }|jtjddt|W5QRX|d}t|dgkst|d}|jtjddt|W5QRX|d}t|ddgks0tdS)Nr) unhexlifyZ2080r Z(1781223230313030353031323334352b30303030)rg@hAZ02820000r=Z 0283000001)r rZ028400000002abcd)r iͫZ0285z$excessive long-form ASN.1 length 133)matchZ02810412345678)r ixV4Z028105z"excessive integer length > 5 bytesZ028103123456028100)r iV4)pytestbinasciirCr-r?Zraisesrr0)rErCrr&r&r' test_decodesV  rG)"__doc__ __future__rrr.calendarrrcompatrZ CLASSMASKZ UNIVERSALZ APPLICATIONCONTEXTZPRIVATEr*r+r1 BIT_STRING OCTET_STRINGNULLZOIDSEQUENCESETZ PRINT_STRINGZ T61_STRINGZ IA5_STRINGr2r(r-rArBrGr&r&r&r's:      EH