📄 python.c
字号:
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 + -