Ignore:
Timestamp:
Mar 19, 2014, 11:11:30 AM (11 years ago)
Author:
dmik
Message:

python: Update vendor to 2.7.6.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • python/vendor/current/Modules/sha256module.c

    r2 r388  
    2323/* Endianness testing and definitions */
    2424#define TestEndianness(variable) {int i=1; variable=PCT_BIG_ENDIAN;\
    25         if (*((char*)&i)==1) variable=PCT_LITTLE_ENDIAN;}
     25        if (*((char*)&i)==1) variable=PCT_LITTLE_ENDIAN;}
    2626
    2727#define PCT_LITTLE_ENDIAN 1
     
    3333
    3434#if SIZEOF_INT == 4
    35 typedef unsigned int SHA_INT32; /* 32-bit integer */
     35typedef unsigned int SHA_INT32; /* 32-bit integer */
    3636#else
    3737/* not defined. compilation will die. */
     
    4747typedef struct {
    4848    PyObject_HEAD
    49     SHA_INT32 digest[8];                /* Message digest */
    50     SHA_INT32 count_lo, count_hi;       /* 64-bit bit count */
    51     SHA_BYTE data[SHA_BLOCKSIZE];       /* SHA data buffer */
     49    SHA_INT32 digest[8];                /* Message digest */
     50    SHA_INT32 count_lo, count_hi;       /* 64-bit bit count */
     51    SHA_BYTE data[SHA_BLOCKSIZE];       /* SHA data buffer */
    5252    int Endianness;
    53     int local;                          /* unprocessed amount in data */
     53    int local;                          /* unprocessed amount in data */
    5454    int digestsize;
    5555} SHAobject;
     
    6363
    6464    if ( Endianness == PCT_BIG_ENDIAN )
    65         return;
     65        return;
    6666
    6767    byteCount /= sizeof(*buffer);
     
    115115((unsigned long)(x)<<(unsigned long)(32-((y)&31)))) & 0xFFFFFFFFUL)
    116116#define Ch(x,y,z)       (z ^ (x & (y ^ z)))
    117 #define Maj(x,y,z)      (((x | y) & z) | (x & y)) 
     117#define Maj(x,y,z)      (((x | y) & z) | (x & y))
    118118#define S(x, n)         ROR((x),(n))
    119119#define R(x, n)         (((x)&0xFFFFFFFFUL)>>(n))
     
    128128{
    129129    int i;
    130         SHA_INT32 S[8], W[64], t0, t1;
     130        SHA_INT32 S[8], W[64], t0, t1;
    131131
    132132    memcpy(W, sha_info->data, sizeof(sha_info->data));
     
    134134
    135135    for (i = 16; i < 64; ++i) {
    136                 W[i] = Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + W[i - 16];
     136                W[i] = Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + W[i - 16];
    137137    }
    138138    for (i = 0; i < 8; ++i) {
     
    212212    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],63,0xc67178f2);
    213213
    214 #undef RND     
    215    
     214#undef RND
     215
    216216    /* feedback */
    217217    for (i = 0; i < 8; i++) {
     
    315315    ((SHA_BYTE *) sha_info->data)[count++] = 0x80;
    316316    if (count > SHA_BLOCKSIZE - 8) {
    317         memset(((SHA_BYTE *) sha_info->data) + count, 0,
    318                SHA_BLOCKSIZE - count);
    319         sha_transform(sha_info);
    320         memset((SHA_BYTE *) sha_info->data, 0, SHA_BLOCKSIZE - 8);
     317        memset(((SHA_BYTE *) sha_info->data) + count, 0,
     318               SHA_BLOCKSIZE - count);
     319        sha_transform(sha_info);
     320        memset((SHA_BYTE *) sha_info->data, 0, SHA_BLOCKSIZE - 8);
    321321    }
    322322    else {
    323         memset(((SHA_BYTE *) sha_info->data) + count, 0,
    324                SHA_BLOCKSIZE - 8 - count);
     323        memset(((SHA_BYTE *) sha_info->data) + count, 0,
     324               SHA_BLOCKSIZE - 8 - count);
    325325    }
    326326
     
    455455    retval = PyString_FromStringAndSize(NULL, self->digestsize * 2);
    456456    if (!retval)
    457             return NULL;
     457            return NULL;
    458458    hex_digest = PyString_AsString(retval);
    459459    if (!hex_digest) {
    460             Py_DECREF(retval);
    461             return NULL;
     460            Py_DECREF(retval);
     461            return NULL;
    462462    }
    463463
     
    466466        char c;
    467467        c = (digest[i] >> 4) & 0xf;
    468         c = (c>9) ? c+'a'-10 : c + '0';
     468        c = (c>9) ? c+'a'-10 : c + '0';
    469469        hex_digest[j++] = c;
    470470        c = (digest[i] & 0xf);
    471         c = (c>9) ? c+'a'-10 : c + '0';
     471        c = (c>9) ? c+'a'-10 : c + '0';
    472472        hex_digest[j++] = c;
    473473    }
     
    481481SHA256_update(SHAobject *self, PyObject *args)
    482482{
    483     unsigned char *cp;
    484     int len;
    485 
    486     if (!PyArg_ParseTuple(args, "s#:update", &cp, &len))
     483    Py_buffer buf;
     484
     485    if (!PyArg_ParseTuple(args, "s*:update", &buf))
    487486        return NULL;
    488487
    489     sha_update(self, cp, len);
    490 
    491     Py_INCREF(Py_None);
    492     return Py_None;
     488    sha_update(self, buf.buf, buf.len);
     489
     490    PyBuffer_Release(&buf);
     491    Py_RETURN_NONE;
    493492}
    494493
    495494static PyMethodDef SHA_methods[] = {
    496     {"copy",      (PyCFunction)SHA256_copy,      METH_NOARGS,  SHA256_copy__doc__},
    497     {"digest",    (PyCFunction)SHA256_digest,    METH_NOARGS,  SHA256_digest__doc__},
     495    {"copy",      (PyCFunction)SHA256_copy,      METH_NOARGS,  SHA256_copy__doc__},
     496    {"digest",    (PyCFunction)SHA256_digest,    METH_NOARGS,  SHA256_digest__doc__},
    498497    {"hexdigest", (PyCFunction)SHA256_hexdigest, METH_NOARGS,  SHA256_hexdigest__doc__},
    499     {"update",    (PyCFunction)SHA256_update,    METH_VARARGS, SHA256_update__doc__},
    500     {NULL,        NULL}         /* sentinel */
     498    {"update",    (PyCFunction)SHA256_update,    METH_VARARGS, SHA256_update__doc__},
     499    {NULL,        NULL}         /* sentinel */
    501500};
    502501
     
    538537static PyTypeObject SHA224type = {
    539538    PyVarObject_HEAD_INIT(NULL, 0)
    540     "_sha256.sha224",   /*tp_name*/
    541     sizeof(SHAobject),  /*tp_size*/
    542     0,                  /*tp_itemsize*/
     539    "_sha256.sha224",   /*tp_name*/
     540    sizeof(SHAobject),  /*tp_size*/
     541    0,                  /*tp_itemsize*/
    543542    /* methods */
    544     SHA_dealloc,        /*tp_dealloc*/
    545     0,                  /*tp_print*/
    546     0,                  /*tp_getattr*/
     543    SHA_dealloc,        /*tp_dealloc*/
     544    0,                  /*tp_print*/
     545    0,                  /*tp_getattr*/
    547546    0,                  /*tp_setattr*/
    548547    0,                  /*tp_compare*/
     
    560559    0,                  /*tp_doc*/
    561560    0,                  /*tp_traverse*/
    562     0,                  /*tp_clear*/
    563     0,                  /*tp_richcompare*/
    564     0,                  /*tp_weaklistoffset*/
    565     0,                  /*tp_iter*/
    566     0,                  /*tp_iternext*/
    567     SHA_methods,        /* tp_methods */
    568     SHA_members,        /* tp_members */
     561    0,                  /*tp_clear*/
     562    0,                  /*tp_richcompare*/
     563    0,                  /*tp_weaklistoffset*/
     564    0,                  /*tp_iter*/
     565    0,                  /*tp_iternext*/
     566    SHA_methods,        /* tp_methods */
     567    SHA_members,        /* tp_members */
    569568    SHA_getseters,      /* tp_getset */
    570569};
     
    572571static PyTypeObject SHA256type = {
    573572    PyVarObject_HEAD_INIT(NULL, 0)
    574     "_sha256.sha256",   /*tp_name*/
    575     sizeof(SHAobject),  /*tp_size*/
    576     0,                  /*tp_itemsize*/
     573    "_sha256.sha256",   /*tp_name*/
     574    sizeof(SHAobject),  /*tp_size*/
     575    0,                  /*tp_itemsize*/
    577576    /* methods */
    578     SHA_dealloc,        /*tp_dealloc*/
    579     0,                  /*tp_print*/
    580     0,                  /*tp_getattr*/
     577    SHA_dealloc,        /*tp_dealloc*/
     578    0,                  /*tp_print*/
     579    0,                  /*tp_getattr*/
    581580    0,                  /*tp_setattr*/
    582581    0,                  /*tp_compare*/
     
    594593    0,                  /*tp_doc*/
    595594    0,                  /*tp_traverse*/
    596     0,                  /*tp_clear*/
    597     0,                  /*tp_richcompare*/
    598     0,                  /*tp_weaklistoffset*/
    599     0,                  /*tp_iter*/
    600     0,                  /*tp_iternext*/
    601     SHA_methods,        /* tp_methods */
    602     SHA_members,        /* tp_members */
     595    0,                  /*tp_clear*/
     596    0,                  /*tp_richcompare*/
     597    0,                  /*tp_weaklistoffset*/
     598    0,                  /*tp_iter*/
     599    0,                  /*tp_iternext*/
     600    SHA_methods,        /* tp_methods */
     601    SHA_members,        /* tp_members */
    603602    SHA_getseters,      /* tp_getset */
    604603};
     
    615614    static char *kwlist[] = {"string", NULL};
    616615    SHAobject *new;
    617     unsigned char *cp = NULL;
    618     int len;
    619 
    620     if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s#:new", kwlist,
    621                                      &cp, &len)) {
     616    Py_buffer buf = { 0 };
     617
     618    if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s*:new", kwlist,
     619                                     &buf)) {
    622620        return NULL;
    623621    }
    624622
    625     if ((new = newSHA256object()) == NULL)
     623    if ((new = newSHA256object()) == NULL) {
     624        PyBuffer_Release(&buf);
    626625        return NULL;
     626    }
    627627
    628628    sha_init(new);
     
    630630    if (PyErr_Occurred()) {
    631631        Py_DECREF(new);
     632        PyBuffer_Release(&buf);
    632633        return NULL;
    633634    }
    634     if (cp)
    635         sha_update(new, cp, len);
     635    if (buf.len > 0) {
     636        sha_update(new, buf.buf, buf.len);
     637    }
     638    PyBuffer_Release(&buf);
    636639
    637640    return (PyObject *)new;
     
    646649    static char *kwlist[] = {"string", NULL};
    647650    SHAobject *new;
    648     unsigned char *cp = NULL;
    649     int len;
    650 
    651     if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s#:new", kwlist,
    652                                      &cp, &len)) {
     651    Py_buffer buf = { 0 };
     652
     653    if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s*:new", kwlist,
     654                                     &buf)) {
    653655        return NULL;
    654656    }
    655657
    656     if ((new = newSHA224object()) == NULL)
     658    if ((new = newSHA224object()) == NULL) {
     659        PyBuffer_Release(&buf);
    657660        return NULL;
     661    }
    658662
    659663    sha224_init(new);
     
    661665    if (PyErr_Occurred()) {
    662666        Py_DECREF(new);
     667        PyBuffer_Release(&buf);
    663668        return NULL;
    664669    }
    665     if (cp)
    666         sha_update(new, cp, len);
     670    if (buf.len > 0) {
     671        sha_update(new, buf.buf, buf.len);
     672    }
     673    PyBuffer_Release(&buf);
    667674
    668675    return (PyObject *)new;
     
    675682    {"sha256", (PyCFunction)SHA256_new, METH_VARARGS|METH_KEYWORDS, SHA256_new__doc__},
    676683    {"sha224", (PyCFunction)SHA224_new, METH_VARARGS|METH_KEYWORDS, SHA224_new__doc__},
    677     {NULL,      NULL}            /* Sentinel */
     684    {NULL,      NULL}            /* Sentinel */
    678685};
    679686
     
    696703    m = Py_InitModule("_sha256", SHA_functions);
    697704    if (m == NULL)
    698         return;
    699 }
     705        return;
     706}
Note: See TracChangeset for help on using the changeset viewer.