58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?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);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |