1<?php 2$dist = dirname(__DIR__).'/dist'; 3if (!is_dir($dist)) { 4 mkdir($dist, 0755); 5} 6if (file_exists($dist.'/random_compat.phar')) { 7 unlink($dist.'/random_compat.phar'); 8} 9$phar = new Phar( 10 $dist.'/random_compat.phar', 11 FilesystemIterator::CURRENT_AS_FILEINFO | \FilesystemIterator::KEY_AS_FILENAME, 12 'random_compat.phar' 13); 14rename( 15 dirname(__DIR__).'/lib/random.php', 16 dirname(__DIR__).'/lib/index.php' 17); 18$phar->buildFromDirectory(dirname(__DIR__).'/lib'); 19rename( 20 dirname(__DIR__).'/lib/index.php', 21 dirname(__DIR__).'/lib/random.php' 22); 23 24/** 25 * If we pass an (optional) path to a private key as a second argument, we will 26 * sign the Phar with OpenSSL. 27 * 28 * If you leave this out, it will produce an unsigned .phar! 29 */ 30if ($argc > 1) { 31 if (!@is_readable($argv[1])) { 32 echo 'Could not read the private key file:', $argv[1], "\n"; 33 exit(255); 34 } 35 $pkeyFile = file_get_contents($argv[1]); 36 37 $private = openssl_get_privatekey($pkeyFile); 38 if ($private !== false) { 39 $pkey = ''; 40 openssl_pkey_export($private, $pkey); 41 $phar->setSignatureAlgorithm(Phar::OPENSSL, $pkey); 42 43 /** 44 * Save the corresponding public key to the file 45 */ 46 if (!@is_readable($dist.'/random_compat.phar.pubkey')) { 47 $details = openssl_pkey_get_details($private); 48 file_put_contents( 49 $dist.'/random_compat.phar.pubkey', 50 $details['key'] 51 ); 52 } 53 } else { 54 echo 'An error occurred reading the private key from OpenSSL.', "\n"; 55 exit(255); 56 } 57} 58