Exemplo n.º 1
0
        public SenderMessageKey RemoveSenderMessageKey(uint iteration)
        {
            LinkedList <StorageProtos.SenderKeyStateStructure.Types.SenderMessageKey>  keys     = new LinkedList <StorageProtos.SenderKeyStateStructure.Types.SenderMessageKey>(_senderKeyStateStructure.SenderMessageKeysList);
            IEnumerator <StorageProtos.SenderKeyStateStructure.Types.SenderMessageKey> iterator = keys.GetEnumerator();            // iterator();

            StorageProtos.SenderKeyStateStructure.Types.SenderMessageKey result = null;

            while (iterator.MoveNext())                                                                           // hastNext
            {
                StorageProtos.SenderKeyStateStructure.Types.SenderMessageKey senderMessageKey = iterator.Current; // next();

                if (senderMessageKey.Iteration == iteration)                                                      //senderMessageKey.getIteration()
                {
                    result = senderMessageKey;
                    keys.Remove(senderMessageKey);                     //iterator.remove();
                    break;
                }
            }

            _senderKeyStateStructure = _senderKeyStateStructure.ToBuilder()
                                       .ClearSenderMessageKeys()
                                       //.AddAllSenderMessageKeys(keys)
                                       .AddRangeSenderMessageKeys(keys)
                                       .Build();

            if (result != null)
            {
                return(new SenderMessageKey(result.Iteration, result.Seed.ToByteArray()));
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 2
0
        private SenderKeyState(uint id, uint iteration, byte[] chainKey,
                               IEcPublicKey signatureKeyPublic,
                               May <IEcPrivateKey> signatureKeyPrivate)
        {
            StorageProtos.SenderKeyStateStructure.Types.SenderChainKey senderChainKeyStructure =
                StorageProtos.SenderKeyStateStructure.Types.SenderChainKey.CreateBuilder()
                .SetIteration(iteration)
                .SetSeed(ByteString.CopyFrom(chainKey))
                .Build();

            StorageProtos.SenderKeyStateStructure.Types.SenderSigningKey.Builder signingKeyStructure =
                StorageProtos.SenderKeyStateStructure.Types.SenderSigningKey.CreateBuilder()
                .SetPublic(ByteString.CopyFrom(signatureKeyPublic.Serialize()));

            if (signatureKeyPrivate.HasValue)
            {
                signingKeyStructure.SetPrivate(ByteString.CopyFrom(signatureKeyPrivate.ForceGetValue().Serialize()));
            }

            _senderKeyStateStructure = StorageProtos.SenderKeyStateStructure.CreateBuilder()
                                       .SetSenderKeyId(id)
                                       .SetSenderChainKey(senderChainKeyStructure)
                                       .SetSenderSigningKey(signingKeyStructure)
                                       .Build();
        }
Exemplo n.º 3
0
        public void SetSenderChainKey(SenderChainKey chainKey)
        {
            StorageProtos.SenderKeyStateStructure.Types.SenderChainKey senderChainKeyStructure =
                StorageProtos.SenderKeyStateStructure.Types.SenderChainKey.CreateBuilder()
                .SetIteration(chainKey.GetIteration())
                .SetSeed(ByteString.CopyFrom(chainKey.GetSeed()))
                .Build();

            _senderKeyStateStructure = _senderKeyStateStructure.ToBuilder()
                                       .SetSenderChainKey(senderChainKeyStructure)
                                       .Build();
        }
Exemplo n.º 4
0
        public void AddSenderMessageKey(SenderMessageKey senderMessageKey)
        {
            StorageProtos.SenderKeyStateStructure.Types.SenderMessageKey senderMessageKeyStructure =
                StorageProtos.SenderKeyStateStructure.Types.SenderMessageKey.CreateBuilder()
                .SetIteration(senderMessageKey.GetIteration())
                .SetSeed(ByteString.CopyFrom(senderMessageKey.GetSeed()))
                .Build();

            StorageProtos.SenderKeyStateStructure.Builder builder = _senderKeyStateStructure.ToBuilder();
            builder.AddSenderMessageKeys(senderMessageKeyStructure);

            if (builder.SenderMessageKeysList.Count > MaxMessageKeys)
            {
                builder.SenderMessageKeysList.RemoveAt(0);
            }
            _senderKeyStateStructure = builder.Build();
        }
Exemplo n.º 5
0
 public SenderKeyState(StorageProtos.SenderKeyStateStructure senderKeyStateStructure)
 {
     _senderKeyStateStructure = senderKeyStateStructure;
 }