{
char *kwlist[] = { "k", 0 };
char *k;
- int sz;
+ Py_ssize_t sz;
if (!PyArg_ParseTupleAndKeywords(arg, kw, "s#:new", kwlist, &k, &sz))
goto end;
static PyObject *gcmeth_encrypt(PyObject *me, PyObject *arg)
{
char *p;
- int sz;
+ Py_ssize_t sz;
PyObject *rc = 0;
if (!PyArg_ParseTuple(arg, "s#:encrypt", &p, &sz)) return (0);
static PyObject *gcmeth_decrypt(PyObject *me, PyObject *arg)
{
char *p;
- int sz;
+ Py_ssize_t sz;
PyObject *rc = 0;
if (!PyArg_ParseTuple(arg, "s#:decrypt", &p, &sz)) return (0);
static PyObject *gcmeth_setiv(PyObject *me, PyObject *arg)
{
char *p;
- int sz;
+ Py_ssize_t sz;
if (!PyArg_ParseTuple(arg, "s#:setiv", &p, &sz)) goto end;
+ if (!GCIPHER_C(me)->ops->setiv) VALERR("`setiv' not supported");
if (!GC_CLASS(GCIPHER_C(me))->blksz) VALERR("not a block cipher mode");
if (sz != GC_CLASS(GCIPHER_C(me))->blksz) VALERR("bad IV length");
GC_SETIV(GCIPHER_C(me), p);
static PyObject *gcmeth_bdry(PyObject *me, PyObject *arg)
{
if (!PyArg_ParseTuple(arg, ":bdry")) goto end;
+ if (!GCIPHER_C(me)->ops->bdry) VALERR("`bdry' not supported");
if (!GC_CLASS(GCIPHER_C(me))->blksz) VALERR("not a block cipher mode");
GC_BDRY(GCIPHER_C(me));
RETURN_ME;
static PyObject *ghmeth_hash(PyObject *me, PyObject *arg)
{
char *p;
- int sz;
+ Py_ssize_t sz;
if (!PyArg_ParseTuple(arg, "s#:hash", &p, &sz)) return (0);
GH_HASH(GHASH_H(me), p, sz);
RETURN_ME;
static PyObject *ghmeth_hashbuf##w(PyObject *me, PyObject *arg) \
{ \
char *p; \
- int sz; \
+ Py_ssize_t sz; \
if (!PyArg_ParseTuple(arg, "s#:hashbuf" #w, &p, &sz)) goto end; \
if (sz > MASK##n) TYERR("string too long"); \
GH_HASHBUF##W(GHASH_H(me), p, sz); \
{
char *kwlist[] = { "k", 0 };
char *k;
- int sz;
+ Py_ssize_t sz;
if (!PyArg_ParseTupleAndKeywords(arg, kw, "s#:new", kwlist, &k, &sz))
goto end;
poly1305key_pyobj *pk = (poly1305key_pyobj *)ty;
poly1305hash_pyobj *ph;
char *m = 0;
- int sz;
+ Py_ssize_t sz;
if (!PyArg_ParseTupleAndKeywords(arg, kw, "|s#:new", kwlist, &m, &sz))
return (0);
char *kwlist[] = { "k", 0 };
poly1305key_pyobj *pk;
char *k;
- int sz;
+ Py_ssize_t sz;
if (!PyArg_ParseTupleAndKeywords(arg, kw, "s#:new", kwlist, &k, &sz))
goto end;
static PyObject *polymeth_hash(PyObject *me, PyObject *arg)
{
char *p;
- int sz;
+ Py_ssize_t sz;
if (!PyArg_ParseTuple(arg, "s#:hash", &p, &sz)) return (0);
poly1305_hash(P1305_CTX(me), p, sz);
RETURN_ME;
uint##n x; \
octet b[SZ_##W]; \
if (!PyArg_ParseTuple(arg, "O&:hashu" #w, convu##n, &x)) goto end; \
- STORE##W(b, n); poly1305_hash(P1305_CTX(me), b, sizeof(b)); \
+ STORE##W(b, x); poly1305_hash(P1305_CTX(me), b, sizeof(b)); \
RETURN_ME; \
end: \
return (0); \
static PyObject *polymeth_hashbuf##w(PyObject *me, PyObject *arg) \
{ \
char *p; \
- int sz; \
+ Py_ssize_t sz; \
octet b[SZ_##W]; \
if (!PyArg_ParseTuple(arg, "s#:hashbuf" #w, &p, &sz)) goto end; \
if (sz > MASK##n) TYERR("string too long"); \
- STORE##W(b, n); poly1305_hash(P1305_CTX(me), b, sizeof(b)); \
+ STORE##W(b, sz); poly1305_hash(P1305_CTX(me), b, sizeof(b)); \
poly1305_hash(P1305_CTX(me), p, sz); \
RETURN_ME; \
end: \
RETURN_ME;
}
+static PyObject *polymeth_flushzero(PyObject *me, PyObject *arg)
+{
+ if (!PyArg_ParseTuple(arg, ":flushzero")) return (0);
+ poly1305_flushzero(P1305_CTX(me));
+ RETURN_ME;
+}
+
static PyObject *polymeth_concat(PyObject *me, PyObject *arg)
{
PyObject *pre, *suff;
#undef METHBUF_
METH (hashstrz, "P.hashstrz(STRING)")
METH (flush, "P.flush()")
+ METH (flushzero, "P.flushzero()")
METH (concat, "P.concat(PREFIX, SUFFIX)")
METH (done, "P.done() -> TAG")
#undef METHNAME
{ \
dance##_ctx dance; \
char *k, *n; \
- int ksz, nsz; \
+ Py_ssize_t ksz, nsz; \
PyObject *rc; \
if (!PyArg_ParseTuple(arg, "s#s#:" #hdance "_prf", \
&k, &ksz, &n, &nsz)) \
{
char *kwlist[] = { "key", 0 };
char *k;
- int sz;
+ Py_ssize_t sz;
const prpinfo *prp = GCPRP_PRP(ty);
PyObject *me;
static PyObject *gpmeth_encrypt(PyObject *me, PyObject *arg)
{
char *p;
- int n;
+ Py_ssize_t n;
PyObject *rc = 0;
if (!PyArg_ParseTuple(arg, "s#:encrypt", &p, &n)) goto end;
static PyObject *gpmeth_decrypt(PyObject *me, PyObject *arg)
{
char *p;
- int n;
+ Py_ssize_t n;
PyObject *rc = 0;
if (!PyArg_ParseTuple(arg, "s#:decrypt", &p, &n)) goto end;