<?php 
namespace Aws\Signature; 
 
use Aws\Credentials\CredentialsInterface; 
use Psr\Http\Message\RequestInterface; 
 
/** 
 * Interface used to provide interchangeable strategies for signing requests 
 * using the various AWS signature protocols. 
 */ 
interface SignatureInterface 
{ 
    /** 
     * Signs the specified request with an AWS signing protocol by using the 
     * provided AWS account credentials and adding the required headers to the 
     * request. 
     * 
     * @param RequestInterface     $request     Request to sign 
     * @param CredentialsInterface $credentials Signing credentials 
     * 
     * @return RequestInterface Returns the modified request. 
     */ 
    public function signRequest( 
        RequestInterface $request, 
        CredentialsInterface $credentials 
    ); 
 
    /** 
     * Create a pre-signed request. 
     * 
     * @param RequestInterface     $request     Request to sign 
     * @param CredentialsInterface $credentials Credentials used to sign 
     * @param int|string|\DateTime $expires The time at which the URL should 
     *     expire. This can be a Unix timestamp, a PHP DateTime object, or a 
     *     string that can be evaluated by strtotime. 
     * 
     * @return RequestInterface 
     */ 
    public function presign( 
        RequestInterface $request, 
        CredentialsInterface $credentials, 
        $expires 
    ); 
} 
 
 |