Submit
Path:
~
/
/
usr
/
local
/
psa
/
admin
/
plib
/
modules
/
platform360
/
vendor
/
spomky-labs
/
pki-framework
/
src
/
CryptoBridge
/
File Content:
Crypto.php
<?php declare (strict_types=1); namespace Platform360\SpomkyLabs\Pki\CryptoBridge; use RuntimeException; use Platform360\SpomkyLabs\Pki\CryptoBridge\Crypto\OpenSSLCrypto; use Platform360\SpomkyLabs\Pki\CryptoTypes\AlgorithmIdentifier\Cipher\CipherAlgorithmIdentifier; use Platform360\SpomkyLabs\Pki\CryptoTypes\AlgorithmIdentifier\Feature\SignatureAlgorithmIdentifier; use Platform360\SpomkyLabs\Pki\CryptoTypes\Asymmetric\PrivateKeyInfo; use Platform360\SpomkyLabs\Pki\CryptoTypes\Asymmetric\PublicKeyInfo; use Platform360\SpomkyLabs\Pki\CryptoTypes\Signature\Signature; use function defined; /** * Base class for crypto engine implementations. */ abstract class Crypto { /** * Sign data with given algorithm using given private key. * * @param string $data Data to sign * @param PrivateKeyInfo $privkey_info Private key * @param SignatureAlgorithmIdentifier $algo Signature algorithm */ public abstract function sign(string $data, PrivateKeyInfo $privkey_info, SignatureAlgorithmIdentifier $algo) : Signature; /** * Verify signature with given algorithm using given public key. * * @param string $data Data to verify * @param Signature $signature Signature * @param PublicKeyInfo $pubkey_info Public key * @param SignatureAlgorithmIdentifier $algo Signature algorithm * * @return bool True if signature matches */ public abstract function verify(string $data, Signature $signature, PublicKeyInfo $pubkey_info, SignatureAlgorithmIdentifier $algo) : bool; /** * Encrypt data with given algorithm using given key. * * Padding must be added by the caller. Initialization vector is taken from the algorithm identifier if available. * * @param string $data Plaintext * @param string $key Encryption key * @param CipherAlgorithmIdentifier $algo Encryption algorithm * * @return string Ciphertext */ public abstract function encrypt(string $data, string $key, CipherAlgorithmIdentifier $algo) : string; /** * Decrypt data with given algorithm using given key. * * Possible padding is not removed and must be handled by the caller. Initialization vector is taken from the * algorithm identifier if available. * * @param string $data Ciphertext * @param string $key Encryption key * @param CipherAlgorithmIdentifier $algo Encryption algorithm * * @return string Plaintext */ public abstract function decrypt(string $data, string $key, CipherAlgorithmIdentifier $algo) : string; /** * Get default supported crypto implementation. */ public static function getDefault() : self { if (defined('OPENSSL_VERSION_NUMBER')) { return new OpenSSLCrypto(); } // @codeCoverageIgnoreStart throw new RuntimeException('No crypto implementation available.'); // @codeCoverageIgnoreEnd } }
Edit
Rename
Chmod
Delete
FILE
FOLDER
INFO
Name
Size
Permission
Action
Crypto
---
0755
Crypto.php
2959 bytes
0644
N4ST4R_ID | Naxtarrr