Esempio n. 1
0
 def test_private(self):
     enc = asn1.Encoder()
     enc.start()
     enc.enter(1, asn1.ClassPrivate)
     enc.write(1)
     enc.leave()
     res = enc.output()
     assert res == '\xe1\x03\x02\x01\x01'
Esempio n. 2
0
 def test_context(self):
     enc = asn1.Encoder()
     enc.start()
     enc.enter(1, asn1.ClassContext)
     enc.write(1)
     enc.leave()
     res = enc.output()
     assert res == '\xa1\x03\x02\x01\x01'
Esempio n. 3
0
 def test_application(self):
     enc = asn1.Encoder()
     enc.start()
     enc.enter(1, asn1.ClassApplication)
     enc.write(1)
     enc.leave()
     res = enc.output()
     assert res == '\x61\x03\x02\x01\x01'
Esempio n. 4
0
 def test_long_tag_id(self):
     enc = asn1.Encoder()
     enc.start()
     enc.enter(0xffff)
     enc.write(1)
     enc.leave()
     res = enc.output()
     assert res == '\x3f\x83\xff\x7f\x03\x02\x01\x01'
Esempio n. 5
0
 def test_error_stack(self):
     enc = asn1.Encoder()
     enc.start()
     assert_raises(asn1.Error, enc.leave)
     enc.enter(asn1.Sequence)
     assert_raises(asn1.Error, enc.output)
     enc.leave()
     assert_raises(asn1.Error, enc.leave)
Esempio n. 6
0
 def test_set_of(self):
     enc = asn1.Encoder()
     enc.start()
     enc.enter(asn1.Set)
     enc.write(1)
     enc.write(2)
     enc.leave()
     res = enc.output()
     assert res == '\x31\x06\x02\x01\x01\x02\x01\x02'
Esempio n. 7
0
 def test_set(self):
     enc = asn1.Encoder()
     enc.start()
     enc.enter(asn1.Set)
     enc.write(1)
     enc.write('foo')
     enc.leave()
     res = enc.output()
     assert res == '\x31\x08\x02\x01\x01\x04\x03foo'
Esempio n. 8
0
 def test_error_object_identifier(self):
     enc = asn1.Encoder()
     enc.start()
     assert_raises(asn1.Error, enc.write, '1', asn1.ObjectIdentifier)
     assert_raises(asn1.Error, enc.write, '40.2.3', asn1.ObjectIdentifier)
     assert_raises(asn1.Error, enc.write, '1.40.3', asn1.ObjectIdentifier)
     assert_raises(asn1.Error, enc.write, '1.2.3.', asn1.ObjectIdentifier)
     assert_raises(asn1.Error, enc.write, '.1.2.3', asn1.ObjectIdentifier)
     assert_raises(asn1.Error, enc.write, 'foo', asn1.ObjectIdentifier)
     assert_raises(asn1.Error, enc.write, 'foo.bar', asn1.ObjectIdentifier)
Esempio n. 9
0
 def create_search_request(self,
                           dn,
                           filter=None,
                           attrs=None,
                           scope=None,
                           sizelimit=None,
                           timelimit=None,
                           deref=None,
                           typesonly=None,
                           msgid=None):
     """Create a search request. This only supports a very simple AND
     filter."""
     if filter is None:
         filter = '(objectClass=*)'
     if attrs is None:
         attrs = []
     if scope is None:
         scope = SCOPE_SUBTREE
     if sizelimit is None:
         sizelimit = 0
     if timelimit is None:
         timelimit = 0
     if deref is None:
         deref = DEREF_NEVER
     if typesonly is None:
         typesonly = False
     if msgid is None:
         msgid = 1
     parser = ldapfilter.Parser()
     parsed = parser.parse(filter)
     encoder = asn1.Encoder()
     encoder.start()
     encoder.enter(asn1.Sequence)  # LDAPMessage
     encoder.write(msgid)
     encoder.enter(3, asn1.ClassApplication)  # SearchRequest
     encoder.write(dn)
     encoder.write(scope, asn1.Enumerated)
     encoder.write(deref, asn1.Enumerated)
     encoder.write(sizelimit)
     encoder.write(timelimit)
     encoder.write(typesonly, asn1.Boolean)
     self._encode_filter(encoder, parsed)
     encoder.enter(asn1.Sequence)  # attributes
     for attr in attrs:
         encoder.write(attr)
     encoder.leave()  # end of attributes
     encoder.leave()  # end of SearchRequest
     encoder.leave()  # end of LDAPMessage
     result = encoder.output()
     return result
Esempio n. 10
0
 def test_long_object_identifier(self):
     enc = asn1.Encoder()
     enc.start()
     enc.write('39.2.3', asn1.ObjectIdentifier)
     res = enc.output()
     assert res == '\x06\x03\x8c\x1a\x03'
     enc.start()
     enc.write('1.39.3', asn1.ObjectIdentifier)
     res = enc.output()
     assert res == '\x06\x02\x4f\x03'
     enc.start()
     enc.write('1.2.300000', asn1.ObjectIdentifier)
     res = enc.output()
     assert res == '\x06\x04\x2a\x92\xa7\x60'
Esempio n. 11
0
 def test_twos_complement_boundaries(self):
     enc = asn1.Encoder()
     enc.start()
     enc.write(127)
     res = enc.output()
     assert res == '\x02\x01\x7f'
     enc.start()
     enc.write(128)
     res = enc.output()
     assert res == '\x02\x02\x00\x80'
     enc.start()
     enc.write(-128)
     res = enc.output()
     assert res == '\x02\x01\x80'
     enc.start()
     enc.write(-129)
     res = enc.output()
     assert res == '\x02\x02\xff\x7f'
Esempio n. 12
0
 def test_real_object_identifier(self):
     enc = asn1.Encoder()
     enc.start()
     enc.write('1.2.840.113554.1.2.1.1', asn1.ObjectIdentifier)
     res = enc.output()
     assert res == '\x06\x0a\x2a\x86\x48\x86\xf7\x12\x01\x02\x01\x01'
Esempio n. 13
0
 def test_object_identifier(self):
     enc = asn1.Encoder()
     enc.start()
     enc.write('1.2.3', asn1.ObjectIdentifier)
     res = enc.output()
     assert res == '\x06\x02\x2a\x03'
Esempio n. 14
0
 def test_null(self):
     enc = asn1.Encoder()
     enc.start()
     enc.write(None)
     res = enc.output()
     assert res == '\x05\x00'
Esempio n. 15
0
 def test_octet_string(self):
     enc = asn1.Encoder()
     enc.start()
     enc.write('foo')
     res = enc.output()
     assert res == '\x04\x03foo'
Esempio n. 16
0
 def test_negative_integer(self):
     enc = asn1.Encoder()
     enc.start()
     enc.write(-1)
     res = enc.output()
     assert res == '\x02\x01\xff'
Esempio n. 17
0
 def test_long_negative_integer(self):
     enc = asn1.Encoder()
     enc.start()
     enc.write(-0x0102030405060708090a0b0c0d0e0fL)
     res = enc.output()
     assert res == '\x02\x0f\xfe\xfd\xfc\xfb\xfa\xf9\xf8\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf1'
Esempio n. 18
0
 def test_long_integer(self):
     enc = asn1.Encoder()
     enc.start()
     enc.write(0x0102030405060708090a0b0c0d0e0fL)
     res = enc.output()
     assert res == '\x02\x0f\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'
Esempio n. 19
0
 def test_boolean(self):
     enc = asn1.Encoder()
     enc.start()
     enc.write(True, asn1.Boolean)
     res = enc.output()
     assert res == '\x01\x01\xff'
Esempio n. 20
0
 def test_enumerated(self):
     enc = asn1.Encoder()
     enc.start()
     enc.write(1, asn1.Enumerated)
     res = enc.output()
     assert res == '\x0a\x01\x01'
Esempio n. 21
0
 def test_error_init(self):
     enc = asn1.Encoder()
     assert_raises(asn1.Error, enc.enter, asn1.Sequence)
     assert_raises(asn1.Error, enc.leave)
     assert_raises(asn1.Error, enc.write, 1)
     assert_raises(asn1.Error, enc.output)
Esempio n. 22
0
 def test_long_tag_length(self):
     enc = asn1.Encoder()
     enc.start()
     enc.write('x' * 0xffff)
     res = enc.output()
     assert res == '\x04\x82\xff\xff' + 'x' * 0xffff