From: <ex...@tw...> - 2011-10-28 03:27:14
|
On 27 Oct, 11:07 pm, car...@ya... wrote: >With pyOpenSSL 0.13, passing a python string withembedded NUL byte(s) >to crypto.sign method will generate an error saying "must be string >without null bytes, not str". > >Initially I thought the API is meant to support C-string (NUL- >terminated) only, though it isn't explicitly mentioned in the >documentation, above error seems to say so. However, looking into the >crypto_sign function (within "crypto.c"), that doesn't seem to be the >case, as the format string being used(enclosed below) put a "#" right >afterBYTESTRING_FMT... > >"O!" BYTESTRING_FMT "#s:sign" > > >Unsurprisingly, once I modify the format string to "O!s#s:sign", >signing a python string with embedded NUL byte(s) works perfectly fine. > >Am I over looking something? or is this a bug? This sounds like a bug that was fixed in 0.13: https://bugs.launchpad.net/pyopenssl/+bug/653830 Can you double check that you observed the problem with that version and not an earlier version? BYTESTRING_FMT is defined as "s" on Python 2.x, so your change shouldn't have made any difference. If you were using an older version of pyOpenSSL before, though, and then switched to a custom build based on 0.13, that would explain why it started working (it would have worked without the edit, too). If this isn't the case, a minimal reproducing example would be nice, perhaps attached to a new bug report in Launchpad. Thanks, Jean-Paul |