1{ 2 "runOn": [ 3 { 4 "minServerVersion": "4.1.10" 5 } 6 ], 7 "database_name": "default", 8 "collection_name": "default", 9 "data": [ 10 { 11 "_id": 1, 12 "encrypted_string": { 13 "$binary": { 14 "base64": "AQAAAAAAAAAAAAAAAAAAAAACwj+3zkv2VM+aTfk60RqhXq6a/77WlLwu/BxXFkL7EppGsju/m8f0x5kBDD3EZTtGALGXlym5jnpZAoSIkswHoA==", 15 "subType": "06" 16 } 17 } 18 }, 19 { 20 "_id": 2, 21 "encrypted_string": { 22 "$binary": { 23 "base64": "AQAAAAAAAAAAAAAAAAAAAAACwj+3zkv2VM+aTfk60RqhXq6a/77WlLwu/BxXFkL7EppGsju/m8f0x5kBDD3EZTtGALGXlym5jnpZAoSIkswHoA==", 24 "subType": "06" 25 } 26 } 27 }, 28 { 29 "_id": 3, 30 "encrypted_string": { 31 "$binary": { 32 "base64": "AQAAAAAAAAAAAAAAAAAAAAACDdw4KFz3ZLquhsbt7RmDjD0N67n0uSXx7IGnQNCLeIKvot6s/ouI21Eo84IOtb6lhwUNPlSEBNY0/hbszWAKJg==", 33 "subType": "06" 34 } 35 } 36 } 37 ], 38 "json_schema": { 39 "properties": { 40 "encrypted_w_altname": { 41 "encrypt": { 42 "keyId": "/altname", 43 "bsonType": "string", 44 "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Random" 45 } 46 }, 47 "encrypted_string": { 48 "encrypt": { 49 "keyId": [ 50 { 51 "$binary": { 52 "base64": "AAAAAAAAAAAAAAAAAAAAAA==", 53 "subType": "04" 54 } 55 } 56 ], 57 "bsonType": "string", 58 "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic" 59 } 60 }, 61 "random": { 62 "encrypt": { 63 "keyId": [ 64 { 65 "$binary": { 66 "base64": "AAAAAAAAAAAAAAAAAAAAAA==", 67 "subType": "04" 68 } 69 } 70 ], 71 "bsonType": "string", 72 "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Random" 73 } 74 }, 75 "encrypted_string_equivalent": { 76 "encrypt": { 77 "keyId": [ 78 { 79 "$binary": { 80 "base64": "AAAAAAAAAAAAAAAAAAAAAA==", 81 "subType": "04" 82 } 83 } 84 ], 85 "bsonType": "string", 86 "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic" 87 } 88 } 89 }, 90 "bsonType": "object" 91 }, 92 "key_vault_data": [ 93 { 94 "status": 1, 95 "_id": { 96 "$binary": { 97 "base64": "AAAAAAAAAAAAAAAAAAAAAA==", 98 "subType": "04" 99 } 100 }, 101 "masterKey": { 102 "provider": "aws", 103 "key": "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0", 104 "region": "us-east-1" 105 }, 106 "updateDate": { 107 "$date": { 108 "$numberLong": "1552949630483" 109 } 110 }, 111 "keyMaterial": { 112 "$binary": { 113 "base64": "AQICAHhQNmWG2CzOm1dq3kWLM+iDUZhEqnhJwH9wZVpuZ94A8gEqnsxXlR51T5EbEVezUqqKAAAAwjCBvwYJKoZIhvcNAQcGoIGxMIGuAgEAMIGoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDHa4jo6yp0Z18KgbUgIBEIB74sKxWtV8/YHje5lv5THTl0HIbhSwM6EqRlmBiFFatmEWaeMk4tO4xBX65eq670I5TWPSLMzpp8ncGHMmvHqRajNBnmFtbYxN3E3/WjxmdbOOe+OXpnGJPcGsftc7cB2shRfA4lICPnE26+oVNXT6p0Lo20nY5XC7jyCO", 114 "subType": "00" 115 } 116 }, 117 "creationDate": { 118 "$date": { 119 "$numberLong": "1552949630483" 120 } 121 }, 122 "keyAltNames": [ 123 "altname", 124 "another_altname" 125 ] 126 } 127 ], 128 "tests": [ 129 { 130 "description": "distinct with deterministic encryption", 131 "clientOptions": { 132 "autoEncryptOpts": { 133 "kmsProviders": { 134 "aws": {} 135 } 136 } 137 }, 138 "operations": [ 139 { 140 "name": "distinct", 141 "arguments": { 142 "filter": { 143 "encrypted_string": "string0" 144 }, 145 "fieldName": "encrypted_string" 146 }, 147 "result": [ 148 "string0" 149 ] 150 } 151 ], 152 "expectations": [ 153 { 154 "command_started_event": { 155 "command": { 156 "listCollections": 1, 157 "filter": { 158 "name": "default" 159 } 160 }, 161 "command_name": "listCollections" 162 } 163 }, 164 { 165 "command_started_event": { 166 "command": { 167 "find": "datakeys", 168 "filter": { 169 "$or": [ 170 { 171 "_id": { 172 "$in": [ 173 { 174 "$binary": { 175 "base64": "AAAAAAAAAAAAAAAAAAAAAA==", 176 "subType": "04" 177 } 178 } 179 ] 180 } 181 }, 182 { 183 "keyAltNames": { 184 "$in": [] 185 } 186 } 187 ] 188 }, 189 "$db": "keyvault", 190 "readConcern": { 191 "level": "majority" 192 } 193 }, 194 "command_name": "find" 195 } 196 }, 197 { 198 "command_started_event": { 199 "command": { 200 "distinct": "default", 201 "key": "encrypted_string", 202 "query": { 203 "encrypted_string": { 204 "$eq": { 205 "$binary": { 206 "base64": "AQAAAAAAAAAAAAAAAAAAAAACwj+3zkv2VM+aTfk60RqhXq6a/77WlLwu/BxXFkL7EppGsju/m8f0x5kBDD3EZTtGALGXlym5jnpZAoSIkswHoA==", 207 "subType": "06" 208 } 209 } 210 } 211 } 212 }, 213 "command_name": "distinct" 214 } 215 } 216 ], 217 "outcome": { 218 "collection": { 219 "data": [ 220 { 221 "_id": 1, 222 "encrypted_string": { 223 "$binary": { 224 "base64": "AQAAAAAAAAAAAAAAAAAAAAACwj+3zkv2VM+aTfk60RqhXq6a/77WlLwu/BxXFkL7EppGsju/m8f0x5kBDD3EZTtGALGXlym5jnpZAoSIkswHoA==", 225 "subType": "06" 226 } 227 } 228 }, 229 { 230 "_id": 2, 231 "encrypted_string": { 232 "$binary": { 233 "base64": "AQAAAAAAAAAAAAAAAAAAAAACwj+3zkv2VM+aTfk60RqhXq6a/77WlLwu/BxXFkL7EppGsju/m8f0x5kBDD3EZTtGALGXlym5jnpZAoSIkswHoA==", 234 "subType": "06" 235 } 236 } 237 }, 238 { 239 "_id": 3, 240 "encrypted_string": { 241 "$binary": { 242 "base64": "AQAAAAAAAAAAAAAAAAAAAAACDdw4KFz3ZLquhsbt7RmDjD0N67n0uSXx7IGnQNCLeIKvot6s/ouI21Eo84IOtb6lhwUNPlSEBNY0/hbszWAKJg==", 243 "subType": "06" 244 } 245 } 246 } 247 ] 248 } 249 } 250 }, 251 { 252 "description": "Distinct fails when filtering on a random encrypted field", 253 "clientOptions": { 254 "autoEncryptOpts": { 255 "kmsProviders": { 256 "aws": {} 257 } 258 } 259 }, 260 "operations": [ 261 { 262 "name": "distinct", 263 "arguments": { 264 "filter": { 265 "random": "abc" 266 }, 267 "fieldName": "encrypted_string" 268 }, 269 "result": { 270 "errorContains": "Cannot query on fields encrypted with the randomized encryption" 271 } 272 } 273 ] 274 } 275 ] 276} 277