Skip to content

Commit 56df859

Browse files
Merge pull request #6 from darkwebdesign/ISSUE-3
ISSUE-3: ProcessFailedException not thrown in case OpenSSL commands fail
2 parents 0c81806 + ba8d801 commit 56df859

File tree

9 files changed

+572
-289
lines changed

9 files changed

+572
-289
lines changed

File/KeystoreFile.php

Lines changed: 77 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,7 @@ protected function validate()
4444
{
4545
$in = escapeshellarg($this->getPathname());
4646

47-
$command = "openssl pkcs12 -in $in -passin pass: -noout";
48-
49-
$process = new Process($command);
47+
$process = new Process("openssl pkcs12 -in $in -passin pass: -noout");
5048
$process->run();
5149

5250
$invalidPassword = false !== strpos($process->getErrorOutput(), 'invalid password');
@@ -85,18 +83,17 @@ public static function create($path, $passPhrase, PublicKeyFile $publicKeyFile,
8583
$privateKeyInForm = escapeshellarg($privateKeyFile->getFormat());
8684
$privateKeyPass = escapeshellarg($privateKeyPassPhrase);
8785

88-
$command = "
89-
{
90-
openssl rsa -in $privateKeyIn -inform $privateKeyInForm -passin pass:$privateKeyPass -passout pass:pipe -des3
91-
openssl x509 -in $publicKeyIn -inform $publicKeyInForm
92-
} |
93-
openssl pkcs12 -passin pass:pipe -out $out~ -passout pass:$pass -export &&
94-
mv --force $out~ $out ||
95-
rm --force $out~";
86+
$process1 = new Process("openssl rsa -in $privateKeyIn -inform $privateKeyInForm -passin pass:$privateKeyPass -passout pass:pipe -des3");
87+
$process1->mustRun();
88+
89+
$process2 = new Process("openssl x509 -in $publicKeyIn -inform $publicKeyInForm");
90+
$process2->mustRun();
9691

97-
$process = new Process($command);
98-
$process->mustRun();
92+
$process3 = new Process("openssl pkcs12 -passin pass:pipe -passout pass:$pass -export");
93+
$process3->setInput($process1->getOutput() . $process2->getOutput());
94+
$process3->mustRun();
9995

96+
@file_put_contents($path, $process3->getOutput());
10097
@chmod($path, 0666 & ~umask());
10198

10299
return new self($path);
@@ -125,19 +122,21 @@ public function getPem($path, $passPhrase)
125122
$rsaPassOut = '';
126123
}
127124

128-
$command = "
129-
{
130-
openssl pkcs12 -in $in -passin pass:$pass -nokeys |
131-
openssl x509
132-
openssl pkcs12 -in $in -passin pass:$pass -nocerts -passout pass:pipe |
133-
openssl rsa -passin pass:pipe $rsaPassOut
134-
} > $out~ &&
135-
mv --force $out~ $out ||
136-
rm --force $out~";
125+
$process1 = new Process("openssl pkcs12 -in $in -passin pass:$pass -nokeys");
126+
$process1->mustRun();
127+
128+
$process2 = new Process("openssl x509");
129+
$process2->setInput($process1->getOutput());
130+
$process2->mustRun();
131+
132+
$process3 = new Process("openssl pkcs12 -in $in -passin pass:$pass -nocerts -passout pass:pipe");
133+
$process3->mustRun();
137134

138-
$process = new Process($command);
139-
$process->mustRun();
135+
$process4 = new Process("openssl rsa -passin pass:pipe $rsaPassOut");
136+
$process4->setInput($process3->getOutput());
137+
$process4->mustRun();
140138

139+
@file_put_contents($path, $process2->getOutput() . $process4->getOutput());
141140
@chmod($path, 0666 & ~umask());
142141

143142
return new PemFile($path);
@@ -159,15 +158,14 @@ public function getPublicKey($path, $passPhrase)
159158
$out = escapeshellarg($path);
160159
$pass = escapeshellarg($passPhrase);
161160

162-
$command = "
163-
openssl pkcs12 -in $in -passin pass:$pass -nokeys |
164-
openssl x509 -out $out~ &&
165-
mv --force $out~ $out ||
166-
rm --force $out~";
161+
$process1 = new Process("openssl pkcs12 -in $in -passin pass:$pass -nokeys");
162+
$process1->mustRun();
167163

168-
$process = new Process($command);
169-
$process->mustRun();
164+
$process2 = new Process("openssl x509");
165+
$process2->setInput($process1->getOutput());
166+
$process2->mustRun();
170167

168+
@file_put_contents($path, $process2->getOutput());
171169
@chmod($path, 0666 & ~umask());
172170

173171
return new PublicKeyFile($path);
@@ -199,15 +197,14 @@ public function getPrivateKey($path, $passPhrase)
199197
$rsaPassOut = '';
200198
}
201199

202-
$command = "
203-
openssl pkcs12 -in $in -passin pass:$pass -nocerts -passout pass:pipe |
204-
openssl rsa -passin pass:pipe -out $out~ $rsaPassOut &&
205-
mv --force $out~ $out ||
206-
rm --force $out~";
200+
$process1 = new Process("openssl pkcs12 -in $in -passin pass:$pass -nocerts -passout pass:pipe");
201+
$process1->mustRun();
207202

208-
$process = new Process($command);
209-
$process->mustRun();
203+
$process2 = new Process("openssl rsa -passin pass:pipe $rsaPassOut");
204+
$process2->setInput($process1->getOutput());
205+
$process2->mustRun();
210206

207+
@file_put_contents($path, $process2->getOutput());
211208
@chmod($path, 0666 & ~umask());
212209

213210
return new PrivateKeyFile($path);
@@ -227,14 +224,14 @@ public function getSubject($passPhrase)
227224
$in = escapeshellarg($this->getPathname());
228225
$pass = escapeshellarg($passPhrase);
229226

230-
$command = "
231-
openssl pkcs12 -in $in -passin pass:$pass -nokeys |
232-
openssl x509 -noout -subject";
227+
$process1 = new Process("openssl pkcs12 -in $in -passin pass:$pass -nokeys");
228+
$process1->mustRun();
233229

234-
$process = new Process($command);
235-
$process->mustRun();
230+
$process2 = new Process('openssl x509 -noout -subject');
231+
$process2->setInput($process1->getOutput());
232+
$process2->mustRun();
236233

237-
return trim(preg_replace('/^subject=/', '', $process->getOutput()));
234+
return trim(preg_replace('/^subject=/', '', $process2->getOutput()));
238235
}
239236

240237
/**
@@ -251,14 +248,14 @@ public function getIssuer($passPhrase)
251248
$in = escapeshellarg($this->getPathname());
252249
$pass = escapeshellarg($passPhrase);
253250

254-
$command = "
255-
openssl pkcs12 -in $in -passin pass:$pass -nokeys |
256-
openssl x509 -noout -issuer";
251+
$process1 = new Process("openssl pkcs12 -in $in -passin pass:$pass -nokeys");
252+
$process1->mustRun();
257253

258-
$process = new Process($command);
259-
$process->mustRun();
254+
$process2 = new Process('openssl x509 -noout -issuer');
255+
$process2->setInput($process1->getOutput());
256+
$process2->mustRun();
260257

261-
return trim(preg_replace('/^issuer=/', '', $process->getOutput()));
258+
return trim(preg_replace('/^issuer=/', '', $process2->getOutput()));
262259
}
263260

264261
/**
@@ -275,14 +272,14 @@ public function getNotBefore($passPhrase)
275272
$in = escapeshellarg($this->getPathname());
276273
$pass = escapeshellarg($passPhrase);
277274

278-
$command = "
279-
openssl pkcs12 -in $in -passin pass:$pass -nokeys |
280-
openssl x509 -noout -startdate";
275+
$process1 = new Process("openssl pkcs12 -in $in -passin pass:$pass -nokeys");
276+
$process1->mustRun();
281277

282-
$process = new Process($command);
283-
$process->mustRun();
278+
$process2 = new Process('openssl x509 -noout -startdate');
279+
$process2->setInput($process1->getOutput());
280+
$process2->mustRun();
284281

285-
return new \DateTime(trim(preg_replace('/^notBefore=/', '', $process->getOutput())));
282+
return new \DateTime(trim(preg_replace('/^notBefore=/', '', $process2->getOutput())));
286283
}
287284

288285
/**
@@ -299,14 +296,14 @@ public function getNotAfter($passPhrase)
299296
$in = escapeshellarg($this->getPathname());
300297
$pass = escapeshellarg($passPhrase);
301298

302-
$command = "
303-
openssl pkcs12 -in $in -passin pass:$pass -nokeys |
304-
openssl x509 -noout -enddate";
299+
$process1 = new Process("openssl pkcs12 -in $in -passin pass:$pass -nokeys");
300+
$process1->mustRun();
305301

306-
$process = new Process($command);
307-
$process->mustRun();
302+
$process2 = new Process('openssl x509 -noout -enddate');
303+
$process2->setInput($process1->getOutput());
304+
$process2->mustRun();
308305

309-
return new \DateTime(trim(preg_replace('/^notAfter=/', '', $process->getOutput())));
306+
return new \DateTime(trim(preg_replace('/^notAfter=/', '', $process2->getOutput())));
310307
}
311308

312309
/**
@@ -321,9 +318,7 @@ public function verifyPassPhrase($passPhrase)
321318
$in = escapeshellarg($this->getPathname());
322319
$pass = escapeshellarg($passPhrase);
323320

324-
$command = "openssl pkcs12 -in $in -passin pass:$pass -noout";
325-
326-
$process = new Process($command);
321+
$process = new Process("openssl pkcs12 -in $in -passin pass:$pass -noout");
327322
$process->run();
328323

329324
return $process->isSuccessful();
@@ -346,20 +341,25 @@ public function changePassPhrase($passPhrase, $newPassPhrase)
346341
$pass = escapeshellarg($passPhrase);
347342
$newPass = escapeshellarg($newPassPhrase);
348343

349-
$command = "
350-
{
351-
openssl pkcs12 -in $in -passin pass:$pass -nocerts -passout pass:pipe |
352-
openssl rsa -passin pass:pipe -passout pass:pipe
353-
openssl pkcs12 -in $in -passin pass:$pass -nokeys |
354-
openssl x509
355-
} |
356-
openssl pkcs12 -passin pass:pipe -out $in~ -passout pass:$newPass -export &&
357-
mv --force $in~ $in ||
358-
rm --force $in~";
344+
$process1 = new Process("openssl pkcs12 -in $in -passin pass:$pass -nocerts -passout pass:pipe");
345+
$process1->mustRun();
346+
347+
$process2 = new Process("openssl rsa -passin pass:pipe -passout pass:pipe");
348+
$process2->setInput($process1->getOutput());
349+
$process2->mustRun();
350+
351+
$process3 = new Process("openssl pkcs12 -in $in -passin pass:$pass -nokeys");
352+
$process3->mustRun();
353+
354+
$process4 = new Process("openssl x509");
355+
$process4->setInput($process3->getOutput());
356+
$process4->mustRun();
359357

360-
$process = new Process($command);
361-
$process->mustRun();
358+
$process5 = new Process("openssl pkcs12 -passin pass:pipe -passout pass:$newPass -export");
359+
$process5->setInput($process2->getOutput() . $process4->getOutput());
360+
$process5->mustRun();
362361

362+
@file_put_contents($this->getPathname(), $process5->getOutput());
363363
@chmod($this->getPathname(), 0666 & ~umask());
364364
clearstatcache(true, $this->getPathname());
365365

0 commit comments

Comments
 (0)