OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
reader
/
aws-ses
/
vendor
/
aws
/
aws-sdk-php
/
tests
/
Crypto
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
08/14/2024 10:55:48 AM
rwxr-xr-x
📄
AesDecryptingStreamTest.php
4.66 KB
08/14/2024 10:52:39 AM
rw-r--r--
📄
AesEncryptingStreamTest.php
5.62 KB
08/14/2024 10:52:39 AM
rw-r--r--
📄
AesEncryptionStreamTestTrait.php
2.47 KB
08/14/2024 10:52:39 AM
rw-r--r--
📄
AesGcmDecryptingStreamTest.php
4.74 KB
08/14/2024 10:52:39 AM
rw-r--r--
📄
AesGcmEncryptingStreamTest.php
7.22 KB
08/14/2024 10:52:39 AM
rw-r--r--
📁
Cipher
-
08/14/2024 10:55:44 AM
rwxr-xr-x
📄
KmsMaterialsProviderTest.php
1.93 KB
08/14/2024 10:52:39 AM
rw-r--r--
📄
KmsMaterialsProviderV2Test.php
7.24 KB
08/14/2024 10:52:39 AM
rw-r--r--
📄
MetadataEnvelopeTest.php
1.23 KB
08/14/2024 10:52:39 AM
rw-r--r--
📁
Polyfill
-
08/14/2024 10:55:45 AM
rwxr-xr-x
📄
RandomByteStream.php
935 bytes
08/14/2024 10:52:39 AM
rw-r--r--
📄
UsesCryptoParamsTrait.php
3.66 KB
08/14/2024 10:52:40 AM
rw-r--r--
📄
UsesCryptoParamsTraitV2.php
2.69 KB
08/14/2024 10:52:40 AM
rw-r--r--
📄
UsesMetadataEnvelopeTrait.php
2.53 KB
08/14/2024 10:52:40 AM
rw-r--r--
Editing: AesGcmDecryptingStreamTest.php
Close
<?php namespace Aws\Test\Crypto; use Aws\Crypto\AesGcmDecryptingStream; use GuzzleHttp\Psr7; use Psr\Http\Message\StreamInterface; use Yoast\PHPUnitPolyfills\TestCases\TestCase; class AesGcmDecryptingStreamTest extends TestCase { use AesEncryptionStreamTestTrait; /** * @dataProvider cartesianJoinInputKeySizeProvider * * @param StreamInterface $plainText * @param int $keySize */ public function testStreamOutputSameAsOpenSSL( StreamInterface $plainText, $keySize ) { if (version_compare(PHP_VERSION, '7.1', '<')) { $this->markTestSkipped( 'AES-GCM decryption is only supported in PHP 7.1 or greater' ); } $plainText->rewind(); $plainText = (string) $plainText; $key = 'foo'; $iv = random_bytes(openssl_cipher_iv_length('aes-256-gcm')); $additionalData = json_encode(['foo' => 'bar']); $tag = null; $cipherText = openssl_encrypt( $plainText, "aes-{$keySize}-gcm", $key, OPENSSL_RAW_DATA, $iv, $tag, $additionalData, 16 ); $decryptingStream = new AesGcmDecryptingStream( Psr7\Utils::streamFor($cipherText), $key, $iv, $tag, $additionalData, 16, $keySize ); $this->assertSame($iv, $decryptingStream->getCurrentIv()); $this->assertSame( 'AES/GCM/NoPadding', $decryptingStream->getAesName() ); $this->assertSame((string) $decryptingStream, $plainText); } /** * @dataProvider cartesianJoinInputKeySizeProvider * * @param StreamInterface $plainText * @param int $keySize */ public function testThrowsForInvalidTag( StreamInterface $plainText, $keySize ) { $this->expectExceptionMessage("The requested object could not be decrypted due to an invalid authentication tag"); $this->expectException(\Aws\Exception\CryptoException::class); if (version_compare(PHP_VERSION, '7.1', '<')) { $this->markTestSkipped( 'AES-GCM decryption is only supported in PHP 7.1 or greater' ); } $plainText->rewind(); $plainText = (string) $plainText; $key = 'foo'; $iv = random_bytes(openssl_cipher_iv_length('aes-256-gcm')); $additionalData = json_encode(['foo' => 'bar']); $tag = null; $cipherText = openssl_encrypt( $plainText, "aes-{$keySize}-gcm", $key, OPENSSL_RAW_DATA, $iv, $tag, $additionalData, 16 ); $decryptingStream = new AesGcmDecryptingStream( Psr7\Utils::streamFor($cipherText), $key, $iv, 'invalid_tag', $additionalData, 16, $keySize ); $decryptingStream->getContents(); } public function testStreamLegacyPHP() { if (version_compare(PHP_VERSION, '7.1', '>=')) { $this->markTestSkipped( 'Test is unnecessary on PHP 7.1 and newer' ); return; } $knownAnswerTest = [ 'KEY' => "foo\0\0\0\0\0\0\0\0\0\0\0\0\0", 'KeySize' => 128, 'TagLength' => 16, 'CT' => hex2bin('cbb92a00adfaa91fbee308603a1c21b87f12c30246dc01097b0f000dc1a2f872748bd6b41a37a2d7d89b9cfd'), 'PT' => hex2bin('546865207261696e20696e20537061696e2066616c6c73206d61696e6c79206f6e2074686520706c61696e2e'), 'IV' => hex2bin('43a29bcfb3322d134a4ef364'), 'AAD' => json_encode(['foo' => 'bar']), 'Tag' => hex2bin('cba38431a0c28712778de8e8c6ec4594') ]; $stream = new AesGcmDecryptingStream( Psr7\Utils::streamFor($knownAnswerTest['CT']), $knownAnswerTest['KEY'], $knownAnswerTest['IV'], $knownAnswerTest['Tag'], $knownAnswerTest['AAD'], $knownAnswerTest['TagLength'], $knownAnswerTest['KeySize'] ); $cipherText = (string) $stream; $this->assertSame($cipherText, $knownAnswerTest['PT']); } public function testIsNotWritable() { $decryptingStream = new AesGcmDecryptingStream( Psr7\Utils::streamFor(''), 'key', random_bytes(openssl_cipher_iv_length('aes-256-gcm')), 'tag' ); $this->assertFalse($decryptingStream->isWritable()); } }