It will be textual. I tried switching over to your suggested method but ran into a problem. It looks like string returns after the first NULL byte while buffer allows you to go past it. In the case of this OPENSSL_VERSION_TEXT I'm defining a static char *const in the cdef which cffi then populates with the #define's value, but I don't know the length (which buffer requires) without a call to strlen().

Is there a better way to make the value of the #define accessible? Or should I just change it to 
```
return self._ffi.string(api._lib.OPENSSL_VERSION_TEXT).decode('ascii')
```