Bitrix-D7  20.5.0
Класс CryptoField
Граф наследования:CryptoField:
TextField StringField ScalarField Field IStorable ITypeHintable IReadable SecretField CryptoField

Открытые члены

 __construct ($name, $parameters=array())
 CryptoField constructor. Подробнее...
 
 encrypt ($data)
 
 decrypt ($data)
 
- Открытые члены унаследованные от TextField
 convertValueFromDb ($value)
 
 convertValueToDb ($value)
 
- Открытые члены унаследованные от StringField
 configureFormat ($format)
 
 getFormat ()
 Shortcut for Regexp validator. Подробнее...
 
 getValidators ()
 
 configureSize ($size)
 
 getSize ()
 Returns the size of the field in a database (in characters). Подробнее...
 
 cast ($value)
 
- Открытые члены унаследованные от ScalarField
 getTypeMask ()
 
 configurePrimary ($value=true)
 
 isPrimary ()
 
 configureRequired ($value=true)
 
 isRequired ()
 
 configureUnique ($value=true)
 
 isUnique ()
 
 configureAutocomplete ($value=true)
 
 isAutocomplete ()
 
 configurePrivate ($value=true)
 
 isPrivate ()
 
 configureColumnName ($value)
 
 getColumnName ()
 
 setColumnName ($column_name)
 
 configureDefaultValue ($value)
 
 getDefaultValue ($row=null)
 
 isValueEmpty ($value)
 
 getGetterTypeHint ()
 
 getSetterTypeHint ()
 
- Открытые члены унаследованные от Field
 setEntity (Entity $entity)
 
 resetEntity ()
 
 validateValue ($value, $primary, $row, Result $result)
 
 modifyValueBeforeSave ($value, $data)
 
 addValidator ($validator)
 
 getFetchDataModifiers ()
 
 addFetchDataModifier ($modifier)
 
 getSaveDataModifiers ()
 
 addSaveDataModifier ($modifier)
 
 isSerialized ()
 
 setSerialized ()
 
 configureSerialized ()
 
 getName ()
 
 setName ($name)
 
 configureTitle ($title)
 Lang phrase. Подробнее...
 
 getTitle ()
 
 setParameter ($name, $value)
 
 getParameter ($name)
 
 hasParameter ($name)
 
 setParentField (Field $parentField)
 
 getParentField ()
 
 getDataType ()
 
 getEntity ()
 
 getLangCode ()
 
 getConnection ()
 
 serialize ($value)
 
 unserialize ($value)
 
 postInitialize ()
 Called after being initialized by Entity. Подробнее...
 

Открытые статические члены

static cryptoAvailable ($key='')
 Checks availability of the crypto class and the crypto key. Подробнее...
 
static getDefaultKey ()
 
- Открытые статические члены унаследованные от Field
static getOldDataTypeByClass ($class)
 
static getOldDataTypeByField (Field $field)
 
static getClassByOldDataType ($dateType)
 

Защищенные данные

 $cryptoKey
 
- Защищенные данные унаследованные от StringField
 $format = null
 
 $size = null
 
- Защищенные данные унаследованные от ScalarField
 $is_primary
 
 $is_unique
 
 $is_required
 
 $is_autocomplete
 
 $is_private
 
 $column_name = ''
 
 $default_value
 
- Защищенные данные унаследованные от Field
 $name
 
 $dataType
 
 $initialParameters
 
 $title
 
 $validation = null
 
 $validators = null
 
 $additionalValidators = array()
 
 $fetchDataModification = null
 
 $fetchDataModifiers
 
 $additionalFetchDataModifiers = array()
 
 $saveDataModification = null
 
 $saveDataModifiers
 
 $additionalSaveDataModifiers = array()
 
 $isSerialized = false
 
 $parentField
 
 $entity
 

Статические защищенные данные

static $cipher
 
- Статические защищенные данные унаследованные от Field
static $oldDataTypes
 

Дополнительные унаследованные члены

- Защищенные члены унаследованные от Field
 appendValidator ($validator)
 
 appendFetchDataModifier ($modifier)
 
 appendSaveDataModifier ($modifier)
 

Подробное описание

См. определение в файле main/lib/orm/fields/cryptofield.php строка 13

Конструктор(ы)

◆ __construct()

__construct (   $name,
  $parameters = array() 
)

CryptoField constructor.

Аргументы
string$name
array$parametersCan contain the 'crypto_key' parameter, otherwise the key is taken from .settings.php as 'crypto' => array('value' => array ( 'crypto_key' => 'mysupersecretphrase', ))
Исключения

Переопределяет метод предка StringField.

Переопределяется в CryptoField и SecretField.

См. определение в файле main/lib/orm/fields/cryptofield.php строка 31

32  {
33  parent::__construct($name, $parameters);
34 
35  $enabled = true;
36  if(isset($parameters['crypto_enabled']))
37  {
38  $enabled = (bool)$parameters['crypto_enabled'];
39  }
40 
41  if($enabled)
42  {
43  if(isset($parameters['crypto_key']) && $parameters['crypto_key'] <> '')
44  {
45  $this->cryptoKey = $parameters['crypto_key'];
46  }
47  else
48  {
49  // get the key from the settings
50  if(($key = static::getDefaultKey()) <> '')
51  {
52  $this->cryptoKey = $key;
53  }
54  }
55 
56  if(static::cryptoAvailable($this->cryptoKey))
57  {
58  $this->addSaveDataModifier(array($this, 'encrypt'));
59  $this->addFetchDataModifier(array($this, 'decrypt'));
60  }
61  else
62  {
63  throw new \Bitrix\Main\NotSupportedException("Crypto is not available.");
64  }
65  }
66  }
__construct(Base $connector)
Constructor.
Definition: resultview.php:40

Методы

◆ cryptoAvailable()

static cryptoAvailable (   $key = '')
static

Checks availability of the crypto class and the crypto key.

Аргументы
string$key
Возвращает
bool

Переопределяется в CryptoField.

См. определение в файле main/lib/orm/fields/cryptofield.php строка 73

74  {
75  if($key == '')
76  {
77  // get the key from the settings
78  $key = static::getDefaultKey();
79  }
80 
81  if($key <> '')
82  {
83  if(static::$cipher === null)
84  {
85  try
86  {
87  static::$cipher = new Security\Cipher();
88  }
89  catch(Security\SecurityException $e)
90  {
91  static::$cipher = false;
92  }
93  }
94  }
95 
96  return ($key <> '' && static::$cipher);
97  }

◆ decrypt()

decrypt (   $data)

Переопределяется в CryptoField.

См. определение в файле main/lib/orm/fields/cryptofield.php строка 130

131  {
132  if($data == '')
133  {
134  //is empty data still a secret?
135  return $data;
136  }
137  try
138  {
139  //decrypt the data
140  $value = base64_decode($data);
141  $value = static::$cipher->decrypt($value, $this->cryptoKey);
142  return $value;
143  }
144  catch(Security\SecurityException $e)
145  {
146  trigger_error("Error on decrypting the field {$this->getEntity()->getName()}.{$this->getName()}: {$e->getMessage()}", E_USER_WARNING);
147  return null;
148  }
149  }

◆ encrypt()

encrypt (   $data)

См. определение в файле main/lib/orm/fields/cryptofield.php строка 110

111  {
112  if($data == '')
113  {
114  //is empty data still a secret?
115  return $data;
116  }
117  try
118  {
119  //encrypt the data
120  $value = static::$cipher->encrypt($data, $this->cryptoKey);
121  return base64_encode($value);
122  }
123  catch(Security\SecurityException $e)
124  {
125  trigger_error("Error on encrypting the field {$this->getEntity()->getName()}.{$this->getName()}: {$e->getMessage()}", E_USER_WARNING);
126  return null;
127  }
128  }

◆ getDefaultKey()

static getDefaultKey ( )
static

См. определение в файле main/lib/orm/fields/cryptofield.php строка 99

100  {
101  // get the key from the settings
102  $options = \Bitrix\Main\Config\Configuration::getValue("crypto");
103  if(isset($options["crypto_key"]))
104  {
105  return $options["crypto_key"];
106  }
107  return '';
108  }

Поля

◆ $cipher

$cipher
staticprotected

См. определение в файле main/lib/orm/fields/cryptofield.php строка 19

◆ $cryptoKey

$cryptoKey
protected

См. определение в файле main/lib/orm/fields/cryptofield.php строка 15


Объявления и описания членов класса находятся в файле: