PHP Classes

File: src/Contract/AsymmetricKeyCryptoInterface.php

Recommend this page to a friend!
  Classes of Scott Arciszewski   Halite   src/Contract/AsymmetricKeyCryptoInterface.php   Download  
File: src/Contract/AsymmetricKeyCryptoInterface.php
Role: Auxiliary script
Content type: text/plain
Description: Auxiliary script
Class: Halite
Perform cryptography operations with libsodium
Author: By
Last change: For version 2, let's use strict types!
Date: 8 years ago
Size: 3,611 bytes
 

Contents

Class file image Download
<?php
declare(strict_types=1);
namespace
ParagonIE\Halite\Contract;
use
ParagonIE\Halite\Asymmetric\EncryptionPublicKey;
use
ParagonIE\Halite\Asymmetric\EncryptionSecretKey;
use
ParagonIE\Halite\Asymmetric\SignaturePublicKey;
use
ParagonIE\Halite\Asymmetric\SignatureSecretKey;

/**
 * An interface fundamental to all cryptography implementations
 */
interface AsymmetricKeyCryptoInterface
{
   
   
/**
     * Diffie-Hellman, ECDHE, etc.
     *
     * Get a shared secret from a private key you possess and a public key for
     * the intended message recipient
     *
     * @param KeyInterface $privateKey
     * @param KeyInterface $publicKey
     *
     * @return string
     */
   
public static function getSharedSecret(
       
KeyInterface $privateKey,
       
KeyInterface $publicKey,
       
bool $get_as_object = false
   
);
   
   
/**
     * Encrypt a string using asymmetric cryptography
     * Seal then sign
     *
     * @param string $source Plaintext
     * @param EncryptionSecretKey $privatekey Our private key
     * @param EncryptionPublicKey $publickey Their public key
     * @param boolean $raw Don't hex encode the output?
     *
     * @return string
     */
   
public static function encrypt(
       
string $source,
       
EncryptionSecretKey $privateKey,
       
EncryptionPublicKey $publicKey,
       
bool $raw = false
   
): string;
   
   
/**
     * Decrypt a string using asymmetric cryptography
     * Verify then unseal
     *
     * @param string $source Ciphertext
     * @param EncryptionSecretKey $privatekey Our private key
     * @param EncryptionPublicKey $publickey Their public key
     * @param boolean $raw Don't hex decode the input?
     *
     * @return string
     */
   
public static function decrypt(
       
string $source,
       
EncryptionSecretKey $privateKey,
       
EncryptionPublicKey $publicKey,
       
bool $raw = false
   
): string;
   
   
/**
     * Encrypt a message with a target users' public key
     *
     * @param string $source Message to encrypt
     * @param EncryptionPublicKey $publicKey
     * @param boolean $raw Don't hex encode the output?
     *
     * @return string
     */
   
public static function seal(
       
string $source,
       
EncryptionPublicKey $publicKey,
       
bool $raw = false
   
): string;
   
   
/**
     * Decrypt a sealed message with our private key
     *
     * @param string $source Encrypted message (string or resource for a file)
     * @param EncryptionSecretKey $privateKey
     * @param boolean $raw Don't hex decode the input?
     *
     * @return string
     */
   
public static function unseal(
       
string $source,
       
EncryptionSecretKey $privateKey,
       
bool $raw = false
   
): string;
   
   
/**
     * Sign a message with our private key
     *
     * @param string $message Message to sign
     * @param SecretKey $privateKey
     * @param boolean $raw Don't hex encode the output?
     *
     * @return string Signature (detached)
     */
   
public static function sign(
       
string $message,
       
SignatureSecretKey $privateKey,
       
bool $raw = false
   
): string;
   
   
/**
     * Verify a signed message with the correct public key
     *
     * @param string $message Message to verifyn
     * @param PublicKey $publicKey
     * @param string $signature
     * @param boolean $raw Don't hex decode the input?
     *
     * @return boolean
     */
   
public static function verify(
       
string $message,
       
SignaturePublicKey $publicKey,
       
string $signature,
       
bool $raw = false
   
): bool;
}