// IThorSlaveActivity void CDiskReadSlaveActivityBase::init(MemoryBuffer &data, MemoryBuffer &slaveData) { subfileLogicalFilenames.kill(); partDescs.kill(); data.read(logicalFilename); unsigned subfiles; data.read(subfiles); unsigned s=0; for (; s<subfiles; s++) { StringAttr subfile; data.read(subfile); subfileLogicalFilenames.append(subfile); } unsigned parts; data.read(parts); if (parts) { deserializePartFileDescriptors(data, partDescs); unsigned encryptedKeyLen; void *encryptedKey; helper->getEncryptKey(encryptedKeyLen, encryptedKey); if (0 != encryptedKeyLen) { bool dfsEncrypted = partDescs.item(0).queryOwner().queryProperties().getPropBool("@encrypted"); if (dfsEncrypted) // otherwise ignore (warning issued by master) eexp.setown(createAESExpander256(encryptedKeyLen, encryptedKey)); memset(encryptedKey, 0, encryptedKeyLen); free(encryptedKey); } } }
bool CTransformer::setPartition(RemoteFilename & remoteInputName, offset_t _startOffset, offset_t _length, bool compressedInput, const char *decryptKey) { CTransformerBase::setPartition(remoteInputName, _startOffset, _length); input.setown(inputFile->open(IFOread)); if (compressedInput) { Owned<IExpander> expander; if (decryptKey&&*decryptKey) { StringBuffer key; decrypt(key,decryptKey); expander.setown(createAESExpander256(key.length(),key.str())); } input.setown(createCompressedFileReader(input,expander)); } cursor = startOffset; return (input != NULL); }
void CDiskReadSlaveActivityBase::start() { PARENT::start(); markStart = true; diskProgress = 0; unsigned encryptedKeyLen; void *encryptedKey; helper->getEncryptKey(encryptedKeyLen, encryptedKey); if (0 != encryptedKeyLen) { bool dfsEncrypted = partDescs.item(0).queryOwner().queryProperties().getPropBool("@encrypted"); if (dfsEncrypted) // otherwise ignore (warning issued by master) eexp.setown(createAESExpander256(encryptedKeyLen, encryptedKey)); memset(encryptedKey, 0, encryptedKeyLen); free(encryptedKey); } }