- char *p; 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, sz); if (gaeadaad_hash(me, b, sizeof(b))) goto end; \
- if (gaeadaad_hash(me, p, sz)) goto end; \
+ struct bin in; octet b[SZ_##W]; \
+ if (!PyArg_ParseTuple(arg, "O&:hashbuf" #w, convbin, &in)) goto end; \
+ if (in.sz > MASK##n) TYERR("string too long"); \
+ STORE##W(b, in.sz); if (gaeadaad_hash(me, b, sizeof(b))) goto end; \
+ if (gaeadaad_hash(me, in.p, in.sz)) goto end; \