public static function sign($msg, $key, $alg = 'HS256')
    {
        if (empty(self::$supported_algs[$alg])) {
            throw new DomainException('Algorithm not supported');
        }
        list($function, $algorithm) = self::$supported_algs[$alg];
        switch($function) {
            case 'hash_hmac':
                return hash_hmac($algorithm, $msg, $key, true);
            case 'openssl':
                $signature = '';
                $success = openssl_sign($msg, $signature, $key, $algorithm);
                if (!$success) {
                    throw new DomainException("OpenSSL unable to sign data");
                } else {
                    return $signature;
                }
        }
    }
public static function sign($msg, $key, $alg = 'HS256')
    {
        if (empty(self::$supported_algs[$alg])) {
            throw new DomainException('Algorithm not supported');
        }
        list($function, $algorithm) = self::$supported_algs[$alg];
        switch($function) {
            case 'hash_hmac':
                return hash_hmac($algorithm, $msg, $key, true);
            case 'openssl':
                $signature = '';
                $success = openssl_sign($msg, $signature, $key, $algorithm);
                if (!$success) {
                    throw new DomainException("OpenSSL unable to sign data");
                } else {
                    return $signature;
                }
        }
    }
public static function sign ( $ msg , $ key , $ alg = 'HS256' ) { if ( empty ( self :: $ supported_algs [ $ alg ] ) ) { throw new DomainException ( 'Algorithm not supported' ) ; } list ( $ function , $ algorithm ) = self :: $ supported_algs [ $ alg ] ; switch ( $ function ) { case 'hash_hmac' : return hash_hmac ( $ algorithm , $ msg , $ key , true ) ; case 'openssl' : $ signature = '' ; $ success = openssl_sign ( $ msg , $ signature , $ key , $ algorithm ) ; if ( ! $ success ) { throw new DomainException ( "OpenSSL unable to sign data" ) ; } else { return $ signature ; } } }
Sign a string with a given key and algorithm.

@param string            $msg    The message to sign
@param string|resource   $key    The secret key
@param string            $alg    The signing algorithm.
Supported algorithms are 'HS256', 'HS384', 'HS512' and 'RS256'

@return string An encrypted message

@throws DomainException Unsupported algorithm was specified
Sign a string with a given key and algorithm .