Kickass Crypto

Find us on GitHub: https://github.com/jj5/kickass-crypto.

framework.php

2023-04-04 jj5 - these are the constants used by the library.

2023-04-04 jj5 - NOTE: these constants are constants and not configuration settings. If you need to override any of these, for instance to test the correct handling of error scenarios, pelase override the relevant get_const_*() accessor in the KickassCrypto class, don't edit these... please see the documentation in README.md for an explanation of these values.

Tags
link
https://github.com/jj5/kickass-crypto

Table of Contents

KICKASS_CRYPTO_DATA_ENCODING_JSON  = 'json'
2023-04-04 jj5 - the JSON format uses the PHP json_encode() and json_decode() functions; the encoding format strings must be four characters long.
KICKASS_CRYPTO_DATA_ENCODING_PHPS  = 'phps'
2023-04-04 jj5 - uses the PHP serialize() and unserialize() functions (not enabled by default due to potential security issues, enable with CONFIG_ENCRYPTION_PHPS_ENABLE); the encoding format strings must be four characters long.
KICKASS_CRYPTO_DATA_ENCODING_TEXT  = 'text'
2023-04-07 jj5 - encode as text.
KICKASS_CRYPTO_DATA_FORMAT_LENGTH_MAX  = 8
2023-04-05 jj5 - the data format indicator must meet this maximum character length.
KICKASS_CRYPTO_DATA_FORMAT_LENGTH_MIN  = 2
2023-04-05 jj5 - the data format indicator must meet this minimum character length.
KICKASS_CRYPTO_DATA_FORMAT_OPENSSL  = 'KA0'
2023-04-05 jj5 - the OpenSSL data format.
KICKASS_CRYPTO_DATA_FORMAT_SODIUM  = 'KAS0'
2023-04-05 jj5 - the Sodium data format.
KICKASS_CRYPTO_DEFAULT_CHUNK_SIZE  = \pow(2, 12)
2023-04-05 jj5 - this is the default chunk size; messages are padded up to the message length modulo the chunk size; 2^12 is 4KiB; this value might be changed in future.
KICKASS_CRYPTO_DEFAULT_CHUNK_SIZE_MAX  = \pow(2, 26)
2023-04-05 jj5 - this is the default maximum chunk size; 2^26 is 64 MiB; this value might be changed in future.
KICKASS_CRYPTO_DEFAULT_DATA_ENCODING  = \KICKASS_CRYPTO_DATA_ENCODING_JSON
2023-04-05 jj5 - default data encoding format is JSON.
KICKASS_CRYPTO_DEFAULT_DATA_LENGTH_MAX  = \pow(2, 26)
2023-04-05 jj5 - this is the maximum data length supported; 2^26 is 64 MiB; this value might be changed in future.
KICKASS_CRYPTO_DEFAULT_FALSE_ENABLE  = \false
2023-04-05 jj5 - by default you can't encrypt false.
KICKASS_CRYPTO_DEFAULT_JSON_DECODE_OPTIONS  = \JSON_THROW_ON_ERROR
2023-04-05 jj5 - these are the default JSON decoding options passed to the PHP json_decode() function.
KICKASS_CRYPTO_DEFAULT_JSON_ENCODE_OPTIONS  = \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE
2023-04-05 jj5 - these are the default JSON encoding options passed to the PHP json_encode() function.
KICKASS_CRYPTO_DEFAULT_PHPS_ENABLE  = \false
2023-04-05 jj5 - PHP serialization is disabled by default because it can lead to code execution vulnerabilities... (I don't have a source for this claim, that might be a rumor or not true any more).
KICKASS_CRYPTO_DELAY_NANOSECONDS_MAX  = 10000000000
2023-04-05 jj5 - the maximum random delay (in nanoseconds) used for timing attack mitigation; this value might be changed in future.
KICKASS_CRYPTO_DELAY_NANOSECONDS_MIN  = 1000000
2023-04-05 jj5 - the minimum random delay (in nanoseconds) used for timing attack mitigation; this value might be changed in future.
KICKASS_CRYPTO_DELAY_SECONDS_MIN  = 1.0 / (\KICKASS_CRYPTO_DELAY_NANOSECONDS_MIN / 1000)
2023-04-03 jj5 - this delay is a floating-point value in seconds, it's for comparison of the value returned from the PHP microtime() to check that our delay implementation did actually delay for at least this minimum amount of time.
KICKASS_CRYPTO_ERROR_BASE64_DECODING_FAILED  = 'base64 decoding failed.'
KICKASS_CRYPTO_ERROR_BASE64_DECODING_FAILED_2  = 'base64 decoding failed (2).'
KICKASS_CRYPTO_ERROR_BINARY_DATA_INVALID  = 'binary data invalid.'
KICKASS_CRYPTO_ERROR_BINARY_LENGTH_INVALID  = 'binary length invalid.'
KICKASS_CRYPTO_ERROR_CANNOT_ENCRYPT_FALSE  = 'cannot encrypt false.'
KICKASS_CRYPTO_ERROR_CHUNK_SIZE_INVALID  = 'chunk size invalid.'
KICKASS_CRYPTO_ERROR_CIPHERTEXT_INVALID  = 'ciphertext invalid.'
KICKASS_CRYPTO_ERROR_CIPHERTEXT_INVALID_2  = 'ciphertext invalid (2).'
KICKASS_CRYPTO_ERROR_DATA_DECODING_FAILED  = 'data decoding failed.'
KICKASS_CRYPTO_ERROR_DATA_DECODING_FAILED_2  = 'data decoding failed (2).'
KICKASS_CRYPTO_ERROR_DATA_DECODING_FAILED_3  = 'data decoding failed (3).'
KICKASS_CRYPTO_ERROR_DATA_DECODING_FAILED_4  = 'data decoding failed (4).'
KICKASS_CRYPTO_ERROR_DATA_ENCODING_FAILED  = 'data encoding failed.'
KICKASS_CRYPTO_ERROR_DATA_ENCODING_FAILED_2  = 'data encoding failed (2).'
KICKASS_CRYPTO_ERROR_DATA_ENCODING_FAILED_3  = 'data encoding failed (3).'
KICKASS_CRYPTO_ERROR_DATA_ENCODING_FAILED_4  = 'data encoding failed (4).'
KICKASS_CRYPTO_ERROR_DATA_ENCODING_INVALID  = 'data encoding invalid.'
KICKASS_CRYPTO_ERROR_DATA_ENCODING_INVALID_2  = 'data encoding invalid (2).'
KICKASS_CRYPTO_ERROR_DATA_ENCODING_INVALID_3  = 'data encoding invalid (3).'
KICKASS_CRYPTO_ERROR_DATA_ENCODING_TOO_LARGE  = 'data encoding too large.'
KICKASS_CRYPTO_ERROR_DECRYPTION_FAILED  = 'decryption failed.'
KICKASS_CRYPTO_ERROR_DECRYPTION_FAILED_2  = 'decryption failed (2).'
KICKASS_CRYPTO_ERROR_ENCRYPTION_FAILED  = 'encryption failed.'
KICKASS_CRYPTO_ERROR_ENCRYPTION_FAILED_2  = 'encryption failed (2).'
KICKASS_CRYPTO_ERROR_EXCEPTION_RAISED  = 'exception raised.'
KICKASS_CRYPTO_ERROR_EXCEPTION_RAISED_2  = 'exception raised (2).'
KICKASS_CRYPTO_ERROR_EXCEPTION_RAISED_3  = 'exception raised (3).'
KICKASS_CRYPTO_ERROR_EXCEPTION_RAISED_4  = 'exception raised (4).'
KICKASS_CRYPTO_ERROR_IV_LENGTH_INVALID  = 'IV length invalid.'
KICKASS_CRYPTO_ERROR_IV_LENGTH_INVALID_2  = 'IV length invalid (2).'
KICKASS_CRYPTO_ERROR_JSON_DECODING_FAILED  = 'JSON decoding failed.'
KICKASS_CRYPTO_ERROR_JSON_DECODING_FAILED_2  = 'JSON decoding failed (2).'
KICKASS_CRYPTO_ERROR_JSON_DECODING_FAILED_3  = 'JSON decoding failed (3).'
KICKASS_CRYPTO_ERROR_JSON_DECODING_FAILED_4  = 'JSON decoding failed (4).'
KICKASS_CRYPTO_ERROR_JSON_ENCODING_FAILED  = 'JSON encoding failed.'
KICKASS_CRYPTO_ERROR_JSON_ENCODING_FAILED_2  = 'JSON encoding failed (2).'
KICKASS_CRYPTO_ERROR_JSON_ENCODING_FAILED_3  = 'JSON encoding failed (3).'
KICKASS_CRYPTO_ERROR_JSON_ENCODING_FAILED_4  = 'JSON encoding failed (4).'
KICKASS_CRYPTO_ERROR_MESSAGE_DATA_LENGTH_RANGE_INVALID  = 'message data length range invalid.'
KICKASS_CRYPTO_ERROR_MESSAGE_DATA_LENGTH_SPEC_INVALID  = 'message data length spec invalid.'
KICKASS_CRYPTO_ERROR_MESSAGE_DECODING_FAILED  = 'message decoding failed.'
KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_FAILED  = 'message encoding failed.'
KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_FAILED_2  = 'message encoding failed (2).'
KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_FAILED_3  = 'message encoding failed (3).'
KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_FAILED_4  = 'message encoding failed (4).'
KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_INVALID  = 'message encoding invalid.'
KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_UNKNOWN  = 'message encoding unknown.'
KICKASS_CRYPTO_ERROR_MESSAGE_FORMAT_INVALID  = 'message format invalid.'
KICKASS_CRYPTO_ERROR_MESSAGE_LENGTH_INVALID  = 'message length invalid.'
KICKASS_CRYPTO_ERROR_NO_VALID_KEY  = 'no valid key.'
KICKASS_CRYPTO_ERROR_PASSPHRASE_INVALID  = 'passphrase invalid.'
KICKASS_CRYPTO_ERROR_PASSPHRASE_LENGTH_INVALID  = 'passphrase length invalid.'
KICKASS_CRYPTO_ERROR_PASSPHRASE_LENGTH_INVALID_2  = 'passphrase length invalid (2).'
KICKASS_CRYPTO_ERROR_PASSPHRASE_MISSING  = 'passphrase missing.'
KICKASS_CRYPTO_ERROR_PHPS_DECODING_FAILED  = 'PHPS decoding failed.'
KICKASS_CRYPTO_ERROR_PHPS_DECODING_FAILED_2  = 'PHPS decoding failed (2).'
KICKASS_CRYPTO_ERROR_PHPS_ENCODING_DISABLED  = 'PHPS encoding disabled.'
KICKASS_CRYPTO_ERROR_PHPS_ENCODING_DISABLED_2  = 'PHPS encoding disabled (2).'
KICKASS_CRYPTO_ERROR_PHPS_ENCODING_FAILED  = 'PHPS encoding failed.'
KICKASS_CRYPTO_ERROR_PHPS_ENCODING_FAILED_2  = 'PHPS encoding failed (2).'
KICKASS_CRYPTO_ERROR_PHPS_ENCODING_FAILED_3  = 'PHPS encoding failed (3).'
KICKASS_CRYPTO_ERROR_RESULT_INVALID  = 'result invalid.'
KICKASS_CRYPTO_ERROR_TAG_LENGTH_INVALID  = 'tag length invalid.'
KICKASS_CRYPTO_ERROR_TAG_LENGTH_INVALID_2  = 'tag length invalid (2).'
KICKASS_CRYPTO_ERROR_TEXT_DECODING_FAILED  = 'text decoding failed.'
KICKASS_CRYPTO_ERROR_TEXT_DECODING_FAILED_2  = 'text decoding failed (2).'
KICKASS_CRYPTO_ERROR_TEXT_DECODING_FAILED_3  = 'text decoding failed (3).'
KICKASS_CRYPTO_ERROR_TEXT_ENCODING_FAILED  = 'text encoding failed.'
KICKASS_CRYPTO_ERROR_TEXT_ENCODING_FAILED_2  = 'text encoding failed (2).'
KICKASS_CRYPTO_ERROR_TEXT_ENCODING_FAILED_3  = 'text encoding failed (3).'
KICKASS_CRYPTO_EXCEPTION_INSECURE_RANDOM  = 6000
2023-04-05 jj5 - if the PHP random_bytes() implementation is not using a secure PRNG then this exception is supposed to be raised.
KICKASS_CRYPTO_EXCEPTION_INVALID_CIPHER  = 4000
2023-04-05 jj5 - if the cipher nominated for the OpenSSL library is not available in the environment this exception is raise.
KICKASS_CRYPTO_EXCEPTION_INVALID_CONFIG  = 2000
2023-04-05 jj5 - this exception is raise if the config is invalid. Modules define what constitutes a valid config based on the use case.
KICKASS_CRYPTO_EXCEPTION_INVALID_ERROR_LIST  = 7000
2023-04-06 jj5 - if we can't get a valid error list from an implementation we bail with an exception.
KICKASS_CRYPTO_EXCEPTION_INVALID_EXCEPTION_CODE  = 1000
2023-04-05 jj5 - if an invalid exception code is passed to the exception raising facility this exception is raised instead.
KICKASS_CRYPTO_EXCEPTION_INVALID_IV_LENGTH  = 5000
2023-04-05 jj5 - if the initialization vector for the OpenSSL library is not what we've been coded to expect then this exception is raise.
KICKASS_CRYPTO_EXCEPTION_INVALID_KEY_HASH  = 3000
2023-04-05 jj5 - if the hash algorithm is invalid or not available this exception is raised.
KICKASS_CRYPTO_EXCEPTION_MESSAGE  = [\KICKASS_CRYPTO_EXCEPTION_INVALID_EXCEPTION_CODE => 'invalid exception code.', \KICKASS_CRYPTO_EXCEPTION_INVALID_CONFIG => 'invalid config.', \KICKASS_CRYPTO_EXCEPTION_INVALID_KEY_HASH => 'invalid key hash.', \KICKASS_CRYPTO_EXCEPTION_INVALID_CIPHER => 'invalid cipher.', \KICKASS_CRYPTO_EXCEPTION_INVALID_IV_LENGTH => 'invalid IV length.', \KICKASS_CRYPTO_EXCEPTION_INSECURE_RANDOM => 'insecure random.', \KICKASS_CRYPTO_EXCEPTION_INVALID_ERROR_LIST => 'invalid error list.', \KICKASS_CRYPTO_EXCEPTION_RECURSION_DETECTED => 'recursion detected.']
2023-03-30 jj5 - these are the exception messages for each exception code. These exception messages should be stable, you can add new ones but don't change existing ones.
KICKASS_CRYPTO_EXCEPTION_RECURSION_DETECTED  = 8000
2023-04-07 jj5 - called if recursion/reentrancy is detected.
KICKASS_CRYPTO_KEY_HASH  = 'sha512/256'
2023-04-05 jj5 - the key has is used to convert a secret key into a 32 byte (256-bit) passphrase for use with either the OpenSSL or Sodium encryption library.
KICKASS_CRYPTO_KEY_LENGTH_MIN  = 88
2023-04-05 jj5 - the minimum key length is used to ensure that secret keys meet at least a minimal requirement.
KICKASS_CRYPTO_LOG_ERROR_INVALID_PASSPHRASE  = 'error: invalid passphrase.'
KICKASS_CRYPTO_LOG_PREFIX_EMERGENCY_DELAY  = 'emergency delay: '
KICKASS_CRYPTO_LOG_PREFIX_EXCEPTION_HANDLE  = 'handled exception: '
KICKASS_CRYPTO_LOG_PREFIX_EXCEPTION_IGNORE  = 'ignored exception: '
KICKASS_CRYPTO_LOG_PREFIX_EXCEPTION_NOTIFY  = 'caught exception: '
KICKASS_CRYPTO_LOG_PREFIX_EXCEPTION_THROW  = 'throwing exception: '
KICKASS_CRYPTO_LOG_WARNING_DELAY  = 'warning: delayed due to error.'
KICKASS_CRYPTO_LOG_WARNING_SHORT_PASSPHRASE  = 'warning: passphrase shorter than recommended.'
KICKASS_CRYPTO_LOG_WARNING_SHORT_SECRET  = 'warning: secret shorter than recommended.'
KICKASS_CRYPTO_PASSPHRASE_LENGTH_MIN  = 32
2023-04-05 jj5 - the minimum key length is used to ensure that passphrases meet at least a minimal requirement.
KICKASS_CRYPTO_RECURSION_LIMIT  = 100
2023-04-07 jj5 - this is the limit of recursion that we allow... the Xdebug limit is 256 and PHP by itself has no limit (it will recurse until it runs out of memory); we pick a value less than the Xdebug limit so that we can handle things ourselves.
KICKASS_CRYPTO_REGEX_BASE64  = '/^[a-zA-Z0-9\\/+]{2,}={0,2}$/'
2023-04-05 jj5 - this is our Base64 validation regex; see the link for discussion concerning the previous regex and poor performance.

Constants

KICKASS_CRYPTO_DATA_ENCODING_JSON

2023-04-04 jj5 - the JSON format uses the PHP json_encode() and json_decode() functions; the encoding format strings must be four characters long.

public string KICKASS_CRYPTO_DATA_ENCODING_JSON = 'json'

KICKASS_CRYPTO_DATA_ENCODING_PHPS

2023-04-04 jj5 - uses the PHP serialize() and unserialize() functions (not enabled by default due to potential security issues, enable with CONFIG_ENCRYPTION_PHPS_ENABLE); the encoding format strings must be four characters long.

public string KICKASS_CRYPTO_DATA_ENCODING_PHPS = 'phps'

KICKASS_CRYPTO_DATA_ENCODING_TEXT

2023-04-07 jj5 - encode as text.

public string KICKASS_CRYPTO_DATA_ENCODING_TEXT = 'text'

KICKASS_CRYPTO_DATA_FORMAT_LENGTH_MAX

2023-04-05 jj5 - the data format indicator must meet this maximum character length.

public int KICKASS_CRYPTO_DATA_FORMAT_LENGTH_MAX = 8

..

KICKASS_CRYPTO_DATA_FORMAT_LENGTH_MIN

2023-04-05 jj5 - the data format indicator must meet this minimum character length.

public int KICKASS_CRYPTO_DATA_FORMAT_LENGTH_MIN = 2

..

KICKASS_CRYPTO_DATA_FORMAT_OPENSSL

2023-04-05 jj5 - the OpenSSL data format.

public string KICKASS_CRYPTO_DATA_FORMAT_OPENSSL = 'KA0'

..

KICKASS_CRYPTO_DATA_FORMAT_SODIUM

2023-04-05 jj5 - the Sodium data format.

public string KICKASS_CRYPTO_DATA_FORMAT_SODIUM = 'KAS0'

..

KICKASS_CRYPTO_DEFAULT_CHUNK_SIZE

2023-04-05 jj5 - this is the default chunk size; messages are padded up to the message length modulo the chunk size; 2^12 is 4KiB; this value might be changed in future.

public int KICKASS_CRYPTO_DEFAULT_CHUNK_SIZE = \pow(2, 12)

KICKASS_CRYPTO_DEFAULT_CHUNK_SIZE_MAX

2023-04-05 jj5 - this is the default maximum chunk size; 2^26 is 64 MiB; this value might be changed in future.

public int KICKASS_CRYPTO_DEFAULT_CHUNK_SIZE_MAX = \pow(2, 26)

KICKASS_CRYPTO_DEFAULT_DATA_ENCODING

2023-04-05 jj5 - default data encoding format is JSON.

public string KICKASS_CRYPTO_DEFAULT_DATA_ENCODING = \KICKASS_CRYPTO_DATA_ENCODING_JSON

KICKASS_CRYPTO_DEFAULT_DATA_LENGTH_MAX

2023-04-05 jj5 - this is the maximum data length supported; 2^26 is 64 MiB; this value might be changed in future.

public int KICKASS_CRYPTO_DEFAULT_DATA_LENGTH_MAX = \pow(2, 26)

KICKASS_CRYPTO_DEFAULT_FALSE_ENABLE

2023-04-05 jj5 - by default you can't encrypt false.

public bool KICKASS_CRYPTO_DEFAULT_FALSE_ENABLE = \false

..

KICKASS_CRYPTO_DEFAULT_JSON_DECODE_OPTIONS

2023-04-05 jj5 - these are the default JSON decoding options passed to the PHP json_decode() function.

public int KICKASS_CRYPTO_DEFAULT_JSON_DECODE_OPTIONS = \JSON_THROW_ON_ERROR

KICKASS_CRYPTO_DEFAULT_JSON_ENCODE_OPTIONS

2023-04-05 jj5 - these are the default JSON encoding options passed to the PHP json_encode() function.

public int KICKASS_CRYPTO_DEFAULT_JSON_ENCODE_OPTIONS = \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE

KICKASS_CRYPTO_DEFAULT_PHPS_ENABLE

2023-04-05 jj5 - PHP serialization is disabled by default because it can lead to code execution vulnerabilities... (I don't have a source for this claim, that might be a rumor or not true any more).

public bool KICKASS_CRYPTO_DEFAULT_PHPS_ENABLE = \false

2023-04-05 jj5 - also note that you would only deserialize data which was successfully encrypted, so that would presumably make it harder for an attacker to inject code via PHP serialization format.

2023-04-05 jj5 - if you want to enable PHP serialization you will need these two defines in your config file:

define( 'CONFIG_ENCRYPTION_PHPS_ENABLE', true );

define( 'CONFIG_ENCRYPTION_DATA_ENCODING', KICKASS_CRYPTO_DATA_ENCODING_PHPS );

KICKASS_CRYPTO_DELAY_NANOSECONDS_MAX

2023-04-05 jj5 - the maximum random delay (in nanoseconds) used for timing attack mitigation; this value might be changed in future.

public int KICKASS_CRYPTO_DELAY_NANOSECONDS_MAX = 10000000000

KICKASS_CRYPTO_DELAY_NANOSECONDS_MIN

2023-04-05 jj5 - the minimum random delay (in nanoseconds) used for timing attack mitigation; this value might be changed in future.

public int KICKASS_CRYPTO_DELAY_NANOSECONDS_MIN = 1000000

KICKASS_CRYPTO_DELAY_SECONDS_MIN

2023-04-03 jj5 - this delay is a floating-point value in seconds, it's for comparison of the value returned from the PHP microtime() to check that our delay implementation did actually delay for at least this minimum amount of time.

public float KICKASS_CRYPTO_DELAY_SECONDS_MIN = 1.0 / (\KICKASS_CRYPTO_DELAY_NANOSECONDS_MIN / 1000)

KICKASS_CRYPTO_ERROR_BASE64_DECODING_FAILED

public string KICKASS_CRYPTO_ERROR_BASE64_DECODING_FAILED = 'base64 decoding failed.'

KICKASS_CRYPTO_ERROR_BASE64_DECODING_FAILED_2

public string KICKASS_CRYPTO_ERROR_BASE64_DECODING_FAILED_2 = 'base64 decoding failed (2).'

KICKASS_CRYPTO_ERROR_BINARY_DATA_INVALID

public string KICKASS_CRYPTO_ERROR_BINARY_DATA_INVALID = 'binary data invalid.'

KICKASS_CRYPTO_ERROR_BINARY_LENGTH_INVALID

public string KICKASS_CRYPTO_ERROR_BINARY_LENGTH_INVALID = 'binary length invalid.'

KICKASS_CRYPTO_ERROR_CANNOT_ENCRYPT_FALSE

public string KICKASS_CRYPTO_ERROR_CANNOT_ENCRYPT_FALSE = 'cannot encrypt false.'

KICKASS_CRYPTO_ERROR_CHUNK_SIZE_INVALID

public string KICKASS_CRYPTO_ERROR_CHUNK_SIZE_INVALID = 'chunk size invalid.'

KICKASS_CRYPTO_ERROR_CIPHERTEXT_INVALID

public string KICKASS_CRYPTO_ERROR_CIPHERTEXT_INVALID = 'ciphertext invalid.'

KICKASS_CRYPTO_ERROR_CIPHERTEXT_INVALID_2

public string KICKASS_CRYPTO_ERROR_CIPHERTEXT_INVALID_2 = 'ciphertext invalid (2).'

KICKASS_CRYPTO_ERROR_DATA_DECODING_FAILED

public string KICKASS_CRYPTO_ERROR_DATA_DECODING_FAILED = 'data decoding failed.'

KICKASS_CRYPTO_ERROR_DATA_DECODING_FAILED_2

public string KICKASS_CRYPTO_ERROR_DATA_DECODING_FAILED_2 = 'data decoding failed (2).'

KICKASS_CRYPTO_ERROR_DATA_DECODING_FAILED_3

public string KICKASS_CRYPTO_ERROR_DATA_DECODING_FAILED_3 = 'data decoding failed (3).'

KICKASS_CRYPTO_ERROR_DATA_DECODING_FAILED_4

public string KICKASS_CRYPTO_ERROR_DATA_DECODING_FAILED_4 = 'data decoding failed (4).'

KICKASS_CRYPTO_ERROR_DATA_ENCODING_FAILED

public string KICKASS_CRYPTO_ERROR_DATA_ENCODING_FAILED = 'data encoding failed.'

KICKASS_CRYPTO_ERROR_DATA_ENCODING_FAILED_2

public string KICKASS_CRYPTO_ERROR_DATA_ENCODING_FAILED_2 = 'data encoding failed (2).'

KICKASS_CRYPTO_ERROR_DATA_ENCODING_FAILED_3

public string KICKASS_CRYPTO_ERROR_DATA_ENCODING_FAILED_3 = 'data encoding failed (3).'

KICKASS_CRYPTO_ERROR_DATA_ENCODING_FAILED_4

public string KICKASS_CRYPTO_ERROR_DATA_ENCODING_FAILED_4 = 'data encoding failed (4).'

KICKASS_CRYPTO_ERROR_DATA_ENCODING_INVALID

public string KICKASS_CRYPTO_ERROR_DATA_ENCODING_INVALID = 'data encoding invalid.'

KICKASS_CRYPTO_ERROR_DATA_ENCODING_INVALID_2

public string KICKASS_CRYPTO_ERROR_DATA_ENCODING_INVALID_2 = 'data encoding invalid (2).'

KICKASS_CRYPTO_ERROR_DATA_ENCODING_INVALID_3

public string KICKASS_CRYPTO_ERROR_DATA_ENCODING_INVALID_3 = 'data encoding invalid (3).'

KICKASS_CRYPTO_ERROR_DATA_ENCODING_TOO_LARGE

public string KICKASS_CRYPTO_ERROR_DATA_ENCODING_TOO_LARGE = 'data encoding too large.'

KICKASS_CRYPTO_ERROR_DECRYPTION_FAILED

public string KICKASS_CRYPTO_ERROR_DECRYPTION_FAILED = 'decryption failed.'

KICKASS_CRYPTO_ERROR_DECRYPTION_FAILED_2

public string KICKASS_CRYPTO_ERROR_DECRYPTION_FAILED_2 = 'decryption failed (2).'

KICKASS_CRYPTO_ERROR_ENCRYPTION_FAILED

public string KICKASS_CRYPTO_ERROR_ENCRYPTION_FAILED = 'encryption failed.'

KICKASS_CRYPTO_ERROR_ENCRYPTION_FAILED_2

public string KICKASS_CRYPTO_ERROR_ENCRYPTION_FAILED_2 = 'encryption failed (2).'

KICKASS_CRYPTO_ERROR_EXCEPTION_RAISED

public string KICKASS_CRYPTO_ERROR_EXCEPTION_RAISED = 'exception raised.'

KICKASS_CRYPTO_ERROR_EXCEPTION_RAISED_2

public string KICKASS_CRYPTO_ERROR_EXCEPTION_RAISED_2 = 'exception raised (2).'

KICKASS_CRYPTO_ERROR_EXCEPTION_RAISED_3

public string KICKASS_CRYPTO_ERROR_EXCEPTION_RAISED_3 = 'exception raised (3).'

KICKASS_CRYPTO_ERROR_EXCEPTION_RAISED_4

public string KICKASS_CRYPTO_ERROR_EXCEPTION_RAISED_4 = 'exception raised (4).'

KICKASS_CRYPTO_ERROR_IV_LENGTH_INVALID

public string KICKASS_CRYPTO_ERROR_IV_LENGTH_INVALID = 'IV length invalid.'

KICKASS_CRYPTO_ERROR_IV_LENGTH_INVALID_2

public string KICKASS_CRYPTO_ERROR_IV_LENGTH_INVALID_2 = 'IV length invalid (2).'

KICKASS_CRYPTO_ERROR_JSON_DECODING_FAILED

public string KICKASS_CRYPTO_ERROR_JSON_DECODING_FAILED = 'JSON decoding failed.'

KICKASS_CRYPTO_ERROR_JSON_DECODING_FAILED_2

public string KICKASS_CRYPTO_ERROR_JSON_DECODING_FAILED_2 = 'JSON decoding failed (2).'

KICKASS_CRYPTO_ERROR_JSON_DECODING_FAILED_3

public string KICKASS_CRYPTO_ERROR_JSON_DECODING_FAILED_3 = 'JSON decoding failed (3).'

KICKASS_CRYPTO_ERROR_JSON_DECODING_FAILED_4

public string KICKASS_CRYPTO_ERROR_JSON_DECODING_FAILED_4 = 'JSON decoding failed (4).'

KICKASS_CRYPTO_ERROR_JSON_ENCODING_FAILED

public string KICKASS_CRYPTO_ERROR_JSON_ENCODING_FAILED = 'JSON encoding failed.'

KICKASS_CRYPTO_ERROR_JSON_ENCODING_FAILED_2

public string KICKASS_CRYPTO_ERROR_JSON_ENCODING_FAILED_2 = 'JSON encoding failed (2).'

KICKASS_CRYPTO_ERROR_JSON_ENCODING_FAILED_3

public string KICKASS_CRYPTO_ERROR_JSON_ENCODING_FAILED_3 = 'JSON encoding failed (3).'

KICKASS_CRYPTO_ERROR_JSON_ENCODING_FAILED_4

public string KICKASS_CRYPTO_ERROR_JSON_ENCODING_FAILED_4 = 'JSON encoding failed (4).'

KICKASS_CRYPTO_ERROR_MESSAGE_DATA_LENGTH_RANGE_INVALID

public string KICKASS_CRYPTO_ERROR_MESSAGE_DATA_LENGTH_RANGE_INVALID = 'message data length range invalid.'

KICKASS_CRYPTO_ERROR_MESSAGE_DATA_LENGTH_SPEC_INVALID

public string KICKASS_CRYPTO_ERROR_MESSAGE_DATA_LENGTH_SPEC_INVALID = 'message data length spec invalid.'

KICKASS_CRYPTO_ERROR_MESSAGE_DECODING_FAILED

public string KICKASS_CRYPTO_ERROR_MESSAGE_DECODING_FAILED = 'message decoding failed.'

KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_FAILED

public string KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_FAILED = 'message encoding failed.'

KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_FAILED_2

public string KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_FAILED_2 = 'message encoding failed (2).'

KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_FAILED_3

public string KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_FAILED_3 = 'message encoding failed (3).'

KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_FAILED_4

public string KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_FAILED_4 = 'message encoding failed (4).'

KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_INVALID

public string KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_INVALID = 'message encoding invalid.'

KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_UNKNOWN

public string KICKASS_CRYPTO_ERROR_MESSAGE_ENCODING_UNKNOWN = 'message encoding unknown.'

KICKASS_CRYPTO_ERROR_MESSAGE_FORMAT_INVALID

public string KICKASS_CRYPTO_ERROR_MESSAGE_FORMAT_INVALID = 'message format invalid.'

KICKASS_CRYPTO_ERROR_MESSAGE_LENGTH_INVALID

public string KICKASS_CRYPTO_ERROR_MESSAGE_LENGTH_INVALID = 'message length invalid.'

KICKASS_CRYPTO_ERROR_NO_VALID_KEY

public string KICKASS_CRYPTO_ERROR_NO_VALID_KEY = 'no valid key.'

KICKASS_CRYPTO_ERROR_PASSPHRASE_INVALID

public string KICKASS_CRYPTO_ERROR_PASSPHRASE_INVALID = 'passphrase invalid.'

KICKASS_CRYPTO_ERROR_PASSPHRASE_LENGTH_INVALID

public string KICKASS_CRYPTO_ERROR_PASSPHRASE_LENGTH_INVALID = 'passphrase length invalid.'

KICKASS_CRYPTO_ERROR_PASSPHRASE_LENGTH_INVALID_2

public string KICKASS_CRYPTO_ERROR_PASSPHRASE_LENGTH_INVALID_2 = 'passphrase length invalid (2).'

KICKASS_CRYPTO_ERROR_PASSPHRASE_MISSING

public string KICKASS_CRYPTO_ERROR_PASSPHRASE_MISSING = 'passphrase missing.'

KICKASS_CRYPTO_ERROR_PHPS_DECODING_FAILED

public string KICKASS_CRYPTO_ERROR_PHPS_DECODING_FAILED = 'PHPS decoding failed.'

KICKASS_CRYPTO_ERROR_PHPS_DECODING_FAILED_2

public string KICKASS_CRYPTO_ERROR_PHPS_DECODING_FAILED_2 = 'PHPS decoding failed (2).'

KICKASS_CRYPTO_ERROR_PHPS_ENCODING_DISABLED

public string KICKASS_CRYPTO_ERROR_PHPS_ENCODING_DISABLED = 'PHPS encoding disabled.'

KICKASS_CRYPTO_ERROR_PHPS_ENCODING_DISABLED_2

public string KICKASS_CRYPTO_ERROR_PHPS_ENCODING_DISABLED_2 = 'PHPS encoding disabled (2).'

KICKASS_CRYPTO_ERROR_PHPS_ENCODING_FAILED

public string KICKASS_CRYPTO_ERROR_PHPS_ENCODING_FAILED = 'PHPS encoding failed.'

KICKASS_CRYPTO_ERROR_PHPS_ENCODING_FAILED_2

public string KICKASS_CRYPTO_ERROR_PHPS_ENCODING_FAILED_2 = 'PHPS encoding failed (2).'

KICKASS_CRYPTO_ERROR_PHPS_ENCODING_FAILED_3

public string KICKASS_CRYPTO_ERROR_PHPS_ENCODING_FAILED_3 = 'PHPS encoding failed (3).'

KICKASS_CRYPTO_ERROR_RESULT_INVALID

public string KICKASS_CRYPTO_ERROR_RESULT_INVALID = 'result invalid.'

KICKASS_CRYPTO_ERROR_TAG_LENGTH_INVALID

public string KICKASS_CRYPTO_ERROR_TAG_LENGTH_INVALID = 'tag length invalid.'

KICKASS_CRYPTO_ERROR_TAG_LENGTH_INVALID_2

public string KICKASS_CRYPTO_ERROR_TAG_LENGTH_INVALID_2 = 'tag length invalid (2).'

KICKASS_CRYPTO_ERROR_TEXT_DECODING_FAILED

public string KICKASS_CRYPTO_ERROR_TEXT_DECODING_FAILED = 'text decoding failed.'

KICKASS_CRYPTO_ERROR_TEXT_DECODING_FAILED_2

public string KICKASS_CRYPTO_ERROR_TEXT_DECODING_FAILED_2 = 'text decoding failed (2).'

KICKASS_CRYPTO_ERROR_TEXT_DECODING_FAILED_3

public string KICKASS_CRYPTO_ERROR_TEXT_DECODING_FAILED_3 = 'text decoding failed (3).'

KICKASS_CRYPTO_ERROR_TEXT_ENCODING_FAILED

public string KICKASS_CRYPTO_ERROR_TEXT_ENCODING_FAILED = 'text encoding failed.'

KICKASS_CRYPTO_ERROR_TEXT_ENCODING_FAILED_2

public string KICKASS_CRYPTO_ERROR_TEXT_ENCODING_FAILED_2 = 'text encoding failed (2).'

KICKASS_CRYPTO_ERROR_TEXT_ENCODING_FAILED_3

public string KICKASS_CRYPTO_ERROR_TEXT_ENCODING_FAILED_3 = 'text encoding failed (3).'

KICKASS_CRYPTO_EXCEPTION_INSECURE_RANDOM

2023-04-05 jj5 - if the PHP random_bytes() implementation is not using a secure PRNG then this exception is supposed to be raised.

public int KICKASS_CRYPTO_EXCEPTION_INSECURE_RANDOM = 6000

KICKASS_CRYPTO_EXCEPTION_INVALID_CIPHER

2023-04-05 jj5 - if the cipher nominated for the OpenSSL library is not available in the environment this exception is raise.

public int KICKASS_CRYPTO_EXCEPTION_INVALID_CIPHER = 4000

KICKASS_CRYPTO_EXCEPTION_INVALID_CONFIG

2023-04-05 jj5 - this exception is raise if the config is invalid. Modules define what constitutes a valid config based on the use case.

public int KICKASS_CRYPTO_EXCEPTION_INVALID_CONFIG = 2000

2023-04-05 jj5 - possible combinations of encryption module and use case are:

  • Sodium round-trip
  • Sodium at-rest
  • OpenSSL round-trip
  • OpenSSL at-rest

KICKASS_CRYPTO_EXCEPTION_INVALID_ERROR_LIST

2023-04-06 jj5 - if we can't get a valid error list from an implementation we bail with an exception.

public int KICKASS_CRYPTO_EXCEPTION_INVALID_ERROR_LIST = 7000

KICKASS_CRYPTO_EXCEPTION_INVALID_EXCEPTION_CODE

2023-04-05 jj5 - if an invalid exception code is passed to the exception raising facility this exception is raised instead.

public int KICKASS_CRYPTO_EXCEPTION_INVALID_EXCEPTION_CODE = 1000

KICKASS_CRYPTO_EXCEPTION_INVALID_IV_LENGTH

2023-04-05 jj5 - if the initialization vector for the OpenSSL library is not what we've been coded to expect then this exception is raise.

public int KICKASS_CRYPTO_EXCEPTION_INVALID_IV_LENGTH = 5000

KICKASS_CRYPTO_EXCEPTION_INVALID_KEY_HASH

2023-04-05 jj5 - if the hash algorithm is invalid or not available this exception is raised.

public int KICKASS_CRYPTO_EXCEPTION_INVALID_KEY_HASH = 3000

KICKASS_CRYPTO_EXCEPTION_MESSAGE

2023-03-30 jj5 - these are the exception messages for each exception code. These exception messages should be stable, you can add new ones but don't change existing ones.

public array<int, string> KICKASS_CRYPTO_EXCEPTION_MESSAGE = [\KICKASS_CRYPTO_EXCEPTION_INVALID_EXCEPTION_CODE => 'invalid exception code.', \KICKASS_CRYPTO_EXCEPTION_INVALID_CONFIG => 'invalid config.', \KICKASS_CRYPTO_EXCEPTION_INVALID_KEY_HASH => 'invalid key hash.', \KICKASS_CRYPTO_EXCEPTION_INVALID_CIPHER => 'invalid cipher.', \KICKASS_CRYPTO_EXCEPTION_INVALID_IV_LENGTH => 'invalid IV length.', \KICKASS_CRYPTO_EXCEPTION_INSECURE_RANDOM => 'insecure random.', \KICKASS_CRYPTO_EXCEPTION_INVALID_ERROR_LIST => 'invalid error list.', \KICKASS_CRYPTO_EXCEPTION_RECURSION_DETECTED => 'recursion detected.']

KICKASS_CRYPTO_EXCEPTION_RECURSION_DETECTED

2023-04-07 jj5 - called if recursion/reentrancy is detected.

public int KICKASS_CRYPTO_EXCEPTION_RECURSION_DETECTED = 8000

KICKASS_CRYPTO_KEY_HASH

2023-04-05 jj5 - the key has is used to convert a secret key into a 32 byte (256-bit) passphrase for use with either the OpenSSL or Sodium encryption library.

public string KICKASS_CRYPTO_KEY_HASH = 'sha512/256'

KICKASS_CRYPTO_KEY_LENGTH_MIN

2023-04-05 jj5 - the minimum key length is used to ensure that secret keys meet at least a minimal requirement.

public int KICKASS_CRYPTO_KEY_LENGTH_MIN = 88

KICKASS_CRYPTO_LOG_ERROR_INVALID_PASSPHRASE

public string KICKASS_CRYPTO_LOG_ERROR_INVALID_PASSPHRASE = 'error: invalid passphrase.'

KICKASS_CRYPTO_LOG_PREFIX_EMERGENCY_DELAY

public string KICKASS_CRYPTO_LOG_PREFIX_EMERGENCY_DELAY = 'emergency delay: '

KICKASS_CRYPTO_LOG_PREFIX_EXCEPTION_HANDLE

public string KICKASS_CRYPTO_LOG_PREFIX_EXCEPTION_HANDLE = 'handled exception: '

KICKASS_CRYPTO_LOG_PREFIX_EXCEPTION_IGNORE

public string KICKASS_CRYPTO_LOG_PREFIX_EXCEPTION_IGNORE = 'ignored exception: '

KICKASS_CRYPTO_LOG_PREFIX_EXCEPTION_NOTIFY

public string KICKASS_CRYPTO_LOG_PREFIX_EXCEPTION_NOTIFY = 'caught exception: '

KICKASS_CRYPTO_LOG_PREFIX_EXCEPTION_THROW

public string KICKASS_CRYPTO_LOG_PREFIX_EXCEPTION_THROW = 'throwing exception: '

KICKASS_CRYPTO_LOG_WARNING_DELAY

public string KICKASS_CRYPTO_LOG_WARNING_DELAY = 'warning: delayed due to error.'

KICKASS_CRYPTO_LOG_WARNING_SHORT_PASSPHRASE

public string KICKASS_CRYPTO_LOG_WARNING_SHORT_PASSPHRASE = 'warning: passphrase shorter than recommended.'

KICKASS_CRYPTO_LOG_WARNING_SHORT_SECRET

public string KICKASS_CRYPTO_LOG_WARNING_SHORT_SECRET = 'warning: secret shorter than recommended.'

KICKASS_CRYPTO_PASSPHRASE_LENGTH_MIN

2023-04-05 jj5 - the minimum key length is used to ensure that passphrases meet at least a minimal requirement.

public int KICKASS_CRYPTO_PASSPHRASE_LENGTH_MIN = 32

KICKASS_CRYPTO_RECURSION_LIMIT

2023-04-07 jj5 - this is the limit of recursion that we allow... the Xdebug limit is 256 and PHP by itself has no limit (it will recurse until it runs out of memory); we pick a value less than the Xdebug limit so that we can handle things ourselves.

public int KICKASS_CRYPTO_RECURSION_LIMIT = 100

Search results