remove throw, catching exceptions in place

This commit is contained in:
tracer 2022-09-29 19:22:33 +02:00
parent 0268262e98
commit 19576dd6b7
1 changed files with 34 additions and 30 deletions

View File

@ -15,19 +15,21 @@ class EncryptionController
* @param string $message - message to encrypt * @param string $message - message to encrypt
* @param string $key - encryption key * @param string $key - encryption key
* @return string * @return string
* @throws SodiumException
* @throws Exception
*/ */
function safeEncrypt(string $message, string $key): string function safeEncrypt(string $message, string $key): string
{ {
$binKey = sodium_hex2bin(string: $key); try {
$nonce = random_bytes(length: SODIUM_CRYPTO_SECRETBOX_NONCEBYTES); $binKey = sodium_hex2bin(string: $key);
$nonce = random_bytes(length: SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$cipher = base64_encode(string: $nonce . sodium_crypto_secretbox(message: $message, nonce: $nonce, key: $binKey)); $cipher = base64_encode(string: $nonce . sodium_crypto_secretbox(message: $message, nonce: $nonce, key: $binKey));
sodium_memzero(string: $message); sodium_memzero(string: $message);
sodium_memzero(string: $key); sodium_memzero(string: $key);
sodium_memzero(string: $binKey); sodium_memzero(string: $binKey);
return $cipher; return $cipher;
} catch (Exception|SodiumException $e) {
die($e->getMessage() . PHP_EOL);
}
} }
/** /**
@ -36,32 +38,34 @@ class EncryptionController
* @param string $encrypted - message encrypted with safeEncrypt() * @param string $encrypted - message encrypted with safeEncrypt()
* @param string $key - encryption key * @param string $key - encryption key
* @return string * @return string
* @throws SodiumException
* @throws Exception
*/ */
function safeDecrypt(string $encrypted, string $key): string function safeDecrypt(string $encrypted, string $key): string
{ {
$binKey = sodium_hex2bin(string: $key); try {
$binKey = sodium_hex2bin(string: $key);
$decoded = base64_decode(string: $encrypted); $decoded = base64_decode(string: $encrypted);
if ($decoded === false) { if ($decoded === false) {
throw new Exception(message: 'Decoding broken. Wrong payload.'); throw new Exception(message: 'Decoding broken. Wrong payload.');
}
if (mb_strlen(string: $decoded, encoding: '8bit') < (SODIUM_CRYPTO_SECRETBOX_NONCEBYTES + SODIUM_CRYPTO_SECRETBOX_MACBYTES)) {
throw new Exception(message: 'Decoding broken. Incomplete message.');
}
$nonce = mb_substr(string: $decoded, start: 0, length: SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, encoding: '8bit');
$ciphertext = mb_substr(string: $decoded, start: SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, length: null, encoding: '8bit');
$plain = sodium_crypto_secretbox_open(ciphertext: $ciphertext, nonce: $nonce, key: $binKey);
if ($plain === false) {
throw new Exception(message: ' Incorrect key.');
}
sodium_memzero(string: $ciphertext);
sodium_memzero(string: $key);
return $plain;
} catch(Exception|SodiumException $e) {
die($e->getMessage());
} }
if (mb_strlen(string: $decoded, encoding: '8bit') < (SODIUM_CRYPTO_SECRETBOX_NONCEBYTES + SODIUM_CRYPTO_SECRETBOX_MACBYTES)) {
throw new Exception(message: 'Decoding broken. Incomplete message.');
}
$nonce = mb_substr(string: $decoded, start: 0, length: SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, encoding: '8bit');
$ciphertext = mb_substr(string: $decoded, start: SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, length: null, encoding: '8bit');
$plain = sodium_crypto_secretbox_open(ciphertext: $ciphertext, nonce: $nonce, key: $binKey);
if ($plain === false) {
throw new Exception(message: ' Incorrect key.');
}
sodium_memzero(string: $ciphertext);
sodium_memzero(string: $key);
return $plain;
} }
} }