cinap_lenrekadd hg and python4bb9e2215 years agoHistory
701 lines · 21.9 KB · C
RawDownload
}; static PyObject *SHA256_get_block_size(PyObject *self, void *closure){    return PyInt_FromLong(SHA_BLOCKSIZE);} static PyObject *SHA256_get_name(PyObject *self, void *closure){    if (((SHAobject *)self)->digestsize == 32)        return PyString_FromStringAndSize("SHA256", 6);    else        return PyString_FromStringAndSize("SHA224", 6);} static PyGetSetDef SHA_getseters[] = {    {"block_size",     (getter)SHA256_get_block_size, NULL,     NULL,     NULL},    {"name",     (getter)SHA256_get_name, NULL,     NULL,     NULL},    {NULL}  /* Sentinel */}; static PyMemberDef SHA_members[] = {    {"digest_size", T_INT, offsetof(SHAobject, digestsize), READONLY, NULL},    /* the old md5 and sha modules support 'digest_size' as in PEP 247.     * the old sha module also supported 'digestsize'.  ugh. */    {"digestsize", T_INT, offsetof(SHAobject, digestsize), READONLY, NULL},    {NULL}  /* Sentinel */}; static PyTypeObject SHA224type = {    PyObject_HEAD_INIT(NULL)    0,			/*ob_size*/    "_sha256.sha224",	/*tp_name*/    sizeof(SHAobject),	/*tp_size*/    0,			/*tp_itemsize*/    /* methods */    SHA_dealloc,	/*tp_dealloc*/    0,			/*tp_print*/    0,          	/*tp_getattr*/    0,                  /*tp_setattr*/    0,                  /*tp_compare*/    0,                  /*tp_repr*/    0,                  /*tp_as_number*/    0,                  /*tp_as_sequence*/    0,                  /*tp_as_mapping*/    0,                  /*tp_hash*/    0,                  /*tp_call*/    0,                  /*tp_str*/    0,                  /*tp_getattro*/    0,                  /*tp_setattro*/    0,                  /*tp_as_buffer*/    Py_TPFLAGS_DEFAULT, /*tp_flags*/    0,                  /*tp_doc*/    0,                  /*tp_traverse*/    0,			/*tp_clear*/    0,			/*tp_richcompare*/    0,			/*tp_weaklistoffset*/    0,			/*tp_iter*/    0,			/*tp_iternext*/    SHA_methods,	/* tp_methods */    SHA_members,	/* tp_members */    SHA_getseters,      /* tp_getset */}; static PyTypeObject SHA256type = {    PyObject_HEAD_INIT(NULL)    0,			/*ob_size*/    "_sha256.sha256",	/*tp_name*/    sizeof(SHAobject),	/*tp_size*/    0,			/*tp_itemsize*/    /* methods */    SHA_dealloc,	/*tp_dealloc*/    0,			/*tp_print*/    0,          	/*tp_getattr*/    0,                  /*tp_setattr*/    0,                  /*tp_compare*/    0,                  /*tp_repr*/    0,                  /*tp_as_number*/    0,                  /*tp_as_sequence*/    0,                  /*tp_as_mapping*/    0,                  /*tp_hash*/    0,                  /*tp_call*/    0,                  /*tp_str*/    0,                  /*tp_getattro*/    0,                  /*tp_setattro*/    0,                  /*tp_as_buffer*/    Py_TPFLAGS_DEFAULT, /*tp_flags*/    0,                  /*tp_doc*/    0,                  /*tp_traverse*/    0,			/*tp_clear*/    0,			/*tp_richcompare*/    0,			/*tp_weaklistoffset*/    0,			/*tp_iter*/    0,			/*tp_iternext*/    SHA_methods,	/* tp_methods */    SHA_members,	/* tp_members */    SHA_getseters,      /* tp_getset */};  /* The single module-level function: new() */ PyDoc_STRVAR(SHA256_new__doc__,"Return a new SHA-256 hash object; optionally initialized with a string."); static PyObject *SHA256_new(PyObject *self, PyObject *args, PyObject *kwdict){    static char *kwlist[] = {"string", NULL};    SHAobject *new;    unsigned char *cp = NULL;    int len;     if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s#:new", kwlist,                                     &cp, &len)) {        return NULL;    }     if ((new = newSHA256object()) == NULL)        return NULL;     sha_init(new);     if (PyErr_Occurred()) {        Py_DECREF(new);        return NULL;    }    if (cp)        sha_update(new, cp, len);     return (PyObject *)new;} PyDoc_STRVAR(SHA224_new__doc__,"Return a new SHA-224 hash object; optionally initialized with a string."); static PyObject *SHA224_new(PyObject *self, PyObject *args, PyObject *kwdict){    static char *kwlist[] = {"string", NULL};    SHAobject *new;    unsigned char *cp = NULL;    int len;     if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s#:new", kwlist,                                     &cp, &len)) {        return NULL;    }     if ((new = newSHA224object()) == NULL)        return NULL;     sha224_init(new);     if (PyErr_Occurred()) {        Py_DECREF(new);        return NULL;    }    if (cp)        sha_update(new, cp, len);     return (PyObject *)new;}  /* List of functions exported by this module */ static struct PyMethodDef SHA_functions[] = {    {"sha256", (PyCFunction)SHA256_new, METH_VARARGS|METH_KEYWORDS, SHA256_new__doc__},    {"sha224", (PyCFunction)SHA224_new, METH_VARARGS|METH_KEYWORDS, SHA224_new__doc__},    {NULL,	NULL}		 /* Sentinel */};  /* Initialize this module. */ #define insint(n,v) { PyModule_AddIntConstant(m,n,v); } PyMODINIT_FUNCinit_sha256(void){    PyObject *m;     SHA224type.ob_type = &PyType_Type;    if (PyType_Ready(&SHA224type) < 0)        return;    SHA256type.ob_type = &PyType_Type;    if (PyType_Ready(&SHA256type) < 0)        return;    m = Py_InitModule("_sha256", SHA_functions);    if (m == NULL)	return;}

Lines 501–701 of 701. Previous lines