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); } }
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(); }
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(); }
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(); }
public SenderKeyState(StorageProtos.SenderKeyStateStructure senderKeyStateStructure) { _senderKeyStateStructure = senderKeyStateStructure; }