/*----- Key sizes ---------------------------------------------------------*/
-PyTypeObject *keysz_pytype;
-PyTypeObject *keyszany_pytype, *keyszrange_pytype, *keyszset_pytype;
-PyObject *sha_pyobj, *has160_pyobj;
+static PyTypeObject *keysz_pytype;
+static PyTypeObject *keyszany_pytype, *keyszrange_pytype, *keyszset_pytype;
+
+typedef struct keysz_pyobj {
+ PyObject_HEAD
+ int dfl;
+} keysz_pyobj;
+
+typedef struct keyszrange_pyobj {
+ PyObject_HEAD
+ int dfl;
+ int min, max, mod;
+} keyszrange_pyobj;
+
+typedef struct keyszset_pyobj {
+ PyObject_HEAD
+ int dfl;
+ PyObject *set;
+} keyszset_pyobj;
+
+#define KEYSZ_PYCHECK(o) PyObject_TypeCheck((o), keysz_pytype)
#ifndef KSZ_OPMASK
# define KSZ_OPMASK 0x1f
/*----- Symmetric encryption ----------------------------------------------*/
-PyTypeObject *gccipher_pytype, *gcipher_pytype;
+static PyTypeObject *gccipher_pytype, *gcipher_pytype;
+
+typedef struct gccipher_pyobj {
+ PyHeapTypeObject ty;
+ gccipher *cc;
+} gccipher_pyobj;
+
+#define GCCIPHER_PYCHECK(o) PyObject_TypeCheck((o), gccipher_pytype)
+#define GCCIPHER_CC(o) (((gccipher_pyobj *)(o))->cc)
+
+typedef struct gcipher_pyobj {
+ PyObject_HEAD
+ gcipher *c;
+} gcipher_pyobj;
+
+#define GCIPHER_PYCHECK(o) PyObject_TypeCheck((o), gcipher_pytype)
+#define GCIPHER_C(o) (((gcipher_pyobj *)(o))->c)
CONVFUNC(gccipher, gccipher *, GCCIPHER_CC)
-CONVFUNC(gcipher, gcipher *, GCIPHER_C)
-PyObject *gcipher_pywrap(PyObject *cobj, gcipher *c)
+static PyObject *gcipher_pywrap(PyObject *cobj, gcipher *c)
{
gcipher_pyobj *g;
if (!cobj) cobj = gccipher_pywrap((/*unconst*/ gccipher *)GC_CLASS(c));
/*----- Authenticated encryption ------------------------------------------*/
-PyTypeObject *gcaead_pytype, *gaeadkey_pytype;
-PyTypeObject *gcaeadaad_pytype, *gaeadaad_pytype;
-PyTypeObject *gcaeadenc_pytype, *gaeadenc_pytype;
-PyTypeObject *gcaeaddec_pytype, *gaeaddec_pytype;
+static PyTypeObject *gcaead_pytype, *gaeadkey_pytype;
+static PyTypeObject *gcaeadaad_pytype, *gaeadaad_pytype;
+static PyTypeObject *gcaeadenc_pytype, *gaeadenc_pytype;
+static PyTypeObject *gcaeaddec_pytype, *gaeaddec_pytype;
+
+typedef struct gcaead_pyobj {
+ PyHeapTypeObject ty;
+ gcaead *aec;
+ struct gcaeadaad_pyobj *aad;
+ struct gcaeadenc_pyobj *enc;
+ struct gcaeaddec_pyobj *dec;
+} gcaead_pyobj;
+
+#define GCAEAD_PYCHECK(o) PyObject_TypeCheck((o), gcaead_pytype)
+#define GCAEAD_AEC(o) (((gcaead_pyobj *)(o))->aec)
+#define GCAEAD_AAD(o) (((gcaead_pyobj *)(o))->aad)
+#define GCAEAD_ENC(o) (((gcaead_pyobj *)(o))->enc)
+#define GCAEAD_DEC(o) (((gcaead_pyobj *)(o))->dec)
+static PyObject *gcaead_pywrap(gcaead *);
+
+typedef struct gaeadkey_pyobj {
+ PyObject_HEAD
+ gaead_key *k;
+} gaeadkey_pyobj;
+
+#define GAEADKEY_PYCHECK(o) PyObject_TypeCheck((o), gaeadkey_pytype)
+#define GAEADKEY_K(o) (((gaeadkey_pyobj *)(o))->k)
+
+typedef struct gcaeadaad_pyobj {
+ PyHeapTypeObject ty;
+ gcaead_pyobj *key;
+} gcaeadaad_pyobj;
+
+#define GCAEADAAD_KEY(o) (((gcaeadaad_pyobj *)(o))->key)
+static PyObject *gaeadaad_pywrap(PyObject *, gaead_aad *, unsigned, size_t);
+
+typedef struct gaeadaad_pyobj {
+ PyObject_HEAD
+ gaead_aad *a;
+ unsigned f;
+#define AEADF_DEAD 32768u
+ size_t hsz, hlen;
+} gaeadaad_pyobj;
-CONVFUNC(gcaead, gcaead *, GCAEAD_AEC)
-CONVFUNC(gaeadkey, gaead_key *, GAEADKEY_K)
+#define GAEADAAD_PYCHECK(o) PyObject_TypeCheck((o), gaeadaad_pytype)
+#define GAEADAAD_A(o) (((gaeadaad_pyobj *)(o))->a)
+#define GAEADAAD_F(o) (((gaeadaad_pyobj *)(o))->f)
+#define GAEADAAD_HSZ(o) (((gaeadaad_pyobj *)(o))->hsz)
+#define GAEADAAD_HLEN(o) (((gaeadaad_pyobj *)(o))->hlen)
+
+typedef struct gcaeadenc_pyobj {
+ PyHeapTypeObject ty;
+ gcaead_pyobj *key;
+} gcaeadenc_pyobj;
-PyObject *gaeadkey_pywrap(PyObject *cobj, gaead_key *k)
+#define GCAEADENC_KEY(o) (((gcaeadenc_pyobj *)(o))->key)
+static PyObject *gaeadenc_pywrap(PyObject *, gaead_enc *, unsigned,
+ size_t, size_t, size_t);
+
+typedef struct gaeadenc_pyobj {
+ PyObject_HEAD
+ gaead_enc *e;
+ gaeadaad_pyobj *aad;
+ unsigned f;
+ size_t hsz, msz, tsz;
+ size_t mlen;
+} gaeadenc_pyobj;
+
+#define GAEADENC_PYCHECK(o) PyObject_TypeCheck((o), gaeadenc_pytype)
+#define GAEADENC_AAD(o) (((gaeadenc_pyobj *)(o))->aad)
+#define GAEADENC_E(o) (((gaeadenc_pyobj *)(o))->e)
+#define GAEADENC_F(o) (((gaeadenc_pyobj *)(o))->f)
+#define GAEADENC_HSZ(o) (((gaeadenc_pyobj *)(o))->hsz)
+#define GAEADENC_MSZ(o) (((gaeadenc_pyobj *)(o))->msz)
+#define GAEADENC_TSZ(o) (((gaeadenc_pyobj *)(o))->tsz)
+#define GAEADENC_MLEN(o) (((gaeadenc_pyobj *)(o))->mlen)
+
+typedef struct gcaeaddec_pyobj {
+ PyHeapTypeObject ty;
+ gcaead_pyobj *key;
+} gcaeaddec_pyobj;
+
+#define GCAEADDEC_KEY(o) (((gcaeaddec_pyobj *)(o))->key)
+static PyObject *gaeaddec_pywrap(PyObject *, gaead_dec *, unsigned,
+ size_t, size_t, size_t);
+
+typedef struct gaeaddec_pyobj {
+ PyObject_HEAD
+ gaead_dec *d;
+ gaeadaad_pyobj *aad;
+ unsigned f;
+ size_t hsz, csz, tsz;
+ size_t clen;
+} gaeaddec_pyobj;
+
+#define GAEADDEC_PYCHECK(o) PyObject_TypeCheck((o), gaeaddec_pytype)
+#define GAEADDEC_AAD(o) (((gaeaddec_pyobj *)(o))->aad)
+#define GAEADDEC_D(o) (((gaeaddec_pyobj *)(o))->d)
+#define GAEADDEC_F(o) (((gaeaddec_pyobj *)(o))->f)
+#define GAEADDEC_HSZ(o) (((gaeaddec_pyobj *)(o))->hsz)
+#define GAEADDEC_CSZ(o) (((gaeaddec_pyobj *)(o))->csz)
+#define GAEADDEC_TSZ(o) (((gaeaddec_pyobj *)(o))->tsz)
+#define GAEADDEC_CLEN(o) (((gaeaddec_pyobj *)(o))->clen)
+
+static PyObject *gaeadkey_pywrap(PyObject *cobj, gaead_key *k)
{
gaeadkey_pyobj *gk;
return (0);
}
-PyObject *gcaead_pywrap(gcaead *aec)
+static PyObject *gcaead_pywrap(gcaead *aec)
{
gcaead_pyobj *gck;
gcaeadaad_pyobj *gca;
{ 0 }
};
-PyObject *gaeadaad_pywrap(PyObject *cobj, gaead_aad *a,
- unsigned f, size_t hsz)
+static PyObject *gaeadaad_pywrap(PyObject *cobj, gaead_aad *a,
+ unsigned f, size_t hsz)
{
gaeadaad_pyobj *ga;
{ 0 }
};
-PyObject *gaeadenc_pywrap(PyObject *cobj, gaead_enc *e, unsigned f,
- size_t hsz, size_t msz, size_t tsz)
+static PyObject *gaeadenc_pywrap(PyObject *cobj, gaead_enc *e, unsigned f,
+ size_t hsz, size_t msz, size_t tsz)
{
gaeadenc_pyobj *ge;
{ 0 }
};
-PyObject *gaeaddec_pywrap(PyObject *cobj, gaead_dec *d, unsigned f,
- size_t hsz, size_t csz, size_t tsz)
+static PyObject *gaeaddec_pywrap(PyObject *cobj, gaead_dec *d, unsigned f,
+ size_t hsz, size_t csz, size_t tsz)
{
gaeaddec_pyobj *gd;
assert(cobj); Py_INCREF(cobj);
/*----- Hash functions ----------------------------------------------------*/
-PyTypeObject *gchash_pytype, *ghash_pytype;
+PyTypeObject *gchash_pytype;
+static PyTypeObject *ghash_pytype;
+PyObject *sha_pyobj, *has160_pyobj;
+
+typedef struct ghash_pyobj {
+ PyObject_HEAD
+ ghash *h;
+} ghash_pyobj;
+
+#define GHASH_PYCHECK(o) PyObject_TypeCheck((o), ghash_pytype)
+#define GHASH_H(o) (((ghash_pyobj *)(o))->h)
CONVFUNC(gchash, gchash *, GCHASH_CH)
CONVFUNC(ghash, ghash *, GHASH_H)
return (0);
}
-PyObject *gchash_pywrap(gchash *ch)
+static PyObject *gchash_pywrap(gchash *ch)
{
gchash_pyobj *g = newtype(gchash_pytype, 0, ch->name);
g->ch = ch;
/*----- Message authentication --------------------------------------------*/
-PyTypeObject *gcmac_pytype, *gmac_pytype, *gmhash_pytype;
+static PyTypeObject *gcmac_pytype, *gmac_pytype, *gmhash_pytype;
+
+typedef struct gcmac_pyobj {
+ PyHeapTypeObject ty;
+ gcmac *cm;
+} gcmac_pyobj;
+#define GCMAC_PYCHECK(o) PyObject_TypeCheck((o), gcmac_pytype)
+#define GCMAC_CM(o) (((gcmac_pyobj *)(o))->cm)
+#define GCMAC_F(o) (((gcmac_pyobj *)(o))->f)
CONVFUNC(gcmac, gcmac *, GCMAC_CM)
-CONVFUNC(gmac, gmac *, GMAC_M)
-CONVFUNC(gmhash, ghash *, GHASH_H)
+static PyObject *gmac_pywrap(PyObject *, gmac *);
+
+typedef struct gmac_pyobj {
+ PyHeapTypeObject ty;
+ gmac *m;
+} gmac_pyobj;
+
+extern PyTypeObject *gmac_pytype;
+#define GMAC_PYCHECK(o) PyObject_TypeCheck((o), gmac_pytype)
+#define GMAC_M(o) (((gmac_pyobj *)(o))->m)
+#define GMAC_F(o) (((gmac_pyobj *)(o))->f)
+extern PyObject *gmac_pywrap(PyObject *, gmac *);
+extern int convgmac(PyObject *, void *);
static PyObject *gmac_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
{
return ((PyObject *)g);
}
-PyObject *gcmac_pywrap(gcmac *cm)
+static PyObject *gcmac_pywrap(gcmac *cm)
{
gcmac_pyobj *g = newtype(gcmac_pytype, 0, cm->name);
g->cm = cm;
return ((PyObject *)g);
}
-PyObject *gmac_pywrap(PyObject *cobj, gmac *m)
+static PyObject *gmac_pywrap(PyObject *cobj, gmac *m)
{
gmac_pyobj *g;
if (!cobj) cobj = gcmac_pywrap((/*unconst*/ gcmac *)GM_CLASS(m));
/*----- Main code ---------------------------------------------------------*/
-PyTypeObject *bytestring_pytype;
+static PyTypeObject *bytestring_pytype;
static PyObject *empty, *bytev[256];
/*----- Bytestrings -------------------------------------------------------*/
-PyTypeObject *bytestring_pyobj;
PyObject *bytestring_pywrap(const void *, size_t);
PyObject *bytestring_pywrapbuf(buf *);
field *f;
} field_pyobj;
-extern PyTypeObject *fe_pytype;
-#define FE_PYCHECK(o) PyObject_TypeCheck((o), fe_pytype)
-#define FE_F(o) (((fe_pyobj *)(o))->f)
-#define FE_FOBJ(o) ((PyObject *)(o)->ob_type)
-#define FE_X(o) (((fe_pyobj *)(o))->x)
-extern PyObject *fe_pywrap(PyObject *, mp *);
-
-typedef struct fe_pyobj {
- PyObject_HEAD
- field *f;
- mp *x;
-} fe_pyobj;
-
extern PyTypeObject *field_pytype;
extern PyTypeObject *primefield_pytype;
extern PyTypeObject *niceprimefield_pytype;
extern PyObject *field_pywrap(field *);
extern field *field_copy(field *);
+typedef struct fe_pyobj {
+ PyObject_HEAD
+ field *f;
+ mp *x;
+} fe_pyobj;
+
+extern PyTypeObject *fe_pytype;
+#define FE_PYCHECK(o) PyObject_TypeCheck((o), fe_pytype)
+#define FE_F(o) (((fe_pyobj *)(o))->f)
+#define FE_FOBJ(o) ((PyObject *)(o)->ob_type)
+#define FE_X(o) (((fe_pyobj *)(o))->x)
+extern PyObject *fe_pywrap(PyObject *, mp *);
+
/*----- Elliptic curves ---------------------------------------------------*/
+typedef struct eccurve_pyobj {
+ PyHeapTypeObject ty;
+ ec_curve *c;
+ PyObject *fobj;
+} eccurve_pyobj;
+
+extern PyTypeObject *eccurve_pytype;
+extern PyTypeObject *ecprimecurve_pytype;
+extern PyTypeObject *ecprimeprojcurve_pytype;
+extern PyTypeObject *ecbincurve_pytype;
+extern PyTypeObject *ecbinprojcurve_pytype;
+#define ECCURVE_PYCHECK(o) PyObject_TypeCheck((o), eccurve_pytype)
+#define ECCURVE_C(o) (((eccurve_pyobj *)(o))->c)
+#define ECCURVE_FOBJ(o) (((eccurve_pyobj *)(o))->fobj)
+extern PyObject *eccurve_pywrap(PyObject *, ec_curve *);
+extern ec_curve *eccurve_copy(ec_curve *);
+
typedef struct ecpt_pyobj {
PyObject_HEAD
ec_curve *c;
extern void getecptout(ec *, PyObject *);
extern int convecpt(PyObject *, void *);
-typedef struct eccurve_pyobj {
- PyHeapTypeObject ty;
- ec_curve *c;
- PyObject *fobj;
-} eccurve_pyobj;
-
-extern PyTypeObject *eccurve_pytype;
-extern PyTypeObject *ecprimecurve_pytype;
-extern PyTypeObject *ecprimeprojcurve_pytype;
-extern PyTypeObject *ecbincurve_pytype;
-extern PyTypeObject *ecbinprojcurve_pytype;
-#define ECCURVE_PYCHECK(o) PyObject_TypeCheck((o), eccurve_pytype)
-#define ECCURVE_C(o) (((eccurve_pyobj *)(o))->c)
-#define ECCURVE_FOBJ(o) (((eccurve_pyobj *)(o))->fobj)
-extern PyObject *eccurve_pywrap(PyObject *, ec_curve *);
-extern ec_curve *eccurve_copy(ec_curve *);
-
typedef struct ecinfo_pyobj {
PyObject_HEAD
ec_info ei;
/*----- Cyclic groups -----------------------------------------------------*/
-typedef struct fginfo_pyobj {
- PyObject_HEAD
- gprime_param dp;
-} fginfo_pyobj;
-
-PyTypeObject *fginfo_pytype, *dhinfo_pytype, *bindhinfo_pytype;
-#define FGINFO_DP(fg) (&((fginfo_pyobj *)(fg))->dp)
-PyObject *fginfo_pywrap(gprime_param *, PyTypeObject *);
-
typedef struct ge_pyobj {
PyObject_HEAD
ge *x;
} group_pyobj;
extern PyTypeObject *group_pytype;
-extern PyTypeObject *primegroup_pytype, *bingroup_pytype, *ecgroup_pytype;
#define GROUP_G(o) (((group_pyobj *)(o))->g)
extern PyObject *group_pywrap(group *);
extern group *group_copy(group *);
grand *r;
} grand_pyobj;
-extern PyTypeObject *grand_pytype, *truerand_pytype;
-extern PyTypeObject *lcrand_pytype,* fibrand_pytype;
-extern PyTypeObject *dsarand_pytype, *bbs_pytype;
+extern PyTypeObject *grand_pytype;
extern PyObject *rand_pyobj;
#define GRAND_PYCHECK(o) PyObject_TypeCheck((o), grand_pytype)
#define GRAND_F(o) (((grand_pyobj *)(o))->f)
extern PyObject *grand_pywrap(grand *, unsigned);
extern int convgrand(PyObject *, void *);
-/*----- Key sizes ---------------------------------------------------------*/
-
-typedef struct keysz_pyobj {
- PyObject_HEAD
- int dfl;
-} keysz_pyobj;
-
-typedef struct keyszrange_pyobj {
- PyObject_HEAD
- int dfl;
- int min, max, mod;
-} keyszrange_pyobj;
-
-typedef struct keyszset_pyobj {
- PyObject_HEAD
- int dfl;
- PyObject *set;
-} keyszset_pyobj;
-
-#define KEYSZ_PYCHECK(o) PyObject_TypeCheck((o), keysz_pytype)
-extern PyObject *keysz_pywrap(const octet *);
-
/*----- Symmetric cryptography --------------------------------------------*/
-typedef struct gccipher_pyobj {
- PyHeapTypeObject ty;
- gccipher *cc;
-} gccipher_pyobj;
+extern PyObject *keysz_pywrap(const octet *);
-extern PyTypeObject *gccipher_pytype;
-#define GCCIPHER_PYCHECK(o) PyObject_TypeCheck((o), gccipher_pytype)
-#define GCCIPHER_CC(o) (((gccipher_pyobj *)(o))->cc)
-extern PyObject *gccipher_pywrap(gccipher *);
extern int convgccipher(PyObject *, void *);
-
-typedef struct gcipher_pyobj {
- PyObject_HEAD
- gcipher *c;
-} gcipher_pyobj;
-
-extern PyTypeObject *gcipher_pytype;
-#define GCIPHER_PYCHECK(o) PyObject_TypeCheck((o), gcipher_pytype)
-#define GCIPHER_C(o) (((gcipher_pyobj *)(o))->c)
-extern PyObject *gcipher_pywrap(PyObject *, gcipher *);
-extern int convgcipher(PyObject *, void *);
-
-typedef struct gcaead_pyobj {
- PyHeapTypeObject ty;
- gcaead *aec;
- struct gcaeadaad_pyobj *aad;
- struct gcaeadenc_pyobj *enc;
- struct gcaeaddec_pyobj *dec;
-} gcaead_pyobj;
-
-extern PyTypeObject *gcaead_pytype;
-#define GCAEAD_PYCHECK(o) PyObject_TypeCheck((o), gcaead_pytype)
-#define GCAEAD_AEC(o) (((gcaead_pyobj *)(o))->aec)
-#define GCAEAD_AAD(o) (((gcaead_pyobj *)(o))->aad)
-#define GCAEAD_ENC(o) (((gcaead_pyobj *)(o))->enc)
-#define GCAEAD_DEC(o) (((gcaead_pyobj *)(o))->dec)
-extern PyObject *gcaead_pywrap(gcaead *);
-extern int convgcaead(PyObject *, void *);
-
-typedef struct gaeadkey_pyobj {
- PyObject_HEAD
- gaead_key *k;
-} gaeadkey_pyobj;
-
-extern PyTypeObject *gaeadkey_pytype;
-#define GAEADKEY_PYCHECK(o) PyObject_TypeCheck((o), gaeadkey_pytype)
-#define GAEADKEY_K(o) (((gaeadkey_pyobj *)(o))->k)
-extern PyObject *gaeadkey_pywrap(PyObject *, gaead_key *);
-extern int convgaeadkey(PyObject *, void *);
-
-typedef struct gcaeadaad_pyobj {
- PyHeapTypeObject ty;
- gcaead_pyobj *key;
-} gcaeadaad_pyobj;
-#define GCAEADAAD_KEY(o) (((gcaeadaad_pyobj *)(o))->key)
-extern PyTypeObject *gcaeadaad_pytype;
-
-typedef struct gaeadaad_pyobj {
- PyObject_HEAD
- gaead_aad *a;
- unsigned f;
-#define AEADF_DEAD 32768u
- size_t hsz, hlen;
-} gaeadaad_pyobj;
-
-extern PyTypeObject *gaeadaad_pytype;
-#define GAEADAAD_PYCHECK(o) PyObject_TypeCheck((o), gaeadaad_pytype)
-#define GAEADAAD_A(o) (((gaeadaad_pyobj *)(o))->a)
-#define GAEADAAD_F(o) (((gaeadaad_pyobj *)(o))->f)
-#define GAEADAAD_HSZ(o) (((gaeadaad_pyobj *)(o))->hsz)
-#define GAEADAAD_HLEN(o) (((gaeadaad_pyobj *)(o))->hlen)
-extern PyObject *gaeadaad_pywrap(PyObject *, gaead_aad *, unsigned, size_t);
-extern int convgaeadaad(PyObject *, void *);
-
-typedef struct gcaeadenc_pyobj {
- PyHeapTypeObject ty;
- gcaead_pyobj *key;
-} gcaeadenc_pyobj;
-#define GCAEADENC_KEY(o) (((gcaeadenc_pyobj *)(o))->key)
-extern PyTypeObject *gcaeadenc_pytype;
-
-typedef struct gaeadenc_pyobj {
- PyObject_HEAD
- gaead_enc *e;
- gaeadaad_pyobj *aad;
- unsigned f;
- size_t hsz, msz, tsz;
- size_t mlen;
-} gaeadenc_pyobj;
-
-extern PyTypeObject *gaeadenc_pytype;
-#define GAEADENC_PYCHECK(o) PyObject_TypeCheck((o), gaeadenc_pytype)
-#define GAEADENC_AAD(o) (((gaeadenc_pyobj *)(o))->aad)
-#define GAEADENC_E(o) (((gaeadenc_pyobj *)(o))->e)
-#define GAEADENC_F(o) (((gaeadenc_pyobj *)(o))->f)
-#define GAEADENC_HSZ(o) (((gaeadenc_pyobj *)(o))->hsz)
-#define GAEADENC_MSZ(o) (((gaeadenc_pyobj *)(o))->msz)
-#define GAEADENC_TSZ(o) (((gaeadenc_pyobj *)(o))->tsz)
-#define GAEADENC_MLEN(o) (((gaeadenc_pyobj *)(o))->mlen)
-extern PyObject *gaeadenc_pywrap(PyObject *, gaead_enc *, unsigned,
- size_t, size_t, size_t);
-extern int convgaeadenc(PyObject *, void *);
-
-typedef struct gcaeaddec_pyobj {
- PyHeapTypeObject ty;
- gcaead_pyobj *key;
-} gcaeaddec_pyobj;
-#define GCAEADDEC_KEY(o) (((gcaeaddec_pyobj *)(o))->key)
-extern PyTypeObject *gcaeaddec_pytype;
-
-typedef struct gaeaddec_pyobj {
- PyObject_HEAD
- gaead_dec *d;
- gaeadaad_pyobj *aad;
- unsigned f;
- size_t hsz, csz, tsz;
- size_t clen;
-} gaeaddec_pyobj;
-
-extern PyTypeObject *gaeaddec_pytype;
-#define GAEADDEC_PYCHECK(o) PyObject_TypeCheck((o), gaeaddec_pytype)
-#define GAEADDEC_AAD(o) (((gaeaddec_pyobj *)(o))->aad)
-#define GAEADDEC_D(o) (((gaeaddec_pyobj *)(o))->d)
-#define GAEADDEC_F(o) (((gaeaddec_pyobj *)(o))->f)
-#define GAEADDEC_HSZ(o) (((gaeaddec_pyobj *)(o))->hsz)
-#define GAEADDEC_CSZ(o) (((gaeaddec_pyobj *)(o))->csz)
-#define GAEADDEC_TSZ(o) (((gaeaddec_pyobj *)(o))->tsz)
-#define GAEADDEC_CLEN(o) (((gaeaddec_pyobj *)(o))->clen)
-extern PyObject *gaeaddec_pywrap(PyObject *, gaead_dec *, unsigned,
- size_t, size_t, size_t);
-extern int convgaeaddec(PyObject *, void *);
+extern PyObject *gccipher_pywrap(gccipher *);
typedef struct gchash_pyobj {
PyHeapTypeObject ty;
} gchash_pyobj;
extern PyTypeObject *gchash_pytype;
+extern PyObject *sha_pyobj, *has160_pyobj;
#define GCHASH_PYCHECK(o) PyObject_TypeCheck((o), gchash_pytype)
#define GCHASH_CH(o) (((gchash_pyobj *)(o))->ch)
-extern PyObject *gchash_pywrap(gchash *);
-extern int convgchash(PyObject *, void *);
-
-typedef struct ghash_pyobj {
- PyObject_HEAD
- ghash *h;
-} ghash_pyobj;
-
-extern PyTypeObject *ghash_pytype, *gmhash_pytype;
-extern PyObject *sha_pyobj, *has160_pyobj;
-#define GHASH_PYCHECK(o) PyObject_TypeCheck((o), ghash_pytype)
-#define GHASH_H(o) (((ghash_pyobj *)(o))->h)
extern PyObject *ghash_pywrap(PyObject *, ghash *);
+extern int convgchash(PyObject *, void *);
extern int convghash(PyObject *, void *);
-extern int convgmhash(PyObject *, void *);
-typedef struct gcmac_pyobj {
- PyHeapTypeObject ty;
- gcmac *cm;
-} gcmac_pyobj;
-
-extern PyTypeObject *gcmac_pytype;
-#define GCMAC_PYCHECK(o) PyObject_TypeCheck((o), gcmac_pytype)
-#define GCMAC_CM(o) (((gcmac_pyobj *)(o))->cm)
-#define GCMAC_F(o) (((gcmac_pyobj *)(o))->f)
-extern PyObject *gcmac_pywrap(gcmac *);
extern int convgcmac(PyObject *, void *);
-typedef struct gmac_pyobj {
- PyHeapTypeObject ty;
- gmac *m;
-} gmac_pyobj;
-
-extern PyTypeObject *gmac_pytype;
-#define GMAC_PYCHECK(o) PyObject_TypeCheck((o), gmac_pytype)
-#define GMAC_M(o) (((gmac_pyobj *)(o))->m)
-#define GMAC_F(o) (((gmac_pyobj *)(o))->f)
-extern PyObject *gmac_pywrap(PyObject *, gmac *);
-extern int convgmac(PyObject *, void *);
-
/*----- Key generation ----------------------------------------------------*/
typedef struct pfilt_pyobj {
/*----- DH and binary group infos -----------------------------------------*/
-PyObject *fginfo_pywrap(gprime_param *dp, PyTypeObject *ty)
+static PyTypeObject *fginfo_pytype, *dhinfo_pytype, *bindhinfo_pytype;
+
+typedef struct fginfo_pyobj {
+ PyObject_HEAD
+ gprime_param dp;
+} fginfo_pyobj;
+
+#define FGINFO_DP(fg) (&((fginfo_pyobj *)(fg))->dp)
+
+static PyObject *fginfo_pywrap(gprime_param *dp, PyTypeObject *ty)
{
fginfo_pyobj *z = PyObject_New(fginfo_pyobj, ty);
z->dp = *dp;
/*----- General utilities -------------------------------------------------*/
PyTypeObject *ge_pytype, *group_pytype;
-PyTypeObject *primegroup_pytype, *bingroup_pytype, *ecgroup_pytype;
+static PyTypeObject *primegroup_pytype, *bingroup_pytype, *ecgroup_pytype;
group *group_copy(group *g)
{
/*----- Main code ---------------------------------------------------------*/
-PyTypeObject *grand_pytype, *truerand_pytype;
-PyTypeObject *lcrand_pytype, *fibrand_pytype;
-PyTypeObject *dsarand_pytype, *bbs_pytype, *bbspriv_pytype;
-PyTypeObject *sslprf_pytype, *tlsdx_pytype, *tlsprf_pytype;
+PyTypeObject *grand_pytype;
+static PyTypeObject *truerand_pytype;
+static PyTypeObject *lcrand_pytype, *fibrand_pytype;
+static PyTypeObject *dsarand_pytype, *bbs_pytype, *bbspriv_pytype;
+static PyTypeObject *sslprf_pytype, *tlsdx_pytype, *tlsprf_pytype;
PyObject *rand_pyobj;
static PyObject *gccrands_dict;