diff core/lib/Drupal/Core/PrivateKey.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/lib/Drupal/Core/PrivateKey.php	Wed Nov 29 16:09:58 2017 +0000
@@ -0,0 +1,65 @@
+<?php
+
+namespace Drupal\Core;
+
+use Drupal\Core\State\StateInterface;
+use Drupal\Component\Utility\Crypt;
+
+/**
+ * Manages the Drupal private key.
+ */
+class PrivateKey {
+
+  /**
+   * The state service.
+   *
+   * @var \Drupal\Core\State\StateInterface
+   */
+  protected $state;
+
+  /**
+   * Constructs the token generator.
+   *
+   * @param \Drupal\Core\State\StateInterface $state
+   *   The state service.
+   */
+  public function __construct(StateInterface $state) {
+    $this->state = $state;
+  }
+
+  /**
+   * Gets the private key.
+   *
+   * @return string
+   *   The private key.
+   */
+  public function get() {
+    if (!$key = $this->state->get('system.private_key')) {
+      $key = $this->create();
+      $this->set($key);
+    }
+
+    return $key;
+  }
+
+  /**
+   * Sets the private key.
+   *
+   * @param string $key
+   *   The private key to set.
+   */
+  public function set($key) {
+    return $this->state->set('system.private_key', $key);
+  }
+
+  /**
+   * Creates a new private key.
+   *
+   * @return string
+   *   The private key.
+   */
+  protected function create() {
+    return Crypt::randomBytesBase64(55);
+  }
+
+}