@@ -105,6 +105,225 @@ module TestBaseBeacon {
105
105
expect goodAttrs["aws_dbe_b_std2"] == newAttrs["aws_dbe_b_std2"];
106
106
}
107
107
108
+ method {:test} TestSharedCacheBeaconsSingleKeyStoreWithSamePartitionId ()
109
+ {
110
+ var partitionId : string := "partitionId";
111
+ var sharedCache : MPT. CacheType := GetSharedCache ();
112
+ var primitives :- expect Primitives. AtomicPrimitives ();
113
+
114
+ // Verification by adding assume statements in "by" passes, but there's an error while transpiling code to runtimes
115
+ // Dafny is working on a fix. Update this test when Dafny releases `4.9.2`.
116
+ // Using `assume{:axiom} false;` for this test for now.
117
+ // var src :- expect C.MakeKeySource(FullTableConfig, version.keyStore, version.keySource, primitives) by {
118
+ // assume {:axiom} C.ValidSharedCache(version.keySource);
119
+ // }
120
+ // var bv :- expect C.ConvertVersionWithSource(FullTableConfig, version, src);
121
+ // var goodAttrs :- expect bv.GenerateEncryptedBeacons(SimpleItem, DontUseKeyId) by {
122
+ // assume{:axiom} false;
123
+ // }
124
+ assume {:axiom} false ;
125
+
126
+ // This call is expected to fail because we are providing a Bad KeyStore which does NOT exist
127
+ var badVersion := GetLotsaBeaconsSingleWithSharedCacheWithBadKeyStore (cache := sharedCache, partitionId := Some(partitionId));
128
+ var badSrc :- expect C. MakeKeySource (FullTableConfig, badVersion.keyStore, badVersion.keySource, primitives);
129
+ var badBv :- expect C. ConvertVersionWithSource (FullTableConfig, badVersion, badSrc);
130
+ var badAttrs := badBv. GenerateEncryptedBeacons (SimpleItem, DontUseKeyId);
131
+ expect badAttrs. Failure?;
132
+
133
+ // This is expected to pass because we pass a valid KeyStore
134
+ var version := GetLotsaBeaconsSingleWithSharedCache (cache := sharedCache, partitionId := Some(partitionId));
135
+ var src :- expect C. MakeKeySource (FullTableConfig, version.keyStore, version.keySource, primitives);
136
+ var bv :- expect C. ConvertVersionWithSource (FullTableConfig, version, src);
137
+ var goodAttrs :- expect bv. GenerateEncryptedBeacons (SimpleItem, DontUseKeyId);
138
+
139
+ // This is expected to pass now because the cache already has cached material for this Branch Key ID.
140
+ // This is a hack to test that the correct material is cached.
141
+ var badAttrsNowCached :- expect badBv. GenerateEncryptedBeacons (SimpleItem, DontUseKeyId);
142
+ }
143
+
144
+ method {:test} TestSharedCacheBeaconsSingleKeyStoreWithDifferentPartitionId ()
145
+ {
146
+ var sharedCache : MPT. CacheType := GetSharedCache ();
147
+ var primitives :- expect Primitives. AtomicPrimitives ();
148
+
149
+ // Verification by adding assume statements in "by" passes, but there's an error while transpiling code to runtimes
150
+ // Dafny is working on a fix. Update this test when Dafny releases `4.9.2`.
151
+ // Using `assume{:axiom} false;` for this test for now.
152
+ // var src :- expect C.MakeKeySource(FullTableConfig, version.keyStore, version.keySource, primitives) by {
153
+ // assume {:axiom} C.ValidSharedCache(version.keySource);
154
+ // }
155
+ // var bv :- expect C.ConvertVersionWithSource(FullTableConfig, version, src);
156
+ // var goodAttrs :- expect bv.GenerateEncryptedBeacons(SimpleItem, DontUseKeyId) by {
157
+ // assume{:axiom} false;
158
+ // }
159
+ assume {:axiom} false ;
160
+
161
+ // This call is expected to fail because we are providing a Bad KeyStore which does NOT exist
162
+ var partitionIdBadVersion : string := "partitionIdBadVersion";
163
+ var badVersion := GetLotsaBeaconsSingleWithSharedCacheWithBadKeyStore (cache := sharedCache, partitionId := Some(partitionIdBadVersion));
164
+ var badSrc :- expect C. MakeKeySource (FullTableConfig, badVersion.keyStore, badVersion.keySource, primitives);
165
+ var badBv :- expect C. ConvertVersionWithSource (FullTableConfig, badVersion, badSrc);
166
+ var badAttrs := badBv. GenerateEncryptedBeacons (SimpleItem, DontUseKeyId);
167
+ expect badAttrs. Failure?;
168
+
169
+ // This is expected to pass because we pass a valid KeyStore
170
+ var partitionIdGoodVersion : string := "partitionIdGoodVersion";
171
+ var version := GetLotsaBeaconsSingleWithSharedCache (cache := sharedCache, partitionId := Some(partitionIdGoodVersion));
172
+ var src :- expect C. MakeKeySource (FullTableConfig, version.keyStore, version.keySource, primitives);
173
+ var bv :- expect C. ConvertVersionWithSource (FullTableConfig, version, src);
174
+ var goodAttrs :- expect bv. GenerateEncryptedBeacons (SimpleItem, DontUseKeyId);
175
+
176
+ // This is still expected to fail because the partitionId for the cached material is different.
177
+ var badAttrsNowCached := badBv. GenerateEncryptedBeacons (SimpleItem, DontUseKeyId);
178
+ expect badAttrsNowCached. Failure?;
179
+ }
180
+
181
+ method {:test} TestSharedCacheBeaconsSingleKeyStoreWithUnspecifiedPartitionId ()
182
+ {
183
+ var sharedCache : MPT. CacheType := GetSharedCache ();
184
+ var primitives :- expect Primitives. AtomicPrimitives ();
185
+
186
+ // Verification by adding assume statements in "by" passes, but there's an error while transpiling code to runtimes
187
+ // Dafny is working on a fix. Update this test when Dafny releases `4.9.2`.
188
+ // Using `assume{:axiom} false;` for this test for now.
189
+ // var src :- expect C.MakeKeySource(FullTableConfig, version.keyStore, version.keySource, primitives) by {
190
+ // assume {:axiom} C.ValidSharedCache(version.keySource);
191
+ // }
192
+ // var bv :- expect C.ConvertVersionWithSource(FullTableConfig, version, src);
193
+ // var goodAttrs :- expect bv.GenerateEncryptedBeacons(SimpleItem, DontUseKeyId) by {
194
+ // assume{:axiom} false;
195
+ // }
196
+ assume {:axiom} false ;
197
+
198
+ // This call is expected to fail because we are providing a Bad KeyStore which does NOT exist
199
+ var badVersion := GetLotsaBeaconsSingleWithSharedCacheWithBadKeyStore (cache := sharedCache, partitionId := None);
200
+ var badSrc :- expect C. MakeKeySource (FullTableConfig, badVersion.keyStore, badVersion.keySource, primitives);
201
+ var badBv :- expect C. ConvertVersionWithSource (FullTableConfig, badVersion, badSrc);
202
+ var badAttrs := badBv. GenerateEncryptedBeacons (SimpleItem, DontUseKeyId);
203
+ expect badAttrs. Failure?;
204
+
205
+ // This is expected to pass because we pass a valid KeyStore
206
+ var version := GetLotsaBeaconsSingleWithSharedCache (cache := sharedCache, partitionId := None);
207
+ var src :- expect C. MakeKeySource (FullTableConfig, version.keyStore, version.keySource, primitives);
208
+ var bv :- expect C. ConvertVersionWithSource (FullTableConfig, version, src);
209
+ var goodAttrs :- expect bv. GenerateEncryptedBeacons (SimpleItem, DontUseKeyId);
210
+
211
+ // This is still expected to fail because the partitionId for the cached material is different.
212
+ // If the user does NOT specify the partitionId, it is set to a random UUID
213
+ var badAttrsNowCached := badBv. GenerateEncryptedBeacons (SimpleItem, DontUseKeyId);
214
+ expect badAttrsNowCached. Failure?;
215
+ }
216
+
217
+ method {:test} TestSharedCacheBeaconsMultiKeyStoreWithSamePartitionId ()
218
+ {
219
+ var partitionId : string := "partitionId";
220
+ var sharedCache : MPT. CacheType := GetSharedCache ();
221
+ var primitives :- expect Primitives. AtomicPrimitives ();
222
+
223
+ // Verification by adding assume statements in "by" passes, but there's an error while transpiling code to runtimes
224
+ // Dafny is working on a fix. Update this test when Dafny releases `4.9.2`.
225
+ // Using `assume{:axiom} false;` for this test for now.
226
+ // var src :- expect C.MakeKeySource(FullTableConfig, version.keyStore, version.keySource, primitives) by {
227
+ // assume {:axiom} C.ValidSharedCache(version.keySource);
228
+ // }
229
+ // var bv :- expect C.ConvertVersionWithSource(FullTableConfig, version, src);
230
+ // var goodAttrs :- expect bv.GenerateEncryptedBeacons(SimpleItem, DontUseKeyId) by {
231
+ // assume{:axiom} false;
232
+ // }
233
+ assume {:axiom} false ;
234
+
235
+ // This call is expected to fail because we are providing a Bad KeyStore which does NOT exist
236
+ var badVersion := GetLotsaBeaconsMultiWithSharedCacheWithBadKeyStore (cache := sharedCache, partitionId := Some(partitionId));
237
+ var badSrc :- expect C. MakeKeySource (FullTableConfig, badVersion.keyStore, badVersion.keySource, primitives);
238
+ var badBv :- expect C. ConvertVersionWithSource (FullTableConfig, badVersion, badSrc);
239
+ var badAttrs := badBv. GenerateEncryptedBeacons (SimpleItem, KeyId("040a32a8-3737-4f16-a3ba-bd4449556d73"));
240
+ expect badAttrs. Failure?;
241
+
242
+ // This is expected to pass because we pass a valid KeyStore
243
+ var version := GetLotsaBeaconsMultiWithSharedCache (cache := sharedCache, partitionId := Some(partitionId));
244
+ var src :- expect C. MakeKeySource (FullTableConfig, version.keyStore, version.keySource, primitives);
245
+ var bv :- expect C. ConvertVersionWithSource (FullTableConfig, version, src);
246
+ var goodAttrs :- expect bv. GenerateEncryptedBeacons (SimpleItem, KeyId("040a32a8-3737-4f16-a3ba-bd4449556d73"));
247
+
248
+ // This is expected to pass now because the cache already has cached material for this Branch Key ID.
249
+ // This is a hack to test that the correct material is cached.
250
+ var badAttrsNowCached :- expect badBv. GenerateEncryptedBeacons (SimpleItem, KeyId("040a32a8-3737-4f16-a3ba-bd4449556d73"));
251
+ }
252
+
253
+
254
+ method {:test} TestSharedCacheBeaconsMultiKeyStoreWithDifferentPartitionId ()
255
+ {
256
+ var sharedCache : MPT. CacheType := GetSharedCache ();
257
+ var primitives :- expect Primitives. AtomicPrimitives ();
258
+
259
+ // Verification by adding assume statements in "by" passes, but there's an error while transpiling code to runtimes
260
+ // Dafny is working on a fix. Update this test when Dafny releases `4.9.2`.
261
+ // Using `assume{:axiom} false;` for this test for now.
262
+ // var src :- expect C.MakeKeySource(FullTableConfig, version.keyStore, version.keySource, primitives) by {
263
+ // assume {:axiom} C.ValidSharedCache(version.keySource);
264
+ // }
265
+ // var bv :- expect C.ConvertVersionWithSource(FullTableConfig, version, src);
266
+ // var goodAttrs :- expect bv.GenerateEncryptedBeacons(SimpleItem, DontUseKeyId) by {
267
+ // assume{:axiom} false;
268
+ // }
269
+ assume {:axiom} false ;
270
+
271
+ // This call is expected to fail because we are providing a Bad KeyStore which does NOT exist
272
+ var partitionIdBadVersion : string := "partitionIdBadVersion";
273
+ var badVersion := GetLotsaBeaconsMultiWithSharedCacheWithBadKeyStore (cache := sharedCache, partitionId := Some(partitionIdBadVersion));
274
+ var badSrc :- expect C. MakeKeySource (FullTableConfig, badVersion.keyStore, badVersion.keySource, primitives);
275
+ var badBv :- expect C. ConvertVersionWithSource (FullTableConfig, badVersion, badSrc);
276
+ var badAttrs := badBv. GenerateEncryptedBeacons (SimpleItem, KeyId("040a32a8-3737-4f16-a3ba-bd4449556d73"));
277
+ expect badAttrs. Failure?;
278
+
279
+ // This is expected to pass because we pass a valid KeyStore
280
+ var partitionIdGoodVersion : string := "partitionIdGoodVersion";
281
+ var version := GetLotsaBeaconsMultiWithSharedCache (cache := sharedCache, partitionId := Some(partitionIdGoodVersion));
282
+ var src :- expect C. MakeKeySource (FullTableConfig, version.keyStore, version.keySource, primitives);
283
+ var bv :- expect C. ConvertVersionWithSource (FullTableConfig, version, src);
284
+ var goodAttrs :- expect bv. GenerateEncryptedBeacons (SimpleItem, KeyId("040a32a8-3737-4f16-a3ba-bd4449556d73"));
285
+
286
+ // This is still expected to fail because the partitionId for the cached material is different.
287
+ var badAttrsNowCached := badBv. GenerateEncryptedBeacons (SimpleItem, KeyId("040a32a8-3737-4f16-a3ba-bd4449556d73"));
288
+ expect badAttrsNowCached. Failure?;
289
+ }
290
+
291
+ method {:test} TestSharedCacheBeaconsMultiKeyStoreWithUnspecifiedPartitionId ()
292
+ {
293
+ var sharedCache : MPT. CacheType := GetSharedCache ();
294
+ var primitives :- expect Primitives. AtomicPrimitives ();
295
+
296
+ // Verification by adding assume statements in "by" passes, but there's an error while transpiling code to runtimes
297
+ // Dafny is working on a fix. Update this test when Dafny releases `4.9.2`.
298
+ // Using `assume{:axiom} false;` for this test for now.
299
+ // var src :- expect C.MakeKeySource(FullTableConfig, version.keyStore, version.keySource, primitives) by {
300
+ // assume {:axiom} C.ValidSharedCache(version.keySource);
301
+ // }
302
+ // var bv :- expect C.ConvertVersionWithSource(FullTableConfig, version, src);
303
+ // var goodAttrs :- expect bv.GenerateEncryptedBeacons(SimpleItem, DontUseKeyId) by {
304
+ // assume{:axiom} false;
305
+ // }
306
+ assume {:axiom} false ;
307
+
308
+ // This call is expected to fail because we are providing a Bad KeyStore which does NOT exist
309
+ var badVersion := GetLotsaBeaconsMultiWithSharedCacheWithBadKeyStore (cache := sharedCache, partitionId := None);
310
+ var badSrc :- expect C. MakeKeySource (FullTableConfig, badVersion.keyStore, badVersion.keySource, primitives);
311
+ var badBv :- expect C. ConvertVersionWithSource (FullTableConfig, badVersion, badSrc);
312
+ var badAttrs := badBv. GenerateEncryptedBeacons (SimpleItem, KeyId("040a32a8-3737-4f16-a3ba-bd4449556d73"));
313
+ expect badAttrs. Failure?;
314
+
315
+ // This is expected to pass because we pass a valid KeyStore
316
+ var version := GetLotsaBeaconsMultiWithSharedCache (cache := sharedCache, partitionId := None);
317
+ var src :- expect C. MakeKeySource (FullTableConfig, version.keyStore, version.keySource, primitives);
318
+ var bv :- expect C. ConvertVersionWithSource (FullTableConfig, version, src);
319
+ var goodAttrs :- expect bv. GenerateEncryptedBeacons (SimpleItem, KeyId("040a32a8-3737-4f16-a3ba-bd4449556d73"));
320
+
321
+ // This is still expected to fail because the partitionId for the cached material is different.
322
+ // If the user does NOT specify the partitionId, it is set to a random UUID
323
+ var badAttrsNowCached := badBv. GenerateEncryptedBeacons (SimpleItem, KeyId("040a32a8-3737-4f16-a3ba-bd4449556d73"));
324
+ expect badAttrsNowCached. Failure?;
325
+ }
326
+
108
327
method {:test} TestBeaconValues ()
109
328
{
110
329
var version := GetLotsaBeacons ();
0 commit comments