public function encryptFile($data, $filename, $key, $base64) { $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $iv = openssl_random_pseudo_bytes($iv_size); $encryptionMethod = "aes-256-cbc"; if ($base64) { //if already encoded64 if ($encryptedMessage = bin2hex($iv) . openssl_encrypt($data, $encryptionMethod, $key, 0, $iv)) { } else { return false; } } else { //not encoded64 if ($encryptedMessage = bin2hex($iv) . openssl_encrypt(base64_encode($data), $encryptionMethod, $key, 0, $iv)) { } else { return false; } } //unset($data['filecyp']); if (FileWorks::writeFile($filename, $encryptedMessage) === false) { return false; } else { return true; } }
public function sendOutNoPin() { $key = hex2bin($this->key); $encryptionMethod = "aes-256-cbc"; $iv = hex2bin(substr($this->mail, 0, 32)); $encrypted = base64_encode(hex2bin(substr($this->mail, 32))); $body = json_decode(openssl_decrypt($encrypted, $encryptionMethod, $key, 0, $iv), true); $body['from'] = base64_decode($body['from']); $email = hash('sha512', EmailparseCommand::getEmail($body['from'])); $id = Yii::app()->user->getId(); if (Yii::app()->db->createCommand("SELECT addressHash FROM addresses WHERE addressHash='{$email}' AND userId={$id}")->queryRow()) { $params[':body'] = $this->mail; $params[':modKey'] = $this->ModKey; $params[':meta'] = $this->meta; $params[':outside'] = 1; $params[':whens'] = Date("Y-m-d H:i:s"); $params[':pass'] = $this->key; if (isset($this->files)) { foreach ($this->files as $row) { $fileNames[] = $row['fname']; if (FileWorks::writeFile($row['fname'], $row['data']) === false) { echo '{"messageId":"fail1"}'; } } $params[':file'] = json_encode($fileNames); } else { $params[':file'] = null; } if (Yii::app()->db->createCommand("INSERT INTO mailToSent (meta,body,pass,modKey,whens,outside,file) VALUES(:meta,:body,:pass,:modKey,:whens,:outside,:file)")->execute($params)) { echo '{"messageId":' . Yii::app()->db->getLastInsertID() . '}'; } else { echo '{"messageId":"fail"}'; } } else { echo '{"messageId":"fail"}'; } }