function test_encryption($method) { $tests = openssl_get_cipher_tests($method); foreach ($tests as $idx => $test) { echo "TEST $idx\n"; $ct = openssl_encrypt($test['pt'], $method, $test['key'], OPENSSL_RAW_DATA, $test['iv'], $tag, $test['aad'], strlen($test['tag'])); var_dump($test['ct'] === $ct); var_dump($test['tag'] === $tag); } // Empty IV error var_dump(openssl_encrypt('data', $method, 'password', 0, NULL, $tag, '')); // Failing to retrieve tag (max is 16 bytes) var_dump(openssl_encrypt('data', $method, 'password', 0, str_repeat('x', 32), $tag, '', 20)); }
function test_encryption($method) { $tests = openssl_get_cipher_tests($method); foreach ($tests as $idx => $test) { echo "TEST $idx\n"; $ct = openssl_encrypt($test['pt'], $method, $test['key'], OPENSSL_RAW_DATA, $test['iv'], $tag, $test['aad'], strlen($test['tag'])); var_dump($test['ct'] === $ct); var_dump($test['tag'] === $tag); } // Empty IV error var_dump(openssl_encrypt('data', $method, 'password', 0, NULL, $tag, '')); // Test setting different IV length and unlimeted tag var_dump(openssl_encrypt('data', $method, 'password', 0, str_repeat('x', 10), $tag, '', 1024)); }
function test_decryption($method) { $tests = openssl_get_cipher_tests($method); foreach ($tests as $idx => $test) { echo "TEST $idx\n"; $pt = openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA, $test['iv'], $test['tag'], $test['aad']); var_dump($test['pt'] === $pt); } // no IV var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA, NULL, $test['tag'], $test['aad'])); // failed because no AAD var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA, $test['iv'], $test['tag'])); // failed because wrong tag var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA, $test['iv'], str_repeat('x', 10), $test['aad'])); }