/** Reference to Table */
private Table table;
- Slot(Table _table, long _seqnum, long _machineid, byte[] _prevhmac, byte[] _hmac) {
+ private long localSequenceNumber;
+
+ Slot(Table _table, long _seqnum, long _machineid, byte[] _prevhmac, byte[] _hmac, long _localSequenceNumber) {
seqnum = _seqnum;
machineid = _machineid;
prevhmac = _prevhmac;
seqnumlive = true;
freespace = SLOT_SIZE - getBaseSize();
table = _table;
+ localSequenceNumber = _localSequenceNumber;
}
- Slot(Table _table, long _seqnum, long _machineid, byte[] _prevhmac) {
- this(_table, _seqnum, _machineid, _prevhmac, null);
+ Slot(Table _table, long _seqnum, long _machineid, byte[] _prevhmac, long _localSequenceNumber) {
+ this(_table, _seqnum, _machineid, _prevhmac, null, _localSequenceNumber);
}
- Slot(Table _table, long _seqnum, long _machineid) {
- this(_table, _seqnum, _machineid, new byte[HMAC_SIZE], null);
+ Slot(Table _table, long _seqnum, long _machineid, long _localSequenceNumber) {
+ this(_table, _seqnum, _machineid, new byte[HMAC_SIZE], null, _localSequenceNumber);
}
byte[] getHMAC() {
long seqnum = bb.getLong();
long machineid = bb.getLong();
int numentries = bb.getInt();
- Slot slot = new Slot(table, seqnum, machineid, prevhmac, hmac);
+ Slot slot = new Slot(table, seqnum, machineid, prevhmac, hmac, -1);
for (int i = 0; i < numentries; i++) {
slot.addShallowEntry(Entry.decode(slot, bb));
return livecount > 0;
}
+ public byte[] getSlotCryptIV() {
+ ByteBuffer buffer = ByteBuffer.allocate(CloudComm.IV_SIZE);
+ buffer.putLong(machineid);
+ long localSequenceNumberShift = localSequenceNumber << 16;
+ buffer.putLong(localSequenceNumberShift);
+ return buffer.array();
+ }
+
public String toString() {
return "<" + getSequenceNumber() + ">";
}