Fixed Andriod version
[iotcloud.git] / version2 / src / Control / app / src / main / java / iotcloud / Slot.java
index ab0435963101341775976166c57a140363648c1d..153ef800c56881b380f131dda03c27a5dc1c934a 100644 (file)
@@ -36,7 +36,9 @@ class Slot implements Liveness {
        /** 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;
@@ -46,14 +48,15 @@ class Slot implements Liveness {
                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() {
@@ -112,7 +115,7 @@ class Slot implements Liveness {
                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));
@@ -216,6 +219,14 @@ class Slot implements Liveness {
                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() + ">";
        }