<?php

namespace App\Util\HttpSignatures;

abstract class Algorithm
{
    /**
     * @param string $name
     *
     * @return HmacAlgorithm
     *
     * @throws Exception
     */
    public static function create($name)
    {
        switch ($name) {
        case 'hmac-sha1':
            return new HmacAlgorithm('sha1');
            break;
        case 'hmac-sha256':
            return new HmacAlgorithm('sha256');
            break;
        case 'rsa-sha1':
            return new RsaAlgorithm('sha1');
            break;
        case 'rsa-sha256':
            return new RsaAlgorithm('sha256');
            break;
        default:
            throw new AlgorithmException("No algorithm named '$name'");
            break;
        }
    }
}