Phalcon encryption
NOTE
All classes are prefixed with Phalcon
Encryption\Crypt¶
-
Namespace
Phalcon\Encryption
-
Uses
Phalcon\Encryption\Crypt\CryptInterfacePhalcon\Encryption\Crypt\Exception\ExceptionPhalcon\Encryption\Crypt\Exception\MismatchPhalcon\Encryption\Crypt\PadFactory
-
Extends
-
Implements
CryptInterface
Provides encryption capabilities to Phalcon applications.
use Phalcon\Crypt;
$crypt = new Crypt();
$crypt->setCipher("aes-256-ctr");
$key =
"T4\xb1\x8d\xa9\x98\x05\\\x8c\xbe\x1d\x07&[\x99\x18\xa4~Lc1\xbeW\xb3";
$input = "The message to be encrypted";
$encrypted = $crypt->encrypt($input, $key);
echo $crypt->decrypt($encrypted, $key);
Constants¶
const DEFAULT_ALGORITHM = sha256;
const DEFAULT_CIPHER = aes-256-cfb;
const PADDING_ANSI_X_923 = 1;
const PADDING_DEFAULT = 0;
const PADDING_ISO_10126 = 3;
const PADDING_ISO_IEC_7816_4 = 4;
const PADDING_PKCS7 = 2;
const PADDING_SPACE = 6;
const PADDING_ZERO = 5;
Properties¶
/**
* @var string
*/
protected $authData = ;
/**
* @var string
*/
protected $authTag = ;
/**
* @var int
*/
protected $authTagLength = 16;
/**
* Available cipher methods.
*
* @var array
*/
protected $availableCiphers;
/**
* @var string
*/
protected $cipher;
/**
* The name of hashing algorithm.
*
* @var string
*/
protected $hashAlgorithm;
/**
* The cipher iv length.
*
* @var int
*/
protected $ivLength = 16;
/**
* @var string
*/
protected $key = ;
/**
* @var int
*/
protected $padding = ;
/**
* @var PadFactory
*/
protected $padFactory;
/**
* Whether calculating message digest enabled or not.
*
* @var bool
*/
protected $useSigning = true;
Methods¶
public function __construct( string $cipher = static-constant-access, bool $useSigning = bool, PadFactory $padFactory = null );
$encrypted = $crypt->decrypt(
$encrypted,
"T4\xb1\x8d\xa9\x98\x05\\\x8c\xbe\x1d\x07&[\x99\x18\xa4~Lc1\xbeW\xb3"
);
$encrypted = $crypt->encrypt(
"Top secret",
"T4\xb1\x8d\xa9\x98\x05\\\x8c\xbe\x1d\x07&[\x99\x18\xa4~Lc1\xbeW\xb3"
);
The $key should have been previously generated in a cryptographically safe way.
Bad key: "le password"
Better (but still unsafe) -> "#1dj8$=dp?.ak//j1V$~%*0X"
Good key: "T4\xb1\x8d\xa9\x98\x05\\x8c\xbe\x1d\x07&[\x99\x18\xa4~Lc1\xbeW\xb3"
Changes the padding scheme used. Sets if the calculating message digest must used. Checks if a cipher or a hash algorithm is availableprotected function cryptPadText( string $input, string $mode, int $blockSize, int $paddingType ): string;
protected function cryptUnpadText( string $input, string $mode, int $blockSize, int $paddingType ): string;
If the function detects that the text was not padded, it will return it unmodified.
protected function decryptGcmCcmAuth( string $mode, string $cipherText, string $decryptKey, string $iv ): string;
protected function encryptGcmCcm( string $mode, string $padded, string $encryptKey, string $iv ): string;
Encryption\Crypt\CryptInterface
¶
-
Namespace
Phalcon\Encryption\Crypt
-
Uses
-
Extends
-
Implements
Interface for Phalcon\Crypt
Methods¶
Decrypts a text Decrypt a text that is coded as a base64 string Encrypts a text Encrypts a text returning the result as a base64 string Returns authentication data Returns the authentication tag Returns the authentication tag length Returns a list of available cyphers Returns the current cipher Returns the encryption key Sets authentication data Sets the authentication tag Sets the authentication tag length Sets the cipher algorithm Sets the encryption key Changes the padding scheme used. Sets if the calculating message digest must be used.Encryption\Crypt\Exception\Exception¶
-
Namespace
Phalcon\Encryption\Crypt\Exception
-
Uses
-
Extends
\Exception -
Implements
Exceptions thrown in Phalcon\Crypt use this class
Encryption\Crypt\Exception\Mismatch¶
-
Namespace
Phalcon\Encryption\Crypt\Exception
-
Uses
-
Extends
Exception -
Implements
Exceptions thrown in Phalcon\Crypt will use this class.
Encryption\Crypt\PadFactory¶
-
Namespace
Phalcon\Encryption\Crypt
-
Uses
Phalcon\Encryption\CryptPhalcon\Encryption\Crypt\Padding\PadInterfacePhalcon\Factory\AbstractFactoryPhalcon\Support\Helper\Arr\Get
-
Extends
AbstractFactory -
Implements
Class PadFactory
@package Phalcon\Crypt
Properties¶
Methods¶
AdapterFactory constructor. Create a new instance of the adapter Gets a Crypt pad constant and returns the unique service name for the padding classEncryption\Crypt\Padding\Ansi¶
-
Namespace
Phalcon\Encryption\Crypt\Padding
-
Uses
-
Extends
-
Implements
PadInterface
Class Ansi
@package Phalcon\Encryption\Crypt\Padding
Methods¶
Encryption\Crypt\Padding\Iso10126¶
-
Namespace
Phalcon\Encryption\Crypt\Padding
-
Uses
-
Extends
-
Implements
PadInterface
Class Iso10126
@package Phalcon\Encryption\Crypt\Padding
Methods¶
Encryption\Crypt\Padding\IsoIek¶
-
Namespace
Phalcon\Encryption\Crypt\Padding
-
Uses
-
Extends
-
Implements
PadInterface
Class IsoIek
@package Phalcon\Encryption\Crypt\Padding
Methods¶
Encryption\Crypt\Padding\Noop¶
-
Namespace
Phalcon\Encryption\Crypt\Padding
-
Uses
-
Extends
-
Implements
PadInterface
Class Noop
@package Phalcon\Encryption\Crypt\Padding
Methods¶
Encryption\Crypt\Padding\PadInterface
¶
-
Namespace
Phalcon\Encryption\Crypt\Padding
-
Uses
-
Extends
-
Implements
Interface for Phalcon\Encryption\Crypt\Padding
Methods¶
Encryption\Crypt\Padding\Pkcs7¶
-
Namespace
Phalcon\Encryption\Crypt\Padding
-
Uses
-
Extends
-
Implements
PadInterface
Class Pkcs7
@package Phalcon\Encryption\Crypt\Padding
Methods¶
Encryption\Crypt\Padding\Space¶
-
Namespace
Phalcon\Encryption\Crypt\Padding
-
Uses
-
Extends
-
Implements
PadInterface
Class Space
@package Phalcon\Encryption\Crypt\Padding
Methods¶
Encryption\Crypt\Padding\Zero¶
-
Namespace
Phalcon\Encryption\Crypt\Padding
-
Uses
-
Extends
-
Implements
PadInterface
Class Zero
@package Phalcon\Encryption\Crypt\Padding
Methods¶
Encryption\Security¶
-
Namespace
Phalcon\Encryption
-
Uses
Phalcon\Di\AbstractInjectionAwarePhalcon\Di\DiInterfacePhalcon\Encryption\Security\ExceptionPhalcon\Encryption\Security\RandomPhalcon\Http\RequestInterfacePhalcon\Session\ManagerInterface
-
Extends
AbstractInjectionAware -
Implements
This component provides a set of functions to improve the security in Phalcon applications
$login = $this->request->getPost("login");
$password = $this->request->getPost("password");
$user = Users::findFirstByLogin($login);
if ($user) {
if ($this->security->checkHash($password, $user->password)) {
// The password is valid
}
}
Constants¶
const CRYPT_ARGON2I = 10;
const CRYPT_ARGON2ID = 11;
const CRYPT_BCRYPT = 0;
const CRYPT_BLOWFISH = 4;
const CRYPT_BLOWFISH_A = 5;
const CRYPT_BLOWFISH_X = 6;
const CRYPT_BLOWFISH_Y = 7;
const CRYPT_DEFAULT = 0;
const CRYPT_EXT_DES = 2;
const CRYPT_MD5 = 3;
const CRYPT_SHA256 = 8;
const CRYPT_SHA512 = 9;
const CRYPT_STD_DES = 1;
Properties¶
/**
* @var int
*/
protected $defaultHash;
/**
* @var int
*/
protected $numberBytes = 16;
/**
* @var Random
*/
protected $random;
/**
* @var string|null
*/
protected $requestToken;
/**
* @var string|null
*/
protected $token;
/**
* @var string|null
*/
protected $tokenKey;
/**
* @var string
*/
protected $tokenKeySessionId = $PHALCON/CSRF/KEY$;
/**
* @var string
*/
protected $tokenValueSessionId = $PHALCON/CSRF$;
/**
* @var int
*/
protected $workFactor = 10;
/**
* @var SessionInterface|null
*/
private $localSession;
/**
* @var RequestInterface|null
*/
private $localRequest;
Methods¶
Security constructor.public function checkHash( string $password, string $passwordHash, int $maxPassLength = int ): bool;
public function checkToken( string $tokenKey = null, mixed $tokenValue = null, bool $destroyIfValid = bool ): bool;
Encryption\Security\Exception¶
-
Namespace
Phalcon\Encryption\Security
-
Uses
-
Extends
\Exception -
Implements
Phalcon\Encryption\Security\Exception
Exceptions thrown in Phalcon\Security will use this class
Encryption\Security\JWT\Builder¶
-
Namespace
Phalcon\Encryption\Security\JWT
-
Uses
Phalcon\Encryption\Security\JWT\Exceptions\ValidatorExceptionPhalcon\Encryption\Security\JWT\Signer\SignerInterfacePhalcon\Encryption\Security\JWT\Token\EnumPhalcon\Encryption\Security\JWT\Token\ItemPhalcon\Encryption\Security\JWT\Token\SignaturePhalcon\Encryption\Security\JWT\Token\TokenPhalcon\Support\CollectionPhalcon\Support\Collection\CollectionInterfacePhalcon\Support\Helper\Json\Encode
-
Extends
-
Implements
Builder
The builder offers
@property CollectionInterface $claims @property CollectionInterface $jose @property string $passphrase @property SignerInterface $signer
@link https://tools.ietf.org/html/rfc7519
Properties¶
/**
* @var CollectionInterface
*/
private $claims;
/**
* @var Encode
*/
private $encode;
/**
* @var CollectionInterface
*/
private $jose;
/**
* @var string
*/
private $passphrase;
/**
* @var SignerInterface
*/
private $signer;
Methods¶
Builder constructor. Adds a custom claim Adds a custom claim The "aud" (audience) claim identifies the recipients that the JWT is intended for. Each principal intended to process the JWT MUST identify itself with a value in the audience claim. If the principal processing the claim does not identify itself with a value in the "aud" claim when this claim is present, then the JWT MUST be rejected. In the general case, the "aud" value is an array of case- sensitive strings, each containing a StringOrURI value. In the special case when the JWT has one audience, the "aud" value MAY be a single case-sensitive string containing a StringOrURI value. The interpretation of audience values is generally application specific. Use of this claim is OPTIONAL. Sets the content type header 'cty' The "exp" (expiration time) claim identifies the expiration time on or after which the JWT MUST NOT be accepted for processing. The processing of the "exp" claim requires that the current date/time MUST be before the expiration date/time listed in the "exp" claim. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew. Its value MUST be a number containing a NumericDate value. Use of this claim is OPTIONAL. The "jti" (JWT ID) claim provides a unique identifier for the JWT. The identifier value MUST be assigned in a manner that ensures that there is a negligible probability that the same value will be accidentally assigned to a different data object; if the application uses multiple issuers, collisions MUST be prevented among values produced by different issuers as well. The "jti" claim can be used to prevent the JWT from being replayed. The "jti" value is a case- sensitive string. Use of this claim is OPTIONAL. The "iat" (issued at) claim identifies the time at which the JWT was issued. This claim can be used to determine the age of the JWT. Its value MUST be a number containing a NumericDate value. Use of this claim is OPTIONAL. The "iss" (issuer) claim identifies the principal that issued the JWT. The processing of this claim is generally application specific. The "iss" value is a case-sensitive string containing a StringOrURI value. Use of this claim is OPTIONAL. The "nbf" (not before) claim identifies the time before which the JWT MUST NOT be accepted for processing. The processing of the "nbf" claim requires that the current date/time MUST be after or equal to the not-before date/time listed in the "nbf" claim. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew. Its value MUST be a number containing a NumericDate value. Use of this claim is OPTIONAL. The "sub" (subject) claim identifies the principal that is the subject of the JWT. The claims in a JWT are normally statements about the subject. The subject value MUST either be scoped to be locally unique in the context of the issuer or be globally unique. The processing of this claim is generally application specific. The "sub" value is a case-sensitive string containing a StringOrURI value. Use of this claim is OPTIONAL. Sets a registered claimEncryption\Security\JWT\Exceptions\UnsupportedAlgorithmException¶
-
Namespace
Phalcon\Encryption\Security\JWT\Exceptions
-
Uses
Exception
-
Extends
Exception -
Implements
Exception thrown when the algorithm is not supported for JWT
Encryption\Security\JWT\Exceptions\ValidatorException¶
-
Namespace
Phalcon\Encryption\Security\JWT\Exceptions
-
Uses
Exception
-
Extends
Exception -
Implements
Exception thrown when the validation does not pass for JWT
Encryption\Security\JWT\Signer\AbstractSigner
¶
-
Namespace
Phalcon\Encryption\Security\JWT\Signer
-
Uses
-
Extends
-
Implements
SignerInterface
Abstract class helping with the signer classes
Properties¶
Methods¶
Encryption\Security\JWT\Signer\Hmac¶
-
Namespace
Phalcon\Encryption\Security\JWT\Signer
-
Uses
Phalcon\Encryption\Security\JWT\Exceptions\UnsupportedAlgorithmException
-
Extends
AbstractSigner -
Implements
HMAC signing class
Methods¶
Hmac constructor. Return the value that is used for the "alg" header Sign a payload using the passphrase Verify a passed source with a payload and passphraseEncryption\Security\JWT\Signer\None¶
-
Namespace
Phalcon\Encryption\Security\JWT\Signer
-
Uses
-
Extends
-
Implements
SignerInterface
No signing class
Methods¶
Return the value that is used for the "alg" header Return the algorithm used Sign a payload using the passphrase Verify a passed source with a payload and passphraseEncryption\Security\JWT\Signer\SignerInterface
¶
-
Namespace
Phalcon\Encryption\Security\JWT\Signer
-
Uses
-
Extends
-
Implements
Interface for JWT Signer classes
Methods¶
Return the value that is used for the "alg" header Return the algorithm used Sign a payload using the passphrase Verify a passed source with a payload and passphraseEncryption\Security\JWT\Token\AbstractItem
¶
-
Namespace
Phalcon\Encryption\Security\JWT\Token
-
Uses
-
Extends
-
Implements
Abstract helper class for Tokens
Properties¶
Methods¶
Encryption\Security\JWT\Token\Enum¶
-
Namespace
Phalcon\Encryption\Security\JWT\Token
-
Uses
-
Extends
-
Implements
Constants for Tokens. It offers constants for Headers as well as Claims
@link https://tools.ietf.org/html/rfc7519
Constants¶
const ALGO = alg;
const AUDIENCE = aud;
const CONTENT_TYPE = cty;
const EXPIRATION_TIME = exp;
const ID = jti;
const ISSUED_AT = iat;
const ISSUER = iss;
const NOT_BEFORE = nbf;
const SUBJECT = sub;
const TYPE = typ;
Encryption\Security\JWT\Token\Item¶
-
Namespace
Phalcon\Encryption\Security\JWT\Token
-
Uses
-
Extends
AbstractItem -
Implements
Storage class for a Token Item
Methods¶
Item constructor.Encryption\Security\JWT\Token\Parser¶
-
Namespace
Phalcon\Encryption\Security\JWT\Token
-
Uses
InvalidArgumentExceptionPhalcon\Support\Helper\Json\Decode
-
Extends
-
Implements
Token Parser class.
It parses a token by validating if it is formed properly and splits it into three parts. The headers are decoded, then the claims and finally the signature. It returns a token object populated with the decoded information.
Properties¶
Methods¶
Parse a token and return itEncryption\Security\JWT\Token\Signature¶
-
Namespace
Phalcon\Encryption\Security\JWT\Token
-
Uses
-
Extends
AbstractItem -
Implements
Signature class containing the encoded data and the hash.
Methods¶
Signature constructor.Encryption\Security\JWT\Token\Token¶
-
Namespace
Phalcon\Encryption\Security\JWT\Token
-
Uses
Phalcon\Encryption\Security\JWT\Signer\SignerInterfacePhalcon\Encryption\Security\JWT\Validator
-
Extends
-
Implements
Token Class.
A container for Token related data. It stores the claims, headers, signature and payload. It also calculates and returns the token string.
@link https://tools.ietf.org/html/rfc7519
Properties¶
/**
* @var Item
*/
private $claims;
/**
* @var Item
*/
private $headers;
/**
* @var Signature
*/
private $signature;
Methods¶
Token constructor. Return the registered claims Return the registered headers Return the payload Return the signature Return the token Verify the signatureEncryption\Security\JWT\Validator¶
-
Namespace
Phalcon\Encryption\Security\JWT
-
Uses
Phalcon\Encryption\Security\JWT\Exceptions\ValidatorExceptionPhalcon\Encryption\Security\JWT\Signer\SignerInterfacePhalcon\Encryption\Security\JWT\Token\EnumPhalcon\Encryption\Security\JWT\Token\Token
-
Extends
-
Implements
Class Validator
Properties¶
/**
* @var array
*/
private $claims;
/**
* @var array
*/
private $errors;
/**
* @var int
*/
private $timeShift = ;
/**
* @var Token
*/
private $token;
Methods¶
Validator constructor. Return the value of a claim Return an array with validation errors (if any) Set the value of a claim, for comparison with the token values Set the token to be validated Validate the audience Validate a claim Validate the expiration time of the token Validate the id of the token Validate the issued at (iat) of the token Validate the issuer of the token Validate the notbefore (nbf) of the token Validate the signature of the tokenEncryption\Security\Random¶
-
Namespace
Phalcon\Encryption\Security
-
Uses
-
Extends
-
Implements
Phalcon\Encryption\Security\Random
Secure random number generator class.
Provides secure random number generator which is suitable for generating session key in HTTP cookies, etc.
Phalcon\Encryption\Security\Random could be mainly useful for:
- Key generation (e.g. generation of complicated keys)
- Generating random passwords for new user accounts
- Encryption systems
$random = new \Phalcon\Encryption\Security\Random();
// Random binary string
$bytes = $random->bytes();
// Random hex string
echo $random->hex(10); // a29f470508d5ccb8e289
echo $random->hex(10); // 533c2f08d5eee750e64a
echo $random->hex(11); // f362ef96cb9ffef150c9cd
echo $random->hex(12); // 95469d667475125208be45c4
echo $random->hex(13); // 05475e8af4a34f8f743ab48761
// Random base62 string
echo $random->base62(); // z0RkwHfh8ErDM1xw
// Random base64 string
echo $random->base64(12); // XfIN81jGGuKkcE1E
echo $random->base64(12); // 3rcq39QzGK9fUqh8
echo $random->base64(); // DRcfbngL/iOo9hGGvy1TcQ==
echo $random->base64(16); // SvdhPcIHDZFad838Bb0Swg==
// Random URL-safe base64 string
echo $random->base64Safe(); // PcV6jGbJ6vfVw7hfKIFDGA
echo $random->base64Safe(); // GD8JojhzSTrqX7Q8J6uug
echo $random->base64Safe(8); // mGyy0evy3ok
echo $random->base64Safe(null, true); // DRrAgOFkS4rvRiVHFefcQ==
// Random UUID (version 4) — returns a string
echo $random->uuid(); // db082997-2572-4e2c-a046-5eefe97b1235
echo $random->uuid(); // da2aa0e2-b4d0-4e3c-99f5-f5ef62c57fe2
// For other UUID versions (1, 3, 5, 6, 7) or object-based access use the
// Phalcon\Encryption\Security\Uuid factory instead:
//
// $uuid = new \Phalcon\Encryption\Security\Uuid();
// echo $uuid->v1(); // time-based
// echo $uuid->v6(); // reordered time-based (sortable)
// echo $uuid->v7(); // Unix-timestamp based (sortable)
// Random number between 0 and $len
echo $random->number(256); // 84
echo $random->number(256); // 79
echo $random->number(100); // 29
echo $random->number(300); // 40
// Random base58 string
echo $random->base58(); // 4kUgL2pdQMSCQtjE
echo $random->base58(); // Umjxqf7ZPwh765yR
echo $random->base58(24); // qoXcgmw4A9dys26HaNEdCRj9
echo $random->base58(7); // 774SJD3vgP
This class partially borrows SecureRandom library from Ruby
@link https://ruby-doc.org/stdlib-2.2.2/libdoc/securerandom/rdoc/SecureRandom.html
Methods¶
Generates a random base58 stringThe result may contain alphanumeric characters except 0, O, I and l.
It is similar to Phalcon\Encryption\Security\Random::base64() but has been modified to avoid both non-alphanumeric characters and letters which might look ambiguous when printed.
@see \Phalcon\Encryption\Security\Random:base64 @link https://en.wikipedia.org/wiki/Base58 @throws Exception If secure random number generator is not available or unexpected partial read
Generates a random base62 stringIt is similar to Phalcon\Encryption\Security\Random::base58() but has been modified to provide the largest value that can safely be used in URLs without needing to take extra characters into consideration because it is [A-Za-z0-9].
@see \Phalcon\Encryption\Security\Random:base58 @throws Exception If secure random number generator is not available or unexpected partial read
Generates a random base64 stringThe length of the result string is usually greater of $len. Size formula: 4($len / 3) rounded up to a multiple of 4.
@throws Exception If secure random number generator is not available or unexpected partial read
Generates a random URL-safe base64 stringThe length of the result string is usually greater of $len.
By default, padding is not generated because "=" may be used as a URL delimiter. The result may contain A-Z, a-z, 0-9, "-" and "_". "=" is also used if $padding is true. See RFC 3548 for the definition of URL-safe base64.
$random = new \Phalcon\Encryption\Security\Random();
echo $random->base64Safe(); // GD8JojhzSTrqX7Q8J6uug
@link https://www.ietf.org/rfc/rfc3548.txt @throws Exception If secure random number generator is not available or unexpected partial read
Generates a random binary stringThe Random::bytes method returns a string and accepts as input an int representing the length in bytes to be returned.
If $len is not specified, 16 is assumed. It may be larger in future. The result may contain any byte: "x00" - "xFF".
$random = new \Phalcon\Encryption\Security\Random();
$bytes = $random->bytes();
var_dump(bin2hex($bytes));
// Possible output: string(32) "00f6c04b144b41fad6a59111c126e1ee"
@throws Exception If secure random number generator is not available or unexpected partial read
Generates a random hex stringThe length of the result string is usually greater of $len.
@throws Exception If secure random number generator is not available or unexpected partial read
Generates a random number between 0 and $lenReturns an integer: 0 <= result <= $len.
@throws Exception If secure random number generator is not available, unexpected partial read or $len <= 0 Generates a v4 random UUID (Universally Unique IDentifier)The version 4 UUID is purely random (except the version). It does not contain meaningful information such as MAC address, time, etc. See RFC 4122 for details of UUID.
Delegates to Phalcon\Encryption\Security\Uuid::v4(). For other UUID versions or object-based access use that class directly.
$random = new \Phalcon\Encryption\Security\Random();
echo $random->uuid(); // 1378c906-64bb-4f81-a8d6-4ae1bfcdec22
@link https://www.ietf.org/rfc/rfc4122.txt
Generates a random string based on the number ($base) of characters ($alphabet).@throws Exception If secure random number generator is not available or unexpected partial read
Encryption\Security\Uuid¶
-
Namespace
Phalcon\Encryption\Security
-
Uses
Phalcon\Encryption\Security\Uuid\Version1Phalcon\Encryption\Security\Uuid\Version3Phalcon\Encryption\Security\Uuid\Version4Phalcon\Encryption\Security\Uuid\Version5Phalcon\Encryption\Security\Uuid\Version6Phalcon\Encryption\Security\Uuid\Version7
-
Extends
-
Implements
Factory that generates UUIDs of versions 1 through 7.
Each call creates a new immutable version object. Cast to string for the UUID value; use the returned object for additional methods such as getDateTime() or getNode().
@method Version1 v1() @method Version3 v3(string $namespaceName, string $name) @method Version4 v4() @method Version5 v5(string $namespaceName, string $name) @method Version6 v6() @method Version7 v7()
Methods¶
Generates a version 1 (time-based) UUID. Generates a version 3 (name-based MD5) UUID. Generates a version 4 (random) UUID. Generates a version 5 (name-based SHA-1) UUID. Generates a version 6 (reordered time-based) UUID. Generates a version 7 (Unix timestamp) UUID.Encryption\Security\Uuid\AbstractUuid
¶
-
Namespace
Phalcon\Encryption\Security\Uuid
-
Uses
-
Extends
-
Implements
UuidInterface
Shared base for all UUID version objects.
Constants¶
const MAX = ffffffff-ffff-ffff-ffff-ffffffffffff;
const NIL = 00000000-0000-0000-0000-000000000000;
const TIME_OFFSET_INT = 0x01B21DD213814000;
Properties¶
/**
* Cached SysNodeProvider instance — shared within the request via static.
*
* @var NodeProviderInterface|null
*/
protected static $nodeProvider;
/**
* The generated UUID string.
*
* @var string
*/
protected $uid = ;
Methods¶
Returns the UUID string. Returns the UUID string for JSON serialisation. Formats a 32-character hex string as a canonical UUID string. Returns the shared SysNodeProvider instance, creating it on first call. The static property means one discovery per request regardless of how many VersionN objects are constructed. Converts a canonical UUID string to its 16-byte binary representation. Converts a 60-bit UUID timestamp (100-ns intervals since UUID epoch) to a DateTimeImmutable. Used by Version1 and Version6.Encryption\Security\Uuid\NodeProviderInterface
¶
-
Namespace
Phalcon\Encryption\Security\Uuid
-
Uses
-
Extends
-
Implements
This file is part of the Phalcon Framework.
(c) Phalcon Team team@phalcon.io
For the full copyright and license information, please view the LICENSE.txt file that was distributed with this source code.
Implementation of this file has been influenced by sinbadxiii/cphalcon-uuid @link https://github.com/sinbadxiii/cphalcon-uuid
Methods¶
Encryption\Security\Uuid\RandomNodeProvider¶
-
Namespace
Phalcon\Encryption\Security\Uuid
-
Uses
-
Extends
-
Implements
NodeProviderInterface
Generates a random 48-bit node with the multicast bit set.
Used as a fallback when no hardware MAC address is available.
@link https://www.ietf.org/rfc/rfc4122.txt Section 4.5
Methods¶
Returns a random 12-character hex node with the multicast bit set.Encryption\Security\Uuid\SysNodeProvider¶
-
Namespace
Phalcon\Encryption\Security\Uuid
-
Uses
-
Extends
-
Implements
NodeProviderInterface
Discovers the hardware MAC address and returns it as a 12-character hex node.
Two-layer cache: 1. Instance property — free on all calls after the first within this instance. 2. APCu — cross-request within the same PHP-FPM worker (optional).
Falls back to RandomNodeProvider if no valid MAC address is found.
Platform support: Linux — reads /sys/class/net/*\/address macOS — passthru("ifconfig 2>&1") Windows — passthru("ipconfig /all 2>&1") FreeBSD — passthru("netstat -i -f link 2>&1")
Properties¶
Methods¶
Returns the hardware MAC address as a 12-character hex string. Result is cached in the instance property and optionally in APCu.Encryption\Security\Uuid\TimeBasedUuidInterface
¶
-
Namespace
Phalcon\Encryption\Security\Uuid
-
Uses
-
Extends
-
Implements
This file is part of the Phalcon Framework.
(c) Phalcon Team team@phalcon.io
For the full copyright and license information, please view the LICENSE.txt file that was distributed with this source code.
Implementation of this file has been influenced by sinbadxiii/cphalcon-uuid @link https://github.com/sinbadxiii/cphalcon-uuid
Methods¶
Encryption\Security\Uuid\UuidInterface
¶
-
Namespace
Phalcon\Encryption\Security\Uuid
-
Uses
-
Extends
-
Implements
Marker interface for UUID version adapters.
Also carries the standard RFC 4122 namespace UUIDs as constants.
Constants¶
const NAMESPACE_DNS = 6ba7b810-9dad-11d1-80b4-00c04fd430c8;
const NAMESPACE_OID = 6ba7b812-9dad-11d1-80b4-00c04fd430c8;
const NAMESPACE_URL = 6ba7b811-9dad-11d1-80b4-00c04fd430c8;
const NAMESPACE_X500 = 6ba7b814-9dad-11d1-80b4-00c04fd430c8;
Encryption\Security\Uuid\Version1¶
-
Namespace
Phalcon\Encryption\Security\Uuid
-
Uses
-
Extends
AbstractUuid -
Implements
TimeBasedUuidInterface
Generates a version 1 (time-based) UUID.
The timestamp is the number of 100-nanosecond intervals since October 15, 1582 00:00:00.00 UTC (the UUID epoch). The node is resolved via SysNodeProvider (hardware MAC, APCu-cached) with RandomNodeProvider as fallback.
@link https://www.ietf.org/rfc/rfc4122.txt
Methods¶
Returns a DateTimeImmutable built from the UUID's embedded timestamp. Returns the 12-character hex node embedded in the UUID.Encryption\Security\Uuid\Version3¶
-
Namespace
Phalcon\Encryption\Security\Uuid
-
Uses
-
Extends
AbstractUuid -
Implements
Generates a version 3 (name-based MD5) UUID.
Given a namespace UUID and a name string, produces a deterministic UUID by hashing namespace bytes + name with MD5, then stamping version/variant.
@link https://www.ietf.org/rfc/rfc4122.txt
Methods¶
Encryption\Security\Uuid\Version4¶
-
Namespace
Phalcon\Encryption\Security\Uuid
-
Uses
-
Extends
AbstractUuid -
Implements
Generates a version 4 (random) UUID.
All 122 non-fixed bits are random. Identical algorithm to Phalcon\Encryption\Security\Random::uuid().
@link https://www.ietf.org/rfc/rfc4122.txt
Methods¶
Encryption\Security\Uuid\Version5¶
-
Namespace
Phalcon\Encryption\Security\Uuid
-
Uses
-
Extends
AbstractUuid -
Implements
Generates a version 5 (name-based SHA-1) UUID.
Given a namespace UUID and a name string, produces a deterministic UUID by hashing namespace bytes + name with SHA-1 (first 16 bytes used), then stamping version/variant bits.
@link https://www.ietf.org/rfc/rfc4122.txt
Methods¶
Encryption\Security\Uuid\Version6¶
-
Namespace
Phalcon\Encryption\Security\Uuid
-
Uses
-
Extends
AbstractUuid -
Implements
TimeBasedUuidInterface
Generates a version 6 (reordered time-based) UUID.
Uses the same 60-bit UUID timestamp as version 1 but rearranges the fields so the most-significant time bits come first, producing UUIDs that sort lexicographically in chronological order.
@link https://www.rfc-editor.org/rfc/rfc9562
Methods¶
Returns a DateTimeImmutable built from the UUID's embedded timestamp. Returns the 12-character hex node embedded in the UUID.Encryption\Security\Uuid\Version7¶
-
Namespace
Phalcon\Encryption\Security\Uuid
-
Uses
-
Extends
AbstractUuid -
Implements
Generates a version 7 (Unix timestamp) UUID per RFC 9562.
Layout (128 bits): unix_ts_ms (48) | ver=7 (4) | rand_a (12) | var=10 (2) | rand_b (62)
@link https://www.rfc-editor.org/rfc/rfc9562