/*----- Main code ---------------------------------------------------------*/
static const struct nameval consts[] = {
-#define C(x) { #x, x }
+#define CF(f, x) { #x, f, x }
+#define C(x) { #x, 0, x }
C(FTY_PRIME), C(FTY_BINARY),
C(PGEN_PASS), C(PGEN_FAIL), C(PGEN_BEGIN), C(PGEN_TRY), C(PGEN_DONE),
C(PGEN_ABORT),
C(MPW_MAX),
+ C(RAND_IBITS),
C(PMODE_READ), C(PMODE_VERIFY),
C(KOPEN_READ), C(KOPEN_WRITE), C(KOPEN_NOFILE),
C(KEXP_FOREVER), C(KEXP_EXPIRE),
C(KF_CATMASK), C(KCAT_SYMM), C(KCAT_PRIV), C(KCAT_PUB), C(KCAT_SHARE),
C(KF_NONSECRET),
C(KF_BURN), C(KF_OPT),
-#define ENTRY(tag, val, str) C(KERR_##tag),
+ C(EC_XONLY), C(EC_YBIT), C(EC_LSB), C(EC_CMPR), C(EC_EXPLY), C(EC_SORT),
+ C(X25519_KEYSZ), C(X25519_PUBSZ), C(X25519_OUTSZ),
+ C(X448_KEYSZ), C(X448_PUBSZ), C(X448_OUTSZ),
+ C(ED25519_KEYSZ), C(ED25519_PUBSZ), C(ED25519_SIGSZ),
+ C(ED25519_MAXPERSOSZ),
+ C(ED448_KEYSZ), C(ED448_PUBSZ), C(ED448_SIGSZ), C(ED448_MAXPERSOSZ),
+ C(AEADF_PCHSZ), C(AEADF_PCMSZ), C(AEADF_PCTSZ),
+ C(AEADF_AADNDEP), C(AEADF_AADFIRST), C(AEADF_NOAAD),
+#define ENTRY(tag, val, str) CF(CF_SIGNED, KERR_##tag),
KEY_ERRORS(ENTRY)
#undef ENTRY
#undef C
+#undef CF
{ 0 }
};
arg = PyTuple_GetItem(arg, 0);
Py_INCREF(arg);
if (!PySequence_Check(arg)) TYERR("not a sequence");
- n = PySequence_Size(arg); if (!n) { z = id(me); goto end; }
+ n = PySequence_Size(arg); if (n < 0) goto end;
+ if (!n) { z = id(me); goto end; }
x = PySequence_GetItem(arg, 0);
if (PySequence_Check(x))
flat = 0;