<?php
declare(strict_types=1);
namespace ParagonIE\Sapient\Adapter;
use ParagonIE\Sapient\Exception\{
InvalidMessageException
};
use ParagonIE\Sapient\CryptographyKeys\{
SealingPublicKey,
SharedAuthenticationKey,
SharedEncryptionKey,
SigningSecretKey
};
use Psr\Http\Message\{
RequestInterface,
ResponseInterface
};
/**
* Interface ConvenienceInterface
* @package ParagonIE\Sapient\Adapter
*/
interface ConvenienceInterface
{
/**
* Create an HTTP request object with a JSON body that is authenticated
* with a pre-shared key. The authentication tag is stored in a
* Body-HMAC-SHA512256 header.
*
* @param string $method
* @param string $uri
* @param array $arrayToJsonify
* @param SharedAuthenticationKey $key
* @param array $headers
* @return RequestInterface
* @throws InvalidMessageException
*/
public function createSymmetricAuthenticatedJsonRequest(
string $method,
string $uri,
array $arrayToJsonify,
SharedAuthenticationKey $key,
array $headers = []
): RequestInterface;
/**
* Create an HTTP response object with a JSON body that is authenticated
* with a pre-shared key. The authentication tag is stored in a
* Body-HMAC-SHA512256 header.
*
* @param int $status
* @param array $arrayToJsonify
* @param SharedAuthenticationKey $key
* @param array $headers
* @param string $version
* @return ResponseInterface
* @throws InvalidMessageException
*/
public function createSymmetricAuthenticatedJsonResponse(
int $status,
array $arrayToJsonify,
SharedAuthenticationKey $key,
array $headers = [],
string $version = '1.1'
): ResponseInterface;
/**
* Create an HTTP request object with a JSON body that is encrypted
* with a pre-shared key.
*
* @param string $method
* @param string $uri
* @param array $arrayToJsonify
* @param SharedEncryptionKey $key
* @param array $headers
* @return RequestInterface
* @throws InvalidMessageException
*/
public function createSymmetricEncryptedJsonRequest(
string $method,
string $uri,
array $arrayToJsonify,
SharedEncryptionKey $key,
array $headers = []
): RequestInterface;
/**
* Create an HTTP response object with a JSON body that is encrypted
* with a pre-shared key.
*
* @param int $status
* @param array $arrayToJsonify
* @param SharedEncryptionKey $key
* @param array $headers
* @param string $version
* @return ResponseInterface
* @throws InvalidMessageException
*/
public function createSymmetricEncryptedJsonResponse(
int $status,
array $arrayToJsonify,
SharedEncryptionKey $key,
array $headers = [],
string $version = '1.1'
): ResponseInterface;
/**
* Create an HTTP request object with a JSON body that is encrypted
* with the server's public key.
*
* @param string $method
* @param string $uri
* @param array $arrayToJsonify
* @param SealingPublicKey $key
* @param array $headers
* @return RequestInterface
* @throws InvalidMessageException
*/
public function createSealedJsonRequest(
string $method,
string $uri,
array $arrayToJsonify,
SealingPublicKey $key,
array $headers = []
): RequestInterface;
/**
* Create an HTTP response object with a JSON body that is encrypted
* with the server's public key.
*
* @param int $status
* @param array $arrayToJsonify
* @param SealingPublicKey $key
* @param array $headers
* @param string $version
* @return ResponseInterface
* @throws InvalidMessageException
*/
public function createSealedJsonResponse(
int $status,
array $arrayToJsonify,
SealingPublicKey $key,
array $headers = [],
string $version = '1.1'
): ResponseInterface;
/**
* Creates a JSON-signed API request to be sent to an API.
* Enforces hard-coded Ed25519 keys.
*
* @param string $method
* @param string $uri
* @param array $arrayToJsonify
* @param SigningSecretKey $key
* @param array $headers
* @return RequestInterface
* @throws InvalidMessageException
*/
public function createSignedJsonRequest(
string $method,
string $uri,
array $arrayToJsonify,
SigningSecretKey $key,
array $headers = []
): RequestInterface;
/**
* Creates a JSON-signed API response to be returned from an API.
* Enforces hard-coded Ed25519 keys.
*
* @param int $status
* @param array $arrayToJsonify
* @param SigningSecretKey $key
* @param array $headers
* @param string $version
* @return ResponseInterface
* @throws InvalidMessageException
*/
public function createSignedJsonResponse(
int $status,
array $arrayToJsonify,
SigningSecretKey $key,
array $headers = [],
string $version = '1.1'
): ResponseInterface;
/**
* Authenticate your HTTP request with a pre-shared key.
*
* @param string $method
* @param string $uri
* @param string $body
* @param SharedAuthenticationKey $key
* @param array $headers
* @return RequestInterface
*/
public function createSymmetricAuthenticatedRequest(
string $method,
string $uri,
string $body,
SharedAuthenticationKey $key,
array $headers = []
): RequestInterface;
/**
* Authenticate your HTTP response with a pre-shared key.
*
* @param int $status
* @param string $body
* @param SharedAuthenticationKey $key
* @param array $headers
* @param string $version
* @return ResponseInterface
*/
public function createSymmetricAuthenticatedResponse(
int $status,
string $body,
SharedAuthenticationKey $key,
array $headers = [],
string $version = '1.1'
): ResponseInterface;
/**
* Encrypt your HTTP request with a pre-shared key.
*
* @param string $method
* @param string $uri
* @param string $body
* @param SharedEncryptionKey $key
* @param array $headers
* @return RequestInterface
*/
public function createSymmetricEncryptedRequest(
string $method,
string $uri,
string $body,
SharedEncryptionKey $key,
array $headers = []
): RequestInterface;
/**
* Encrypt your HTTP response with a pre-shared key.
*
* @param int $status
* @param string $body
* @param SharedEncryptionKey $key
* @param array $headers
* @param string $version
* @return ResponseInterface
*/
public function createSymmetricEncryptedResponse(
int $status,
string $body,
SharedEncryptionKey $key,
array $headers = [],
string $version = '1.1'
): ResponseInterface;
/**
* Encrypt your HTTP request with the server's public key, so that only
* the server can decrypt the message.
*
* @param string $method
* @param string $uri
* @param string $body
* @param SealingPublicKey $key
* @param array $headers
* @return RequestInterface
*/
public function createSealedRequest(
string $method,
string $uri,
string $body,
SealingPublicKey $key,
array $headers = []
): RequestInterface;
/**
* Encrypt your HTTP response with the client's public key, so that only
* the client can decrypt the message.
*
* @param int $status
* @param string $body
* @param SealingPublicKey $key
* @param array $headers
* @param string $version
* @return ResponseInterface
*/
public function createSealedResponse(
int $status,
string $body,
SealingPublicKey $key,
array $headers = [],
string $version = '1.1'
): ResponseInterface;
/**
* Ed25519-sign a request body.
*
* This adds an HTTP header (Body-Signature-Ed25519) which is the base64url
* encoded Ed25519 signature of the HTTP request body.
*
* @param string $method
* @param string $uri
* @param string $body
* @param SigningSecretKey $key
* @param array $headers
* @return RequestInterface
*/
public function createSignedRequest(
string $method,
string $uri,
string $body,
SigningSecretKey $key,
array $headers = []
): RequestInterface;
/**
* Ed25519-sign a response body.
*
* This adds an HTTP header (Body-Signature-Ed25519) which is the base64url
* encoded Ed25519 signature of the HTTP response body.
*
* @param int $status
* @param string $body
* @param SigningSecretKey $key
* @param array $headers
* @param string $version
* @return ResponseInterface
*/
public function createSignedResponse(
int $status,
string $body,
SigningSecretKey $key,
array $headers = [],
string $version = '1.1'
);
}
|