public function initMultipartUploadSecurely($args = array()) { $sek = EncryptionUtil::genereateOnceUsedKey(); $encryptedSek = EncryptionUtil::encodeCek($this->encryptionMaterials, $sek); $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); $matdesc = "{}"; if (ENCRYPTPTION_STORAGE_MODE == "ObjectMetadata") { $args["UserMeta"]["x-kss-meta-x-kss-key"] = base64_encode($encryptedSek); $args["UserMeta"]["x-kss-meta-x-kss-iv"] = base64_encode($iv); $args["UserMeta"]["x-kss-meta-x-kss-matdesc"] = $matdesc; } $initResult = $this->ks3client->initMultipartUpload($args); EncryptionUtil::initMultipartUploadContext($initResult, $iv, $sek, $encryptedSek, $matdesc); return $initResult; }