diff --git a/gssapi/bindings/__init__.py b/gssapi/bindings/__init__.py
index <HASH>..<HASH> 100644
--- a/gssapi/bindings/__init__.py
+++ b/gssapi/bindings/__init__.py
@@ -173,7 +173,7 @@ def _kwargs_decode(input):
 
 def _buf_to_str(buf):
     """Converts a gss_buffer_desc containing a char * string to Python bytes"""
-    return bytes(ffi.buffer(buf.value, buf.length))
+    return ffi.buffer(buf.value, buf.length)[:]
 
 
 def _read_header():
diff --git a/gssapi/oids.py b/gssapi/oids.py
index <HASH>..<HASH> 100644
--- a/gssapi/oids.py
+++ b/gssapi/oids.py
@@ -96,7 +96,7 @@ class OID(object):
     def __str__(self):
         tag = b'\x06'
         length = struct.pack('B', self._oid.length)
-        value = bytes(ffi.buffer(self._oid.elements, self._oid.length))
+        value = ffi.buffer(self._oid.elements, self._oid.length)[:]
         return str(decoder.decode(tag + length + value)[0])
This is a better way of converting ffi.buffer to a bytestring

The old way produces bytes(repr(buffer)) on PyPy which is not what we want