blob: 70ef4b2ed838a6bf32d64e3da4c26f9d367e6ab5 [file] [log] [blame]
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +01001<?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}