--TEST-- Try re-encrypting a table with ColumnEncryption set to 'enabled', which should fail. --DESCRIPTION-- This test cycles through $encryptionTypes and $keys, creating an encrypted table each time, then cycles through $targetTypes and $targetKeys to try re-encrypting the table with different combinations of enclave-enabled and non-enclave keys and encryption types. The sequence of operations is the following: 1. Connect with correct attestation information. 2. Create an encrypted table with two columns for each AE-supported data type, one encrypted and one not encrypted. 3. Insert some data. 4. Disconnect and reconnect with ColumnEncryption set to 'enabled'. 5. Test comparison and pattern matching by comparing the results for the encrypted and non-encrypted columns. Equality should work with deterministic encryption as in AE v1, but other computations should fail. 6. Try re-encrypting the table. This should fail. --SKIPIF-- --FILE-- query("DROP TABLE IF EXISTS $tableName"); $stmt = $conn->query($createQuery); } catch(Exception $error) { print_r($error); die("Creating an encrypted table failed when it shouldn't have!\n"); } insertValues($conn, $insertQuery, $dataTypes, $testValues); unset($conn); // Reconnect with ColumnEncryption set to 'enabled' $newAttestation = 'enabled'; $conn = connect($server, $newAttestation); if ($count == 0) { testCompare($conn, $tableName, $comparisons, $dataTypes, $colNames, $thresholds, $key, $encryptionType, 'enabled'); testPatternMatch($conn, $tableName, $patterns, $dataTypes, $colNames, $key, $encryptionType, 'enabled'); } ++$count; if ($key == $targetKey and $encryptionType == $targetType) { continue; } $alterQuery = constructAlterQuery($tableName, $colNamesAE, $dataTypes, $targetKey, $targetType, $slength); try { $stmt = $conn->query($alterQuery); // Query should fail and trigger catch block before getting here die("Encrypting should have failed with key $targetKey and encryption type $targetType\n"); } catch (PDOException $error) { if (!isEnclaveEnabled($key) or !isEnclaveEnabled($targetKey)) { $e = $error->errorInfo; checkErrors($e, array('42000', '33543')); } else { $e = $error->errorInfo; checkErrors($e, array('42000', '33546')); } } } } } } echo "Done.\n"; ?> --EXPECT-- Done.