*/
protected $delim;
+ /**
+ * @var \Civi\Crypto\CryptoRegistry|null
+ */
+ private $registry;
+
/**
* CryptoToken constructor.
+ *
+ * @param CryptoRegistry $registry
*/
- public function __construct() {
+ public function __construct($registry = NULL) {
$this->delim = chr(2);
+ $this->registry = $registry;
}
/**
* @return bool
*/
public function isPlainText($plainText) {
- return is_string($plainText) && ($plainText === '' || $plainText{0} !== $this->delim);
+ return is_string($plainText) && ($plainText === '' || $plainText[0] !== $this->delim);
}
/**
*/
public function encrypt($plainText, $keyIdOrTag) {
/** @var CryptoRegistry $registry */
- $registry = \Civi::service('crypto.registry');
+ $registry = $this->getRegistry();
$key = $registry->findKey($keyIdOrTag);
if ($key['suite'] === 'plain') {
}
/** @var CryptoRegistry $registry */
- $registry = \Civi::service('crypto.registry');
+ $registry = $this->getRegistry();
$tokenData = $this->parse($token);
*/
public function rekey($oldToken, $keyTag) {
/** @var \Civi\Crypto\CryptoRegistry $registry */
- $registry = \Civi::service('crypto.registry');
+ $registry = $this->getRegistry();
$sourceKeys = $registry->findKeysByTag($keyTag);
$targetKey = array_shift($sourceKeys);
return $tokenData;
}
+ /**
+ * @return CryptoRegistry
+ */
+ protected function getRegistry(): CryptoRegistry {
+ if ($this->registry === NULL) {
+ $this->registry = \Civi::service('crypto.registry');
+ }
+ return $this->registry;
+ }
+
}