AS3_Val doUnAes(void *data, AS3_Val args) { AS3_Val input = NULL; unsigned int in_len; char * ar; AS3_ArrayValue(args, "AS3ValType, IntType", &input, &in_len); ar = (char *)malloc(in_len); AS3_ByteArray_readBytes((void*)ar, input, in_len); char * aesData; int out_len = 0; char * keyStr = "kael"; //use AES to Decrypt the bytes aesData = DES_Decrypt(ar, keyStr, in_len, &out_len ); //make a new as3 byteArray var AS3_Val baNS = AS3_String("flash.utils"); AS3_Val baClass = AS3_NSGetS(baNS, "ByteArray"); AS3_Val emptyParams = AS3_Array(""); AS3_Val byteArray2 = AS3_New(baClass, emptyParams); AS3_ByteArray_writeBytes(byteArray2, aesData, out_len); return byteArray2; }
static AS3_Val thunk_InitAnnounceResponsePacket(void *gg_clientData, AS3_Val gg_args) { AS3_Val packet; AS3_Val bytes; AS3_ArrayValue(gg_args, "AS3ValType, AS3ValType", &packet, &bytes); AS3_Val paramArray = AS3_Array("AS3ValType", bytes); AS3_Val p2p_struct_namespace = AS3_String("com.pplive.p2p.struct"); AS3_Val PeerDownloadInfoClass = AS3_NSGetS(p2p_struct_namespace, "PeerDownloadInfo"); AS3_Val BlockMapClass = AS3_NSGetS(p2p_struct_namespace, "BlockMap"); AS3_Val peerDownloadInfo = AS3_New(PeerDownloadInfoClass, paramArray); AS3_Val blockMapInfo = AS3_New(BlockMapClass, paramArray); AS3_SetS(packet, "peerDownloadInfo", peerDownloadInfo); AS3_SetS(packet, "blockMap", blockMapInfo); AS3_Release(blockMapInfo); AS3_Release(peerDownloadInfo); AS3_Release(BlockMapClass); AS3_Release(PeerDownloadInfoClass); AS3_Release(p2p_struct_namespace); AS3_Release(paramArray); AS3_Release(bytes); AS3_Release(packet); return NULL; }
AS3_Val doDecode(void* data,AS3_Val args) { AS3_Val input = NULL; int in_len; char * ar; AS3_ArrayValue(args,"AS3ValType,IntType",&input,&in_len); ar = (char*)malloc(in_len); AS3_ByteArray_readBytes((void*)ar,input,in_len); char * decryptData; char * key="kael"; decryptData = dofileEx(ar, key, in_len); //make a new as3 byteArray var AS3_Val baNS = AS3_String("flash.utils"); AS3_Val baClass = AS3_NSGetS(baNS, "ByteArray"); AS3_Val emptyParams = AS3_Array(""); AS3_Val byteArray2 = AS3_New(baClass, emptyParams); AS3_ByteArray_writeBytes(byteArray2, decryptData, in_len); return byteArray2; }
static AS3_Val thunk_CreatePacketFromByteArray(void *gg_clientData, AS3_Val gg_args) { AS3_Val bytes; AS3_ArrayValue(gg_args, "AS3ValType", &bytes); AS3_Val actionVal = AS3_CallTS("readUnsignedByte", bytes, ""); AS3_Val transactionIdVal = AS3_CallTS("readUnsignedInt", bytes, ""); AS3_Val protocolVersionVal = AS3_CallTS("readUnsignedShort", bytes, ""); AS3_Val pplive_protocol_namespace = AS3_String("com.pplive.p2p.network.protocol"); AS3_Val PacketClass = AS3_NSGetS(pplive_protocol_namespace, "Packet"); AS3_Val paramArray = AS3_Array("IntType, IntType, IntType", AS3_IntValue(actionVal), AS3_IntValue(transactionIdVal), AS3_IntValue(protocolVersionVal)); AS3_Val packet = AS3_New(PacketClass, paramArray); AS3_Release(paramArray); AS3_Release(PacketClass); AS3_Release(pplive_protocol_namespace); AS3_Release(protocolVersionVal); AS3_Release(transactionIdVal); AS3_Release(actionVal); AS3_Release(bytes); return packet; }