Ejemplo n.º 1
0
        private static Wallet.AccountState DecodeAccountStateBlob(AccountStateBlob blob)
        {
            var cursor  = new CursorBuffer(blob.Blob.ToByteArray());
            var blobLen = cursor.Read32();

            var state = new Dictionary <string, byte[]>();

            for (int i = 0; i < blobLen; i++)
            {
                var keyLen    = cursor.Read32();
                var keyBuffer = new byte[keyLen];
                for (int j = 0; j < keyLen; j++)
                {
                    keyBuffer[j] = cursor.Read8();
                }

                var valueLen    = cursor.Read32();
                var valueBuffer = new byte[valueLen];
                for (int k = 0; k < valueLen; k++)
                {
                    valueBuffer[k] = cursor.Read8();
                }

                state[keyBuffer.ToHexString()] = valueBuffer;
            }

            return(Wallet.AccountState.FromBytes(state[Constant.PathValues.AccountStatePath]));
        }
Ejemplo n.º 2
0
        public static AccountState FromBytes(byte[] bytes)
        {
            var cursor = new CursorBuffer(bytes);

            var authenticationKeyLen = cursor.Read32();
            var authenticationKey    = cursor.ReadXBytes((int)authenticationKeyLen);
            var balance = cursor.Read64();
            var delegatedKeyRotationCapability = cursor.ReadBool();
            var delegatedWithdrawalCapability  = cursor.ReadBool();

            var receivedEventsCount = cursor.Read32();

            cursor.Read32(); // skip struct attribute sequence number
            var receivedEventsKeyLen = cursor.Read32();
            var receivedEventsKey    = cursor.ReadXBytes((int)receivedEventsKeyLen);

            var sentEventsCount = cursor.Read32();

            cursor.Read32(); // skip struct attribute sequence number
            var sentEventsKeyLen = cursor.Read32();
            var sentEventsKey    = cursor.ReadXBytes((int)sentEventsKeyLen);

            var sequenceNumber = cursor.Read64();

            var receivedEvents = new EventHandle(receivedEventsKey, receivedEventsCount);
            var sentEvents     = new EventHandle(sentEventsKey, sentEventsCount);

            return(new AccountState(authenticationKey, balance, receivedEvents, sentEvents, sequenceNumber, delegatedWithdrawalCapability, delegatedKeyRotationCapability));
        }
Ejemplo n.º 3
0
        public void ReadBool1()
        {
            var bytes    = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
            var cursor   = new CursorBuffer(bytes);
            var actual   = cursor.ReadBool();
            var expected = false;

            Assert.Equal(actual, expected);
        }
Ejemplo n.º 4
0
        public void Read64_LittleEndian()
        {
            var bytes  = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
            var cursor = new CursorBuffer(bytes, true);
            var actual = cursor.Read64();

            actual = cursor.Read64();
            var expected = 1157159078456920585UL;

            Assert.Equal(actual, expected);
        }
Ejemplo n.º 5
0
        public void Read64()
        {
            var bytes  = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
            var cursor = new CursorBuffer(bytes, false);
            var actual = cursor.Read64();

            actual = cursor.Read64();
            var expected = 651345242494996240UL;

            Assert.Equal(actual, expected);
        }
Ejemplo n.º 6
0
        public void Read8()
        {
            var bytes  = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
            var cursor = new CursorBuffer(bytes);
            var actual = cursor.Read8();

            actual = cursor.Read8();
            actual = cursor.Read8();
            var expected = 3;

            Assert.Equal(actual, expected);
        }
Ejemplo n.º 7
0
        public void ReadXBytes()
        {
            var bytes  = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
            var cursor = new CursorBuffer(bytes, 1, bytes.Length - 1);
            var actual = cursor.ReadXBytes(3);

            actual = cursor.ReadXBytes(3);
            actual = cursor.ReadXBytes(3);
            var expected = new byte[] { 8, 9, 10 };

            Assert.True(actual.SequenceEqual(expected));
        }
Ejemplo n.º 8
0
        public void Read32_LittleEndian()
        {
            var bytes  = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
            var cursor = new CursorBuffer(bytes, true);
            var actual = cursor.Read32();

            actual = cursor.Read32();
            actual = cursor.Read32();
            var expected = 202050057U;

            Assert.Equal(actual, expected);
        }
Ejemplo n.º 9
0
        public static AccountState FromBytes(byte[] bytes)
        {
            var cursor = new CursorBuffer(bytes);

            var authenticationKeyLen = cursor.Read32();
            var authenticationKey    = cursor.ReadXBytes((int)authenticationKeyLen);
            var balance = cursor.Read64();
            var delegatedWithdrawalCapability = cursor.ReadBool();
            var receivedEventsCount           = cursor.Read64();
            var sentEventsCount = cursor.Read64();
            var sequenceNumber  = cursor.Read64();

            return(new AccountState(authenticationKey, balance, receivedEventsCount, sentEventsCount, sequenceNumber, delegatedWithdrawalCapability));
        }