InsertableClientSSK ik = new InsertableClientSSK(docName, pkHash, pubKey, privKey, ckey, Key.ALGO_AES_PCFB_256_SHA256);
String test = "test";
SimpleReadOnlyArrayBucket bucket = new SimpleReadOnlyArrayBucket(test.getBytes("UTF-8"));
ClientSSKBlock block = ik.encode(bucket, false, false, (short)-1, bucket.size(), random, Compressor.DEFAULT_COMPRESSORDESCRIPTOR, false);
SSKBlock sskBlock = (SSKBlock) block.getBlock();
store.put(sskBlock, false, false);
//If the block is the same then there should not be a collision
try {
store.put(sskBlock, false, false);
assertTrue(true);
} catch (KeyCollisionException e) {
assertTrue(false);
}
String test1 = "test1";
SimpleReadOnlyArrayBucket bucket1 = new SimpleReadOnlyArrayBucket(test1.getBytes("UTF-8"));
ClientSSKBlock block1 = ik.encode(bucket1, false, false, (short)-1, bucket1.size(), random, Compressor.DEFAULT_COMPRESSORDESCRIPTOR, false);
SSKBlock sskBlock1 = (SSKBlock) block1.getBlock();
//if it's different (e.g. different content, same key), there should be a KCE thrown
try {
store.put(sskBlock1, false, false);
assertTrue(false);
} catch (KeyCollisionException e) {
assertTrue(true);
}
// if overwrite is set, then no collision should be thrown
try {
store.put(sskBlock1, true, false);
assertTrue(true);
} catch (KeyCollisionException e) {
assertTrue(false);
}
ClientSSK key = block1.getClientKey();
pubkeyCache.cacheKey(sskBlock.getKey().getPubKeyHash(), sskBlock.getKey().getPubKey(), false, false, false, false, false);
// Check that it's in the cache, *not* the underlying store.
NodeSSK ssk = (NodeSSK) key.getNodeKey();
SSKBlock verify = store.fetch(ssk, false, false, false, false, null);
String data = decodeBlockSSK(verify, key);
assertEquals(test1, data);
if(useSlotFilter) {
// Check that it's in the cache