cocos2d::LUA_STRING CCCrypto::cryptAES256Lua(bool isDecrypt, const char* input, int inputLength, const char* key, int keyLength) { CCLuaStack* stack = CCLuaEngine::defaultEngine()->getLuaStack(); stack->clean(); if (getAES256KeyLength() == 0) { stack->pushNil(); return 1; } int bufferSize = inputLength + getAES256KeyLength(); void* buffer = malloc(bufferSize); int dataUsed = cryptAES256(isDecrypt, (unsigned char*)input, inputLength, (unsigned char*)buffer, bufferSize, (unsigned char*)key, keyLength); if (dataUsed > 0) { stack->pushString(static_cast<const char*>(buffer), dataUsed); } else { stack->pushNil(); } free(buffer); return 1; }
LUA_STRING CCCrypto::encodingBase64Lua(bool isDecoding, const char* input, int inputLength) { CCLuaStack* stack = CCLuaEngine::defaultEngine()->getLuaStack(); stack->clean(); int outputLength = inputLength * 2; char* output = static_cast<char*>(malloc(outputLength)); int dataUsed = -1; if (isDecoding) { dataUsed = decodeBase64(input, output, outputLength); } else { dataUsed = encodeBase64((unsigned char*)input, inputLength, output, outputLength); } if (dataUsed > 0 && dataUsed < outputLength) { stack->pushString(output, dataUsed); } else { stack->pushNil(); } free(output); return 1; }
LUA_STRING CCCrypto::encodingBase64Lua(bool isDecoding, const char* input, int inputLength) { CCLuaStack* stack = CCLuaEngine::defaultEngine()->getLuaStack(); stack->clean(); int bufferSize = isDecoding ? Base64decode_len(input) : Base64encode_len(inputLength); char *buffer = bufferSize ? (char*)malloc(bufferSize) : NULL; int size = 0; if (buffer) { size = isDecoding ? Base64decode(buffer, input) : (Base64encode(buffer, input, inputLength) - 1); } if (size) { stack->pushString(buffer, size); } else { stack->pushNil(); } if (buffer) { free(buffer); } return 1; }
void CCZipFile::getFileDataOrder(const char *filename) { unsigned long size; unsigned char* buf = getFileData(filename, &size); CCLuaStack* stack = CCLuaEngine::defaultEngine()->getLuaStack(); stack->clean(); if (NULL==buf) { stack->pushNil(); return; } stack->pushString((const char*)buf, size); delete []buf; return; }