Much wider support for Catacomb in all its glory.
[catacomb-perl] / catacomb.xs
index 0f010b4..5bcc441 100644 (file)
 
 #include "catacomb-perl.h"
 
+const struct consttab ct[] = {
+#define C(x) { #x, x }
+  C(GRAND_CRYPTO),
+  C(PGEN_BEGIN), C(PGEN_TRY), C(PGEN_FAIL), C(PGEN_PASS),
+    C(PGEN_DONE), C(PGEN_ABORT),
+  C(DH_SUBGROUP),
+  C(KF_ENCMASK), C(KENC_BINARY), C(KENC_MP), C(KENC_STRUCT), 
+    C(KENC_ENCRYPT), C(KENC_STRING), C(KENC_EC),
+  C(KF_CATMASK), C(KCAT_SYMM), C(KCAT_PRIV), C(KCAT_PUB),
+    C(KCAT_SHARE), C(KF_NONSECRET),
+  C(KF_BURN), C(KF_TEMP), C(KF_OPT),
+  C(KOPEN_READ), C(KOPEN_WRITE), C(KOPEN_MASK), C(KOPEN_NOFILE),
+  C(KEXP_FOREVER), C(KEXP_EXPIRE),
+  C(KERR_OK), C(KERR_BADTAG), C(KERR_BADTYPE), C(KERR_BADCOMMENT),
+    C(KERR_DUPID), C(KERR_DUPTAG), C(KERR_READONLY), 
+    C(KERR_WILLEXPIRE), C(KERR_EXPIRED), C(KERR_BADFLAGS),
+    C(KERR_BADPASS), C(KERR_WRONGTYPE), C(KERR_NOTFOUND),
+    C(KERR_NOTFOUND), C(KERR_BADATTR), C(KERR_MALFORMED),
+    C(KERR_IO),
+  C(KWRITE_OK), C(KWRITE_FAIL), C(KWRITE_BROKEN),
+  C(FTY_PRIME), C(FTY_BINARY),
+#undef C
+  { 0,                         0 },
+};
+
 MODULE = Catacomb PACKAGE = Catacomb
 
 U32
-const(name)
+_const(name)
        char *name
        PREINIT:
-       const struct consttab ct[] = {
-#define C(x) { #x, x }
-         C(GRAND_CRYPTO),
-         C(PGEN_BEGIN), C(PGEN_TRY), C(PGEN_FAIL), C(PGEN_PASS),
-           C(PGEN_DONE), C(PGEN_ABORT),
-         C(KF_ENCMASK), C(KENC_BINARY), C(KENC_MP), C(KENC_STRUCT), 
-           C(KENC_ENCRYPT), C(KENC_STRING), C(KENC_EC),
-         C(KF_CATMASK), C(KCAT_SYMM), C(KCAT_PRIV), C(KCAT_PUB),
-           C(KCAT_SHARE), C(KF_NONSECRET),
-         C(KF_BURN), C(KF_TEMP), C(KF_OPT),
-         C(KOPEN_READ), C(KOPEN_WRITE), C(KOPEN_MASK), C(KOPEN_NOFILE),
-         C(KEXP_FOREVER), C(KEXP_EXPIRE),
-         C(KERR_OK), C(KERR_BADTAG), C(KERR_BADTYPE), C(KERR_BADCOMMENT),
-           C(KERR_DUPID), C(KERR_DUPTAG), C(KERR_READONLY), 
-           C(KERR_WILLEXPIRE), C(KERR_EXPIRED), C(KERR_BADFLAGS),
-           C(KERR_BADPASS), C(KERR_WRONGTYPE), C(KERR_NOTFOUND),
-           C(KERR_NOTFOUND), C(KERR_BADATTR),
-         C(KWRITE_OK), C(KWRITE_FAIL), C(KWRITE_BROKEN),
-         C(FTY_PRIME), C(FTY_BINARY),
-#undef C
-         { 0,                          0 },
-       };
        CODE:
        RETVAL = findconst(ct, "Catacomb", name);
        OUTPUT:
        RETVAL
 
+void
+_constants()
+       PREINIT:
+       int i;
+       PPCODE:
+       for (i = 0; ct[i].name; i++)
+         XPUSHs(sv_2mortal(newSVpv(ct[i].name, 0)));
+
+void
+list(name)
+       const char *name
+       PPCODE:
+       PUTBACK;
+       names(name);
+       SPAGAIN;
+
 PROTOTYPES: DISABLE
 
 INCLUDE: algorithms.xs
@@ -68,6 +87,8 @@ INCLUDE: mp.xs
 INCLUDE: gf.xs
 INCLUDE: field.xs
 INCLUDE: ec.xs
+INCLUDE: group.xs
+INCLUDE: pubkey.xs
 INCLUDE: misc.xs
 INCLUDE: pgen.xs
 INCLUDE: key.xs