public function encryptViaFile($hash)
{
$this->checkPaypalFiles();
$key_file = $this->getOption('key_file');
$cert_file = $this->getOption('cert_file');
$openssl = $this->getOption('openssl');
$paypal_cert_file = $this->getOption('paypal_cert_file');
// create tmp file
$filename = tempnam(sys_get_temp_dir(), 'sonata_paypal_');
$contents = '';
foreach ($hash as $name => $value) {
$contents .= $name . '=' . $value . "\n";
}
if (!@file_put_contents($filename, $contents)) {
if ($this->getLogger()) {
$this->getLogger()->emergency(sprintf('encryptViaFile, unable to create buffer file : %s', $filename));
}
throw new \RuntimeException(sprintf('unable to create buffer file : %s', $filename));
}
$openssl_cmd = "{$openssl} smime -sign -signer {$cert_file} -inkey {$key_file} -outform der -nodetach -binary " . " < {$filename} " . " | {$openssl} smime -encrypt " . "-des3 -binary -outform pem {$paypal_cert_file}";
if ($this->getLogger()) {
$this->getLogger()->debug(sprintf('[BasePaypalPayment::encryptViaFile] command line=%s', $openssl_cmd));
}
$output = shell_exec($openssl_cmd);
if (!@unlink($filename)) {
if ($this->getLogger()) {
$this->getLogger()->emergency(sprintf('[BasePaypalPayment::encryptViaFile] unable to delete temporary file, %s', $filename));
}
}
return $output;
}