major refactoring under the hood
[pharext/pharext] / src / pharext / Task / PharSign.php
diff --git a/src/pharext/Task/PharSign.php b/src/pharext/Task/PharSign.php
new file mode 100644 (file)
index 0000000..739c587
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+
+namespace pharext\Task;
+
+use pharext\Openssl;
+use pharext\Task;
+
+use Phar;
+
+/**
+ * Sign the phar with a private key
+ */
+class PharSign implements Task
+{
+       /**
+        * @var Phar
+        */
+       private $phar;
+
+       /**
+        * @var \pharext\Openssl\PrivateKey
+        */
+       private $pkey;
+
+       /**
+        *
+        * @param mixed $phar phar instance or path to phar
+        * @param string $pkey path to private key
+        * @param string $pass password for the private key
+        */
+       public function __construct($phar, $pkey, $pass) {
+               if ($phar instanceof Phar || $phar instanceof PharData) {
+                       $this->phar = $phar;
+               } else {
+                       $this->phar = new Phar($phar);
+               }
+               $this->pkey = new Openssl\PrivateKey($pkey, $pass);
+       }
+
+       /**
+        * @param bool $verbose
+        * @return \pharext\Openssl\PrivateKey
+        */
+       public function run($verbose = false) {
+               $this->pkey->sign($this->phar);
+               return $this->pkey;
+       }
+}