⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 python.c

📁 cryptlib安全工具包
💻 C
📖 第 1 页 / 共 5 页
字号:
	return(processStatus(status));}static PyObject* python_cryptPopData(PyObject* self, PyObject* args){	int status = 0;	int bytesCopied = 0;	int envelope = 0;	PyObject* buffer = NULL;	int length = 0;	unsigned char* bufferPtr = 0;		if (!PyArg_ParseTuple(args, "iOi", &envelope, &buffer, &length))	    return(NULL);		//CryptPopData is a special case that doesn't have the length querying call		if (!getPointerWrite(buffer, &bufferPtr, &bytesCopied))		goto finish;		status = cryptPopData(envelope, bufferPtr, length, &bytesCopied);		finish:	releasePointer(buffer, bufferPtr);	return(processStatusReturnInt(status, bytesCopied));}static PyObject* python_cryptDeviceOpen(PyObject* self, PyObject* args){	int status = 0;	int device = 0;	int cryptUser = 0;	int deviceType = 0;	PyObject* name = NULL;	unsigned char* namePtr = 0;		if (!PyArg_ParseTuple(args, "iiO", &cryptUser, &deviceType, &name))	    return(NULL);		if (!getPointerReadString(name, &namePtr))		goto finish;		status = cryptDeviceOpen(&device, cryptUser, deviceType, namePtr);		finish:	releasePointerString(name, namePtr);	return(processStatusReturnCryptHandle(status, device));}static PyObject* python_cryptDeviceClose(PyObject* self, PyObject* args){	int status = 0;	int device = 0;		if (!PyArg_ParseTuple(args, "i", &device))	    return(NULL);		status = cryptDeviceClose(device);		return(processStatus(status));}static PyObject* python_cryptDeviceQueryCapability(PyObject* self, PyObject* args){	int status = 0;	CRYPT_QUERY_INFO cryptQueryInfo;	int device = 0;	int cryptAlgo = 0;		if (!PyArg_ParseTuple(args, "ii", &device, &cryptAlgo))	    return(NULL);		status = cryptDeviceQueryCapability(device, cryptAlgo, &cryptQueryInfo);		return(processStatusReturnCryptQueryInfo(status, cryptQueryInfo));}static PyObject* python_cryptDeviceCreateContext(PyObject* self, PyObject* args){	int status = 0;	int cryptContext = 0;	int device = 0;	int cryptAlgo = 0;		if (!PyArg_ParseTuple(args, "ii", &device, &cryptAlgo))	    return(NULL);		status = cryptDeviceCreateContext(device, &cryptContext, cryptAlgo);		return(processStatusReturnCryptHandle(status, cryptContext));}static PyObject* python_cryptLogin(PyObject* self, PyObject* args){	int status = 0;	int user = 0;	PyObject* name = NULL;	PyObject* password = NULL;	unsigned char* namePtr = 0;	unsigned char* passwordPtr = 0;		if (!PyArg_ParseTuple(args, "OO", &name, &password))	    return(NULL);		if (!getPointerReadString(name, &namePtr))		goto finish;	if (!getPointerReadString(password, &passwordPtr))		goto finish;		status = cryptLogin(&user, namePtr, passwordPtr);		finish:	releasePointerString(name, namePtr);	releasePointerString(password, passwordPtr);	return(processStatusReturnCryptHandle(status, user));}static PyObject* python_cryptLogout(PyObject* self, PyObject* args){	int status = 0;	int user = 0;		if (!PyArg_ParseTuple(args, "i", &user))	    return(NULL);		status = cryptLogout(user);		return(processStatus(status));}static PyMethodDef module_functions[] ={	{ "cryptInit", python_cryptInit, METH_VARARGS }, 	{ "cryptEnd", python_cryptEnd, METH_VARARGS }, 	{ "cryptQueryCapability", python_cryptQueryCapability, METH_VARARGS }, 	{ "cryptCreateContext", python_cryptCreateContext, METH_VARARGS }, 	{ "cryptDestroyContext", python_cryptDestroyContext, METH_VARARGS }, 	{ "cryptDestroyObject", python_cryptDestroyObject, METH_VARARGS }, 	{ "cryptGenerateKey", python_cryptGenerateKey, METH_VARARGS }, 	{ "cryptGenerateKeyAsync", python_cryptGenerateKeyAsync, METH_VARARGS }, 	{ "cryptAsyncQuery", python_cryptAsyncQuery, METH_VARARGS }, 	{ "cryptAsyncCancel", python_cryptAsyncCancel, METH_VARARGS }, 	{ "cryptEncrypt", python_cryptEncrypt, METH_VARARGS }, 	{ "cryptDecrypt", python_cryptDecrypt, METH_VARARGS }, 	{ "cryptSetAttribute", python_cryptSetAttribute, METH_VARARGS }, 	{ "cryptSetAttributeString", python_cryptSetAttributeString, METH_VARARGS }, 	{ "cryptGetAttribute", python_cryptGetAttribute, METH_VARARGS }, 	{ "cryptGetAttributeString", python_cryptGetAttributeString, METH_VARARGS }, 	{ "cryptDeleteAttribute", python_cryptDeleteAttribute, METH_VARARGS }, 	{ "cryptAddRandom", python_cryptAddRandom, METH_VARARGS }, 	{ "cryptQueryObject", python_cryptQueryObject, METH_VARARGS }, 	{ "cryptExportKey", python_cryptExportKey, METH_VARARGS }, 	{ "cryptExportKeyEx", python_cryptExportKeyEx, METH_VARARGS }, 	{ "cryptImportKey", python_cryptImportKey, METH_VARARGS }, 	{ "cryptImportKeyEx", python_cryptImportKeyEx, METH_VARARGS }, 	{ "cryptCreateSignature", python_cryptCreateSignature, METH_VARARGS }, 	{ "cryptCreateSignatureEx", python_cryptCreateSignatureEx, METH_VARARGS }, 	{ "cryptCheckSignature", python_cryptCheckSignature, METH_VARARGS }, 	{ "cryptCheckSignatureEx", python_cryptCheckSignatureEx, METH_VARARGS }, 	{ "cryptKeysetOpen", python_cryptKeysetOpen, METH_VARARGS }, 	{ "cryptKeysetClose", python_cryptKeysetClose, METH_VARARGS }, 	{ "cryptGetPublicKey", python_cryptGetPublicKey, METH_VARARGS }, 	{ "cryptGetPrivateKey", python_cryptGetPrivateKey, METH_VARARGS }, 	{ "cryptGetKey", python_cryptGetKey, METH_VARARGS }, 	{ "cryptAddPublicKey", python_cryptAddPublicKey, METH_VARARGS }, 	{ "cryptAddPrivateKey", python_cryptAddPrivateKey, METH_VARARGS }, 	{ "cryptDeleteKey", python_cryptDeleteKey, METH_VARARGS }, 	{ "cryptCreateCert", python_cryptCreateCert, METH_VARARGS }, 	{ "cryptDestroyCert", python_cryptDestroyCert, METH_VARARGS }, 	{ "cryptGetCertExtension", python_cryptGetCertExtension, METH_VARARGS }, 	{ "cryptAddCertExtension", python_cryptAddCertExtension, METH_VARARGS }, 	{ "cryptDeleteCertExtension", python_cryptDeleteCertExtension, METH_VARARGS }, 	{ "cryptSignCert", python_cryptSignCert, METH_VARARGS }, 	{ "cryptCheckCert", python_cryptCheckCert, METH_VARARGS }, 	{ "cryptImportCert", python_cryptImportCert, METH_VARARGS }, 	{ "cryptExportCert", python_cryptExportCert, METH_VARARGS }, 	{ "cryptCAAddItem", python_cryptCAAddItem, METH_VARARGS }, 	{ "cryptCAGetItem", python_cryptCAGetItem, METH_VARARGS }, 	{ "cryptCADeleteItem", python_cryptCADeleteItem, METH_VARARGS }, 	{ "cryptCACertManagement", python_cryptCACertManagement, METH_VARARGS }, 	{ "cryptCreateEnvelope", python_cryptCreateEnvelope, METH_VARARGS }, 	{ "cryptDestroyEnvelope", python_cryptDestroyEnvelope, METH_VARARGS }, 	{ "cryptCreateSession", python_cryptCreateSession, METH_VARARGS }, 	{ "cryptDestroySession", python_cryptDestroySession, METH_VARARGS }, 	{ "cryptPushData", python_cryptPushData, METH_VARARGS }, 	{ "cryptFlushData", python_cryptFlushData, METH_VARARGS }, 	{ "cryptPopData", python_cryptPopData, METH_VARARGS }, 	{ "cryptDeviceOpen", python_cryptDeviceOpen, METH_VARARGS }, 	{ "cryptDeviceClose", python_cryptDeviceClose, METH_VARARGS }, 	{ "cryptDeviceQueryCapability", python_cryptDeviceQueryCapability, METH_VARARGS }, 	{ "cryptDeviceCreateContext", python_cryptDeviceCreateContext, METH_VARARGS }, 	{ "cryptLogin", python_cryptLogin, METH_VARARGS }, 	{ "cryptLogout", python_cryptLogout, METH_VARARGS },     {0, 0}};DL_EXPORT(void) initcryptlib_py(void){    PyObject* module;    PyObject* moduleDict;    PyObject* v = NULL;    PyObject *globalsDict;    module = Py_InitModule("cryptlib_py", module_functions);    moduleDict = PyModule_GetDict(module);    CryptException = PyErr_NewException("cryptlib_py.CryptException", NULL, NULL);    PyDict_SetItemString(moduleDict, "CryptException", CryptException);    globalsDict = PyEval_GetGlobals();    PyRun_String("from array import *\n\import types\n\class CryptHandle:\n\    def __init__(self, value):\n\        self.__dict__['value'] = value\n\    def __int__(self):\n\        return self.value\n\    def __str__(self):\n\        return str(self.value)\n\    def __repr__(self):\n\        return str(self.value)\n\    def __getattr__(self, name):\n\        name = name.upper()\n\        if not name.startswith('CRYPT_'):\n\            name = 'CRYPT_' + name\n\        nameVal = globals()[name]\n\        try:\n\            return cryptGetAttribute(self, nameVal)\n\        except CryptException, ex:\n\            length = cryptGetAttributeString(self, nameVal, None)\n\            buf = array('c', '0' * length)\n\            length = cryptGetAttributeString(self, nameVal, buf)\n\            return ''.join(buf[:length])\n\    def __setattr__(self, name, value):\n\        name = name.upper()\n\        if not name.startswith('CRYPT_'):\n\            name = 'CRYPT_' + name\n\        nameVal = globals()[name]\n\        if isinstance(value, types.IntType) or isinstance(value, CryptHandle):\n\            cryptSetAttribute(self, nameVal, value)\n\        else:\n\            cryptSetAttributeString(self, nameVal, value)\n",    Py_file_input, globalsDict, moduleDict);    PyRun_String("class CRYPT_QUERY_INFO:\n\    def __init__(self, algoName, blockSize, minKeySize, keySize, maxKeySize):\n\        self.algoName = algoName\n\        self.blockSize = blockSize\n\        self.minKeySize = minKeySize\n\        self.keySize = keySize\n\        self.maxKeySize = maxKeySize\n",    Py_file_input, globalsDict, moduleDict);    PyRun_String("class CRYPT_OBJECT_INFO:\n\    def __init__(self, objectType, cryptAlgo, cryptMode, hashAlgo, salt):\n\        self.objectType = objectType\n\        self.cryptAlgo = cryptAlgo\n\        self.cryptMode = cryptMode\n\        self.hashAlgo = hashAlgo\n\        self.salt = salt\n",    Py_file_input, globalsDict, moduleDict);    cryptHandleClass = PyMapping_GetItemString(moduleDict, "CryptHandle");    cryptQueryInfoClass = PyMapping_GetItemString(moduleDict, "CRYPT_QUERY_INFO");    cryptObjectInfoClass = PyMapping_GetItemString(moduleDict, "CRYPT_OBJECT_INFO");    Py_DECREF(globalsDict);    v = Py_BuildValue("i", 0);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_NONE", v);    Py_DECREF(v); /* No encryption */    v = Py_BuildValue("i", 1);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_DES", v);    Py_DECREF(v); /* DES */    v = Py_BuildValue("i", 2);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_3DES", v);    Py_DECREF(v); /* Triple DES */    v = Py_BuildValue("i", 3);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_IDEA", v);    Py_DECREF(v); /* IDEA */    v = Py_BuildValue("i", 4);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_CAST", v);    Py_DECREF(v); /* CAST-128 */    v = Py_BuildValue("i", 5);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_RC2", v);    Py_DECREF(v); /* RC2 */    v = Py_BuildValue("i", 6);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_RC4", v);    Py_DECREF(v); /* RC4 */    v = Py_BuildValue("i", 7);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_RC5", v);    Py_DECREF(v); /* RC5 */    v = Py_BuildValue("i", 8);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_AES", v);    Py_DECREF(v); /* AES */    v = Py_BuildValue("i", 9);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_BLOWFISH", v);    Py_DECREF(v); /* Blowfish */    v = Py_BuildValue("i", 10);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_SKIPJACK", v);    Py_DECREF(v); /* Skipjack */    v = Py_BuildValue("i", 100);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_DH", v);    Py_DECREF(v); /* Diffie-Hellman */    v = Py_BuildValue("i", 101);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_RSA", v);    Py_DECREF(v); /* RSA */    v = Py_BuildValue("i", 102);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_DSA", v);    Py_DECREF(v); /* DSA */    v = Py_BuildValue("i", 103);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_ELGAMAL", v);    Py_DECREF(v); /* ElGamal */    v = Py_BuildValue("i", 104);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_KEA", v);    Py_DECREF(v); /* KEA */    v = Py_BuildValue("i", 105);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_ECDSA", v);    Py_DECREF(v); /* ECDSA */    v = Py_BuildValue("i", 200);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_MD2", v);    Py_DECREF(v); /* MD2 */    v = Py_BuildValue("i", 201);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_MD4", v);    Py_DECREF(v); /* MD4 */    v = Py_BuildValue("i", 202);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_MD5", v);    Py_DECREF(v); /* MD5 */    v = Py_BuildValue("i", 203);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_SHA", v);    Py_DECREF(v); /* SHA/SHA1 */    v = Py_BuildValue("i", 204);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_RIPEMD160", v);    Py_DECREF(v); /* RIPE-MD 160 */    v = Py_BuildValue("i", 205);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_SHA2", v);    Py_DECREF(v); /* SHA2 (SHA-256/384/512) */    v = Py_BuildValue("i", 300);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_HMAC_MD5", v);    Py_DECREF(v); /* HMAC-MD5 */    v = Py_BuildValue("i", 301);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_HMAC_SHA1", v);    Py_DECREF(v); /* HMAC-SHA */    v = Py_BuildValue("i", 301);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_HMAC_SHA", v);    Py_DECREF(v); /* Older form */    v = Py_BuildValue("i", 302);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_HMAC_RIPEMD160", v);    Py_DECREF(v); /* HMAC-RIPEMD-160 */    v = Py_BuildValue("i", 303);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_LAST", v);    Py_DECREF(v); /* Last possible crypt algo value */    v = Py_BuildValue("i", 1);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_FIRST_CONVENTIONAL", v);    Py_DECREF(v);    v = Py_BuildValue("i", 99);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_LAST_CONVENTIONAL", v);    Py_DECREF(v);    v = Py_BuildValue("i", 100);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_FIRST_PKC", v);    Py_DECREF(v);    v = Py_BuildValue("i", 199);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_LAST_PKC", v);    Py_DECREF(v);    v = Py_BuildValue("i", 200);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_FIRST_HASH", v);    Py_DECREF(v);    v = Py_BuildValue("i", 299);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_LAST_HASH", v);    Py_DECREF(v);    v = Py_BuildValue("i", 300);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_FIRST_MAC", v);    Py_DECREF(v);    v = Py_BuildValue("i", 399);    PyDict_SetItemString(moduleDict, "CRYPT_ALGO_LAST_MAC", v);    Py_DECREF(v); /* End of mac algo.range */    v = Py_BuildValue("i", 0);    PyDict_SetItemString(moduleDict, "CRYPT_MODE_NONE", v);    Py_DECREF(v); /* No encryption mode */    v = Py_BuildValue("i", 1);    PyDict_SetItemString(moduleDict, "CRYPT_MODE_ECB", v);    Py_DECREF(v); /* ECB */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -