summaryrefslogtreecommitdiffstats
path: root/scripts/external_libs/dpkt-1.8.6/dpkt/asn1.py
diff options
context:
space:
mode:
authorimarom <imarom@cisco.com>2016-03-22 17:20:13 +0200
committerimarom <imarom@cisco.com>2016-03-23 13:01:06 +0200
commit46f110d0c728ba9299156cf92a59c27c2d0348fa (patch)
tree9053af8b721a79378cea8ee4401d029b5a23d4b6 /scripts/external_libs/dpkt-1.8.6/dpkt/asn1.py
parent9c03844bea5c9fc4423ed4c6ddf9376a9cdd7ac5 (diff)
removed dpkt
Diffstat (limited to 'scripts/external_libs/dpkt-1.8.6/dpkt/asn1.py')
-rw-r--r--scripts/external_libs/dpkt-1.8.6/dpkt/asn1.py119
1 files changed, 0 insertions, 119 deletions
diff --git a/scripts/external_libs/dpkt-1.8.6/dpkt/asn1.py b/scripts/external_libs/dpkt-1.8.6/dpkt/asn1.py
deleted file mode 100644
index 9a088107..00000000
--- a/scripts/external_libs/dpkt-1.8.6/dpkt/asn1.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# $Id: asn1.py 23 2006-11-08 15:45:33Z dugsong $
-
-"""Abstract Syntax Notation #1."""
-
-import struct, time
-import dpkt
-
-# Type class
-CLASSMASK = 0xc0
-UNIVERSAL = 0x00
-APPLICATION = 0x40
-CONTEXT = 0x80
-PRIVATE = 0xc0
-
-# Constructed (vs. primitive)
-CONSTRUCTED = 0x20
-
-# Universal-class tags
-TAGMASK = 0x1f
-INTEGER = 2
-BIT_STRING = 3 # arbitrary bit string
-OCTET_STRING = 4 # arbitrary octet string
-NULL = 5
-OID = 6 # object identifier
-SEQUENCE = 16 # ordered collection of types
-SET = 17 # unordered collection of types
-PRINT_STRING = 19 # printable string
-T61_STRING = 20 # T.61 (8-bit) character string
-IA5_STRING = 22 # ASCII
-UTC_TIME = 23
-
-def utctime(buf):
- """Convert ASN.1 UTCTime string to UTC float."""
- yy = int(buf[:2])
- mm = int(buf[2:4])
- dd = int(buf[4:6])
- hh = int(buf[6:8])
- mm = int(buf[8:10])
- try:
- ss = int(buf[10:12])
- buf = buf[12:]
- except TypeError:
- ss = 0
- buf = buf[10:]
- if buf[0] == '+':
- hh -= int(buf[1:3])
- mm -= int(buf[3:5])
- elif buf[0] == '-':
- hh += int(buf[1:3])
- mm += int(buf[3:5])
- return time.mktime((2000 + yy, mm, dd, hh, mm, ss, 0, 0, 0))
-
-def decode(buf):
- """Sleazy ASN.1 decoder.
- Return list of (id, value) tuples from ASN.1 BER/DER encoded buffer.
- """
- msg = []
- while buf:
- t = ord(buf[0])
- constructed = t & CONSTRUCTED
- tag = t & TAGMASK
- l = ord(buf[1])
- c = 0
- if constructed and l == 128:
- # XXX - constructed, indefinite length
- msg.append(t, decode(buf[2:]))
- elif l >= 128:
- c = l & 127
- if c == 1:
- l = ord(buf[2])
- elif c == 2:
- l = struct.unpack('>H', buf[2:4])[0]
- elif c == 3:
- l = struct.unpack('>I', buf[1:5])[0] & 0xfff
- c = 2
- elif c == 4:
- l = struct.unpack('>I', buf[2:6])[0]
- else:
- # XXX - can be up to 127 bytes, but...
- raise dpkt.UnpackError('excessive long-form ASN.1 length %d' % l)
-
- # Skip type, length
- buf = buf[2+c:]
-
- # Parse content
- if constructed:
- msg.append((t, decode(buf)))
- elif tag == INTEGER:
- if l == 0:
- n = 0
- elif l == 1:
- n = ord(buf[0])
- elif l == 2:
- n = struct.unpack('>H', buf[:2])[0]
- elif l == 3:
- n = struct.unpack('>I', buf[:4])[0] >> 8
- elif l == 4:
- n = struct.unpack('>I', buf[:4])[0]
- else:
- raise dpkt.UnpackError('excessive integer length > %d bytes' % l)
- msg.append((t, n))
- elif tag == UTC_TIME:
- msg.append((t, utctime(buf[:l])))
- else:
- msg.append((t, buf[:l]))
-
- # Skip content
- buf = buf[l:]
- return msg
-
-if __name__ == '__main__':
- import unittest
-
- class ASN1TestCase(unittest.TestCase):
- def test_asn1(self):
- s = '0\x82\x02Q\x02\x01\x0bc\x82\x02J\x04xcn=Douglas J Song 1, ou=Information Technology Division, ou=Faculty and Staff, ou=People, o=University of Michigan, c=US\n\x01\x00\n\x01\x03\x02\x01\x00\x02\x01\x00\x01\x01\x00\x87\x0bobjectclass0\x82\x01\xb0\x04\rmemberOfGroup\x04\x03acl\x04\x02cn\x04\x05title\x04\rpostalAddress\x04\x0ftelephoneNumber\x04\x04mail\x04\x06member\x04\thomePhone\x04\x11homePostalAddress\x04\x0bobjectClass\x04\x0bdescription\x04\x18facsimileTelephoneNumber\x04\x05pager\x04\x03uid\x04\x0cuserPassword\x04\x08joinable\x04\x10associatedDomain\x04\x05owner\x04\x0erfc822ErrorsTo\x04\x08ErrorsTo\x04\x10rfc822RequestsTo\x04\nRequestsTo\x04\tmoderator\x04\nlabeledURL\x04\nonVacation\x04\x0fvacationMessage\x04\x05drink\x04\x0elastModifiedBy\x04\x10lastModifiedTime\x04\rmodifiersname\x04\x0fmodifytimestamp\x04\x0ccreatorsname\x04\x0fcreatetimestamp'
- self.failUnless(decode(s) == [(48, [(2, 11), (99, [(4, 'cn=Douglas J Song 1, ou=Information Technology Division, ou=Faculty and Staff, ou=People, o=University of Michigan, c=US'), (10, '\x00'), (10, '\x03'), (2, 0), (2, 0), (1, '\x00'), (135, 'objectclass'), (48, [(4, 'memberOfGroup'), (4, 'acl'), (4, 'cn'), (4, 'title'), (4, 'postalAddress'), (4, 'telephoneNumber'), (4, 'mail'), (4, 'member'), (4, 'homePhone'), (4, 'homePostalAddress'), (4, 'objectClass'), (4, 'description'), (4, 'facsimileTelephoneNumber'), (4, 'pager'), (4, 'uid'), (4, 'userPassword'), (4, 'joinable'), (4, 'associatedDomain'), (4, 'owner'), (4, 'rfc822ErrorsTo'), (4, 'ErrorsTo'), (4, 'rfc822RequestsTo'), (4, 'RequestsTo'), (4, 'moderator'), (4, 'labeledURL'), (4, 'onVacation'), (4, 'vacationMessage'), (4, 'drink'), (4, 'lastModifiedBy'), (4, 'lastModifiedTime'), (4, 'modifiersname'), (4, 'modifytimestamp'), (4, 'creatorsname'), (4, 'createtimestamp')])])])])
-
- unittest.main()