public static void TestClone() { IdTagHeaderBlock idTagHeaderBlock = new IdTagHeaderBlock("This is my tag!"); IdTagHeaderBlock cloned = (IdTagHeaderBlock)idTagHeaderBlock.Clone(); Assert.That(idTagHeaderBlock, Is.Not.SameAs(cloned), "The clone should not be the same reference."); Assert.That(cloned.IdTag, Is.EqualTo(idTagHeaderBlock.IdTag), "The clone should have the same id tag as the original."); }
private void ParseHeaderBlock(HeaderBlockType headerBlockType, byte[] dataBlock) { bool isFirst = CurrentItemType == AxCryptItemType.MagicGuid; CurrentItemType = AxCryptItemType.HeaderBlock; if (headerBlockType == HeaderBlockType.Preamble) { if (!isFirst) { throw new FileFormatException("Preamble can only be first.", ErrorStatus.FileFormatError); } CurrentHeaderBlock = new PreambleHeaderBlock(dataBlock); _sendDataToHmacStream = true; return; } else { if (isFirst) { throw new FileFormatException("Preamble must be first.", ErrorStatus.FileFormatError); } } switch (headerBlockType) { case HeaderBlockType.Version: CurrentHeaderBlock = new VersionHeaderBlock(dataBlock); break; case HeaderBlockType.KeyWrap1: CurrentHeaderBlock = new KeyWrap1HeaderBlock(dataBlock); break; case HeaderBlockType.KeyWrap2: CurrentHeaderBlock = new KeyWrap2HeaderBlock(dataBlock); break; case HeaderBlockType.IdTag: CurrentHeaderBlock = new IdTagHeaderBlock(dataBlock); break; case HeaderBlockType.Data: CurrentHeaderBlock = new DataHeaderBlock(dataBlock); break; case HeaderBlockType.FileNameInfo: CurrentHeaderBlock = new FileNameInfoHeaderBlock(dataBlock); break; case HeaderBlockType.EncryptionInfo: CurrentHeaderBlock = new EncryptionInfoHeaderBlock(dataBlock); break; case HeaderBlockType.CompressionInfo: CurrentHeaderBlock = new CompressionInfoHeaderBlock(dataBlock); break; case HeaderBlockType.FileInfo: CurrentHeaderBlock = new FileInfoHeaderBlock(dataBlock); break; case HeaderBlockType.Compression: CurrentHeaderBlock = new CompressionHeaderBlock(dataBlock); break; case HeaderBlockType.UnicodeFileNameInfo: CurrentHeaderBlock = new UnicodeFileNameInfoHeaderBlock(dataBlock); break; case HeaderBlockType.Encrypted: case HeaderBlockType.None: case HeaderBlockType.Any: throw new FileFormatException("Illegal header block type.", ErrorStatus.FileFormatError); default: CurrentHeaderBlock = new UnrecognizedHeaderBlock(headerBlockType, dataBlock); break; } if (_sendDataToHmacStream) { CurrentHeaderBlock.Write(_hmacBufferStream); } return; }
public override object Clone() { IdTagHeaderBlock block = new IdTagHeaderBlock((byte[])GetDataBlockBytesReference().Clone()); return(block); }
public override object Clone() { IdTagHeaderBlock block = new IdTagHeaderBlock((byte[])GetDataBlockBytesReference().Clone()); return block; }