Files
baseProject/vendor/tecnickcom/tc-lib-pdf-sign/src/DigestAlgorithm.php
T

65 lines
1.9 KiB
PHP

<?php
declare(strict_types=1);
/**
* DigestAlgorithm.php
*
* @since 2026-07-17
* @category Library
* @package PdfSign
* @author Nicola Asuni <info@tecnick.com>
* @copyright 2026 Nicola Asuni - Tecnick.com LTD
* @license https://www.gnu.org/copyleft/lesser.html GNU-LGPL v3 (see LICENSE)
* @link https://github.com/tecnickcom/tc-lib-pdf-sign
*
* This file is part of tc-lib-pdf-sign software library.
*/
namespace Com\Tecnick\Pdf\Sign;
/**
* Com\Tecnick\Pdf\Sign\DigestAlgorithm
*
* Backed enum for the supported message-digest algorithms. Unifies the two
* previously identical closed sets: Config::DIGEST_ALGORITHMS (CMS builder) and
* Timestamp\Config::HASH_ALGORITHMS (RFC 3161 message imprint). The backing
* value is the lowercase algorithm name accepted by both.
*
* @since 2026-07-17
* @category Library
* @package PdfSign
* @author Nicola Asuni <info@tecnick.com>
* @copyright 2026 Nicola Asuni - Tecnick.com LTD
* @license https://www.gnu.org/copyleft/lesser.html GNU-LGPL v3 (see LICENSE)
* @link https://github.com/tecnickcom/tc-lib-pdf-sign
*/
enum DigestAlgorithm: string
{
case Sha256 = 'sha256';
case Sha384 = 'sha384';
case Sha512 = 'sha512';
/**
* Resolve a loose digest algorithm value to the matching enum case.
*
* Accepts the canonical algorithm string (as validated by Config and
* Timestamp\Config) or an enum instance (returned unchanged). Unknown values
* throw, matching the closed set enforced by both configs.
*
* @param string|self $value Digest algorithm name or enum case.
*
* @throws Exception if the value does not match a known digest algorithm.
*/
public static function fromLoose(string|self $value): self
{
if ($value instanceof self) {
return $value;
}
return self::tryFrom($value) ?? throw new Exception('Invalid digest algorithm: ' . $value);
}
}