<?php 
declare(strict_types=1); 
namespace ParagonIE\Sapient\CryptographyKeys; 
 
use ParagonIE\Sapient\CryptographyKey; 
 
/** 
 * Class SharedEncryptionKey 
 * @package ParagonIE\Sapient 
 */ 
class SharedEncryptionKey extends CryptographyKey 
{ 
    /** 
     * SharedEncryptionKey constructor. 
     * @param string $key 
     * @throws \RangeException 
     */ 
    public function __construct(string $key) 
    { 
        if (\ParagonIE_Sodium_Core_Util::strlen($key) !== SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES) { 
            throw new \RangeException('Key is not the correct size'); 
        } 
        $this->key = $key; 
    } 
 
    /** 
     * @return SharedEncryptionKey 
     */ 
    public static function generate(): SharedEncryptionKey 
    { 
        return new SharedEncryptionKey( 
            \random_bytes(SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES) 
        ); 
    } 
} 
 
 |