* @license http://opensource.org/licenses/MIT MIT */ declare (strict_types=1); namespace Dudlewebs\WPMCS\GCP\Ramsey\Uuid\Generator; use Dudlewebs\WPMCS\GCP\Ramsey\Uuid\Exception\NameException; use Dudlewebs\WPMCS\GCP\Ramsey\Uuid\UuidInterface; use ValueError; use function hash; /** * DefaultNameGenerator generates strings of binary data based on a namespace, name, and hashing algorithm */ class DefaultNameGenerator implements NameGeneratorInterface { /** * @pure */ public function generate(UuidInterface $ns, string $name, string $hashAlgorithm) : string { try { return hash($hashAlgorithm, $ns->getBytes() . $name, \true); } catch (ValueError $e) { throw new NameException(message: \sprintf('Unable to hash namespace and name with algorithm \'%s\'', $hashAlgorithm), previous: $e); } } }