*.c: Introduce a new input conversion for binary strings.
authorMark Wooding <mdw@distorted.org.uk>
Mon, 21 Oct 2019 00:43:54 +0000 (01:43 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Mon, 25 Nov 2019 17:43:08 +0000 (17:43 +0000)
commitbe17c8c27ee7ae2e14fe34bb517484a11b1cf300
tree664806988b347a74ffa1ec670a46a085b964bca5
parent620169aef06f74c9a8574e28b5482061e81a7389
*.c: Introduce a new input conversion for binary strings.

One of the major differences in Python 3 is that it firmly distinguishes
between binary and text strings: the former consist of small integers,
while the latter consist of Unicode scalars.  The Python 3 `s#'
conversion's main purpose is to accept text strings, and though it will
also accept binary strings it's not really ideal for the purpose.
Python 3 introduces a new conversion `y#' specifically for binary
strings, though this isn't quite what we want because, for some reason,
it /doesn't/ work with bufferish objects which require explicit release.

The best answer seems to be to introduce our own custom conversion for
binary strings, so we do this here, replacing all of the binary-input
argument conversions.  While we're at it, replace all of the by-steam
argument conversions using `PyObject_AsReadBuffer' too.
13 files changed:
algorithms.c
buffer.c
bytestring.c
ec.c
group.c
key.c
mp.c
pubkey.c
pyke/pyke.c
pyke/pyke.h
rand.c
share.c
t/t-buffer.py