Skip to content

Commit

Permalink
Phar builder (sans Phar)
Browse files Browse the repository at this point in the history
  • Loading branch information
paragonie-scott committed Feb 6, 2016
1 parent b3f8c89 commit 0c66df2
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
9 changes: 9 additions & 0 deletions dist/random_compat.phar.pubkey
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA56Ododgbfwfg+QAxOPex
HtofrcX6DR6wOJ9H1E7LZiOWWBe1pR85oqBbWYC/0r858/KeMnVj6cH0KQ+FAWxE
VqKuX5oyl1u2fTKTMI0KIBXMu1CxWHKbZBHEtur8zEgoPyhMzOxCbKDtcfHLuKTK
pWBAsakH0LY6vVzJXqsLjsKJt65CeNlDAs8PhYnrX69bgb6M5u30fdTjhnBKeEJf
lKx9YIrYN3fwUvIxw93g+4mQQKOzg4nPvjVXabhUdBLi/X8eJLVSCbp7/Lisj/Uj
kzNBfYsd4b9vZnGsRVW4m3/+tyRSAEY3atio1KfoYKnqb2aPdfLxaKc03xK2JyaU
iQIDAQAB
-----END PUBLIC KEY-----
57 changes: 57 additions & 0 deletions other/build_phar.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<?php
$dist = dirname(__DIR__).'/dist';
if (!is_dir($dist)) {
mkdir($dist, 0755);
}
if (file_exists($dist.'/random_compat.phar')) {
unlink($dist.'/random_compat.phar');
}
$phar = new Phar(
$dist.'/random_compat.phar',
FilesystemIterator::CURRENT_AS_FILEINFO | \FilesystemIterator::KEY_AS_FILENAME,
'random_compat.phar'
);
rename(
dirname(__DIR__).'/lib/random.php',
dirname(__DIR__).'/lib/index.php'
);
$phar->buildFromDirectory(dirname(__DIR__).'/lib');
rename(
dirname(__DIR__).'/lib/index.php',
dirname(__DIR__).'/lib/random.php'
);

/**
* If we pass an (optional) path to a private key as a second argument, we will
* sign the Phar with OpenSSL.
*
* If you leave this out, it will produce an unsigned .phar!
*/
if ($argc > 1) {
if (!@is_readable($argv[1])) {
echo 'Could not read the private key file:', $argv[1], "\n";
exit(255);
}
$pkeyFile = file_get_contents($argv[1]);

$private = openssl_get_privatekey($pkeyFile);
if ($private !== false) {
$pkey = '';
openssl_pkey_export($private, $pkey);
$phar->setSignatureAlgorithm(Phar::OPENSSL, $pkey);

/**
* Save the corresponding public key to the file
*/
if (!@is_readable($dist.'/random_compat.phar.pubkey')) {
$details = openssl_pkey_get_details($private);
file_put_contents(
$dist.'/random_compat.phar.pubkey',
$details['key']
);
}
} else {
echo 'An error occurred reading the private key from OpenSSL.', "\n";
exit(255);
}
}

0 comments on commit 0c66df2

Please sign in to comment.