public static void TestPrematureEndOfFile(CryptoImplementation cryptoImplementation) { SetupAssembly.AssemblySetupCrypto(cryptoImplementation); V1DocumentHeaders headers = new V1DocumentHeaders(new Passphrase("passphrase"), 10); using (MemoryStream stream = new MemoryStream()) { headers.WriteWithoutHmac(stream); stream.Position = 0; using (V1AxCryptReader reader = new V1AxCryptReader(new LookAheadStream(stream))) { AxCryptItemType lastItemType = AxCryptItemType.Undefined; while (reader.Read()) { lastItemType = reader.CurrentItemType; } Assert.That(lastItemType, Is.EqualTo(AxCryptItemType.Data)); Assert.That(reader.CurrentItemType, Is.EqualTo(AxCryptItemType.Data)); reader.SetStartOfData(); Assert.That(reader.Read(), Is.False); Assert.That(reader.CurrentItemType, Is.EqualTo(AxCryptItemType.EndOfStream)); Assert.That(reader.Read(), Is.False); Assert.That(reader.CurrentItemType, Is.EqualTo(AxCryptItemType.EndOfStream)); } } }
/// <summary> /// Read the next item from the stream. /// </summary> /// <returns>true if there was a next item read, false if at end of stream.</returns> /// <exception cref="Axantum.AxCrypt.Core.AxCryptException">Any error except premature end of stream will throw.</exception> public virtual bool Read() { if (_disposed) { throw new ObjectDisposedException(GetType().FullName); } AxCryptItemType before = CurrentItemType; bool readOk = ReadInternal(); AxCryptItemType after = CurrentItemType; if (OS.Log.IsDebugEnabled) { OS.Log.LogDebug("AxCryptReader.Read() from type {0} to type {1} : {2}.".InvariantFormat(before, after, CurrentHeaderBlock == null ? "(None)" : CurrentHeaderBlock.GetType().ToString())); } return(readOk); }
public void SetCurrentItemType(AxCryptItemType itemType) { CurrentItemType = itemType; }