Commit 9717e6c8 authored by Tres Seaver's avatar Tres Seaver

Work with OIDs as bytes.

parent 2706c14a
......@@ -72,16 +72,16 @@ class Test_oid_repr(unittest.TestCase):
self.assertEqual(self._callFUT(faux), repr(faux))
def test_w_zero(self):
self.assertEqual(self._callFUT('\0\0\0\0\0\0\0\0'), '0x00')
self.assertEqual(self._callFUT(b'\0\0\0\0\0\0\0\0'), b'0x00')
def test_w_one(self):
self.assertEqual(self._callFUT('\0\0\0\0\0\0\0\1'), '0x01')
self.assertEqual(self._callFUT(b'\0\0\0\0\0\0\0\1'), b'0x01')
def test_w_even_length(self):
self.assertEqual(self._callFUT('\0\0\0\0\0\0\xAB\xC4'), '0xabc4')
self.assertEqual(self._callFUT(b'\0\0\0\0\0\0\xAB\xC4'), b'0xabc4')
def test_w_odd_length(self):
self.assertEqual(self._callFUT('\0\0\0\0\0\0\x0D\xEF'), '0x0def')
self.assertEqual(self._callFUT(b'\0\0\0\0\0\0\x0D\xEF'), b'0x0def')
def test_suite():
......
......@@ -15,6 +15,8 @@
from binascii import hexlify
from ._compat import _bytes
def non_negative(int_val):
if int_val < 0:
# Coerce to non-negative.
......@@ -28,14 +30,16 @@ def positive_id(obj): #pragma NO COVER
def oid_repr(oid):
if isinstance(oid, str) and len(oid) == 8:
if isinstance(oid, _bytes) and len(oid) == 8:
# Convert to hex and strip leading zeroes.
as_hex = hexlify(oid).lstrip('0')
as_hex = hexlify(oid).lstrip(b'0')
# Ensure two characters per input byte.
chunks = [b'0x']
if len(as_hex) & 1:
as_hex = '0' + as_hex
elif as_hex == '':
as_hex = '00'
return '0x' + as_hex
chunks.append(b'0')
elif as_hex == b'':
as_hex = b'00'
chunks.append(as_hex)
return b''.join(chunks)
else:
return repr(oid)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment