/** Written in 2013 by Dmitry Chestnykh <dmitry@codingrobots.com>* Modified for CPython by Christian Heimes <christian@python.org>** To the extent possible under law, the author have dedicated all* copyright and related and neighboring rights to this software to* the public domain worldwide. This software is distributed without* any warranty. http://creativecommons.org/publicdomain/zero/1.0/*/#include "Python.h"#include "impl/blake2.h"extern PyTypeObject PyBlake2_BLAKE2bType;extern PyTypeObject PyBlake2_BLAKE2sType;PyDoc_STRVAR(blake2mod__doc__,"_blake2b provides BLAKE2b for hashlib\n");static struct PyMethodDef blake2mod_functions[] = {{NULL, NULL}};static struct PyModuleDef blake2_module = {PyModuleDef_HEAD_INIT,"_blake2",blake2mod__doc__,-1,blake2mod_functions,NULL,NULL,NULL,NULL};#define ADD_INT(d, name, value) do { \PyObject *x = PyLong_FromLong(value); \if (!x) { \Py_DECREF(m); \return NULL; \} \if (PyDict_SetItemString(d, name, x) < 0) { \Py_DECREF(m); \return NULL; \} \Py_DECREF(x); \} while(0)PyMODINIT_FUNCPyInit__blake2(void){PyObject *m;PyObject *d;m = PyModule_Create(&blake2_module);if (m == NULL)return NULL;/* BLAKE2b */Py_TYPE(&PyBlake2_BLAKE2bType) = &PyType_Type;if (PyType_Ready(&PyBlake2_BLAKE2bType) < 0) {return NULL;}Py_INCREF(&PyBlake2_BLAKE2bType);PyModule_AddObject(m, "blake2b", (PyObject *)&PyBlake2_BLAKE2bType);d = PyBlake2_BLAKE2bType.tp_dict;ADD_INT(d, "SALT_SIZE", BLAKE2B_SALTBYTES);ADD_INT(d, "PERSON_SIZE", BLAKE2B_PERSONALBYTES);ADD_INT(d, "MAX_KEY_SIZE", BLAKE2B_KEYBYTES);ADD_INT(d, "MAX_DIGEST_SIZE", BLAKE2B_OUTBYTES);PyModule_AddIntConstant(m, "BLAKE2B_SALT_SIZE", BLAKE2B_SALTBYTES);PyModule_AddIntConstant(m, "BLAKE2B_PERSON_SIZE", BLAKE2B_PERSONALBYTES);PyModule_AddIntConstant(m, "BLAKE2B_MAX_KEY_SIZE", BLAKE2B_KEYBYTES);PyModule_AddIntConstant(m, "BLAKE2B_MAX_DIGEST_SIZE", BLAKE2B_OUTBYTES);/* BLAKE2s */Py_TYPE(&PyBlake2_BLAKE2sType) = &PyType_Type;if (PyType_Ready(&PyBlake2_BLAKE2sType) < 0) {return NULL;}Py_INCREF(&PyBlake2_BLAKE2sType);PyModule_AddObject(m, "blake2s", (PyObject *)&PyBlake2_BLAKE2sType);d = PyBlake2_BLAKE2sType.tp_dict;ADD_INT(d, "SALT_SIZE", BLAKE2S_SALTBYTES);ADD_INT(d, "PERSON_SIZE", BLAKE2S_PERSONALBYTES);ADD_INT(d, "MAX_KEY_SIZE", BLAKE2S_KEYBYTES);ADD_INT(d, "MAX_DIGEST_SIZE", BLAKE2S_OUTBYTES);PyModule_AddIntConstant(m, "BLAKE2S_SALT_SIZE", BLAKE2S_SALTBYTES);PyModule_AddIntConstant(m, "BLAKE2S_PERSON_SIZE", BLAKE2S_PERSONALBYTES);PyModule_AddIntConstant(m, "BLAKE2S_MAX_KEY_SIZE", BLAKE2S_KEYBYTES);PyModule_AddIntConstant(m, "BLAKE2S_MAX_DIGEST_SIZE", BLAKE2S_OUTBYTES);return m;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。