Add Symfony Deprecation Contracts package

- Created CHANGELOG.md to maintain version history.
- Added README.md with usage instructions for the trigger_deprecation() function.
- Initialized composer.json for the Symfony Deprecation Contracts library, specifying dependencies and autoloading.
This commit is contained in:
2025-12-15 08:43:18 +01:00
parent 0eedc919db
commit 778ee26fe4
643 changed files with 113899 additions and 109267 deletions

View File

@@ -1,208 +1,108 @@
<?php //ICB0 74:0 81:1520 82:2944 ?><?php //000ab
// Copyright prestashow.com 2025. All Rights Reserved.
// @authors prestashow.com <contact@prestashow.com>
// @license https://prestashow.com/license
return;
?>
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=
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=
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
<?php
namespace PShowSsoScoped\Lcobucci\JWT\Signer;
use InvalidArgumentException;
use function is_resource;
use function openssl_error_string;
use function openssl_free_key;
use function openssl_pkey_get_details;
use function openssl_pkey_get_private;
use function openssl_pkey_get_public;
use function openssl_sign;
use function openssl_verify;
abstract class OpenSSL extends BaseSigner
{
public function createHash($payload, Key $key)
{
$privateKey = $this->getPrivateKey($key->getContent(), $key->getPassphrase());
try {
$signature = '';
if (! openssl_sign($payload, $signature, $privateKey, $this->getAlgorithm())) {
throw CannotSignPayload::errorHappened(openssl_error_string());
}
return $signature;
} finally {
openssl_free_key($privateKey);
}
}
/**
* @param string $pem
* @param string $passphrase
*
* @return resource
*/
private function getPrivateKey($pem, $passphrase)
{
$privateKey = openssl_pkey_get_private($pem, $passphrase);
$this->validateKey($privateKey);
return $privateKey;
}
/**
* @param $expected
* @param $payload
* @param $key
* @return bool
*/
public function doVerify($expected, $payload, Key $key)
{
$publicKey = $this->getPublicKey($key->getContent());
$result = openssl_verify($payload, $expected, $publicKey, $this->getAlgorithm());
openssl_free_key($publicKey);
return $result === 1;
}
/**
* @param string $pem
*
* @return resource
*/
private function getPublicKey($pem)
{
$publicKey = openssl_pkey_get_public($pem);
$this->validateKey($publicKey);
return $publicKey;
}
/**
* Raises an exception when the key type is not the expected type
*
* @param resource|bool $key
*
* @throws InvalidArgumentException
*/
private function validateKey($key)
{
if (! is_resource($key)) {
throw InvalidKeyProvided::cannotBeParsed(openssl_error_string());
}
$details = openssl_pkey_get_details($key);
if (! isset($details['key']) || $details['type'] !== $this->getKeyType()) {
throw InvalidKeyProvided::incompatibleKey();
}
}
/**
* Returns the type of key to be used to create/verify the signature (using OpenSSL constants)
*
* @internal
*/
abstract public function getKeyType();
/**
* Returns which algorithm to be used to create/verify the signature (using OpenSSL constants)
*
* @internal
*/
abstract public function getAlgorithm();
}