public static bool TryReadFrom(Stream inputStream, out OpenPgpPacketHeader readPacketHeader) { int firstByteRaw = inputStream.ReadByte(); if (firstByteRaw < 0) { readPacketHeader = null; return(false); } var firstByte = (byte)firstByteRaw; if ((firstByte & NewHeaderHighBits) == NewHeaderHighBits) { readPacketHeader = new OpenPgpPacketHeader(firstByte, inputStream); return(true); } if ((firstByte & OpenPgpOldFormatPacketHeader.OldHeaderHighBits) == OpenPgpOldFormatPacketHeader.OldHeaderHighBits) { readPacketHeader = new OpenPgpOldFormatPacketHeader(firstByte, inputStream); return(true); } readPacketHeader = null; return(false); }
public static IEnumerable <OpenPgpPacket> ReadAllPackets(Stream inputStream) { OpenPgpPacketHeader header; while (OpenPgpPacketHeader.TryReadFrom(inputStream, out header)) { long currentPosition = inputStream.Position; long afterPacket = currentPosition + header.Length; Type mappedType; if (_TagIdToType.TryGetValue(header.TagId, out mappedType)) { yield return(Activator.CreateInstance(mappedType, header, inputStream) as OpenPgpPacket); } else { yield return(new OpenPgpPacket(header, inputStream)); } if (header.Length >= 0) { inputStream.Seek(afterPacket, SeekOrigin.Begin); } } }
public ModificationDetectionCodeOpenPgpPacket(OpenPgpPacketHeader header, Stream inputStream) : base(header, inputStream) { var sha1Value = new byte[20]; if (inputStream.Read(sha1Value, 0, 20) != 20) { throw new CryptographicException(); } HashValue = sha1Value; }
public LiteralDataOpenPgpPacket(OpenPgpPacketHeader header, Stream inputStream) : base(header, inputStream) { var format = (char)inputStream.ReadByte(); var stringLength = inputStream.ReadByte(); var stringBytes = inputStream.CopySubsetToBytes(stringLength); FileName = Encoding.UTF8.GetString(stringBytes); FileDate = OpenPgpTimeField.Read(inputStream).Date; LiteralStream = new MemoryStream(); inputStream.CopySubsetTo(LiteralStream, StartOfNextPacketOffset - inputStream.Position); LiteralStream.Position = 0; }
public CompressedDataOpenPgpPacket(OpenPgpPacketHeader header, Stream inputStream) : base(header, inputStream) { int compressionAlgorithmId = inputStream.ReadByte(); CompressionAlgorithm = OpenPgpCompressionAlgorithm.GetCompressionAlgorithmById(compressionAlgorithmId); var decompressionStream = CompressionAlgorithm.Decompress(inputStream) as DeflateStream; DecompressedStream = new MemoryStream(); decompressionStream.CopyTo(DecompressedStream); DecompressedStream.Position = 0; }
public SymmetricallyEncryptedIntegrityProtectedDataOpenPgpPacket(OpenPgpPacketHeader header, Stream inputStream) : base(header, inputStream) { var foundByte = inputStream.ReadByte(); if (foundByte != ExpectedVersion) { throw new InvalidDataException(); } int encryptedDataLength = (int)header.Length - 1; // minus version byte var ms = new MemoryStream(encryptedDataLength); inputStream.CopySubsetTo(ms, encryptedDataLength); ms.Position = 0; EncryptedStream = ms; }
public SymmetricKeyEncryptedSessionKeyOpenPgpPacket(OpenPgpPacketHeader header, Stream inputStream) : base(header, inputStream) { int versionNumber = inputStream.ReadByte(); if (versionNumber != ExpectedVersion) { throw new InvalidDataException(); } Cipher = OpenPgpSymmetricCipher.GetCipher(inputStream.ReadByte()); StringToKeySpecifier = OpenPgpStringToKeySpecifier.ReadFrom(inputStream); if (inputStream.Position < StartOfNextPacketOffset) { throw new NotImplementedException(); } }
public SymmetricKeyEncryptedSessionKeyOpenPgpPacket(OpenPgpPacketHeader header, Stream inputStream) : base(header, inputStream) { int versionNumber = inputStream.ReadByte(); if(versionNumber != ExpectedVersion) { throw new InvalidDataException(); } Cipher = OpenPgpSymmetricCipher.GetCipher(inputStream.ReadByte()); StringToKeySpecifier = OpenPgpStringToKeySpecifier.ReadFrom(inputStream); if(inputStream.Position < StartOfNextPacketOffset) { throw new NotImplementedException(); } }
public LiteralDataOpenPgpPacket(OpenPgpPacketHeader header, Stream inputStream) : base(header, inputStream) { var format = (char) inputStream.ReadByte(); var stringLength = inputStream.ReadByte(); var stringBytes = inputStream.CopySubsetToBytes(stringLength); FileName = Encoding.UTF8.GetString(stringBytes); FileDate = OpenPgpTimeField.Read(inputStream).Date; LiteralStream = new MemoryStream(); inputStream.CopySubsetTo(LiteralStream, StartOfNextPacketOffset - inputStream.Position); LiteralStream.Position = 0; }
protected OpenPgpPacket(int tagId) { TagId = tagId; Header = new OpenPgpPacketHeader(tagId); }
internal OpenPgpPacket(OpenPgpPacketHeader header, Stream inputStream) : this(header.TagId) { _InputStream = inputStream; _StartOffset = inputStream.Position; Header = header; }
public SymmetricallyEncryptedIntegrityProtectedDataOpenPgpPacket(OpenPgpPacketHeader header, Stream inputStream) : base(header, inputStream) { var foundByte = inputStream.ReadByte(); if(foundByte != ExpectedVersion) { throw new InvalidDataException(); } int encryptedDataLength = (int) header.Length - 1; // minus version byte var ms = new MemoryStream(encryptedDataLength); inputStream.CopySubsetTo(ms, encryptedDataLength); ms.Position = 0; EncryptedStream = ms; }
public static bool TryReadFrom(Stream inputStream, out OpenPgpPacketHeader readPacketHeader) { int firstByteRaw = inputStream.ReadByte(); if(firstByteRaw < 0) { readPacketHeader = null; return false; } var firstByte = (byte) firstByteRaw; if((firstByte & NewHeaderHighBits) == NewHeaderHighBits) { readPacketHeader = new OpenPgpPacketHeader(firstByte, inputStream); return true; } if((firstByte & OpenPgpOldFormatPacketHeader.OldHeaderHighBits) == OpenPgpOldFormatPacketHeader.OldHeaderHighBits) { readPacketHeader = new OpenPgpOldFormatPacketHeader(firstByte, inputStream); return true; } readPacketHeader = null; return false; }
public ModificationDetectionCodeOpenPgpPacket(OpenPgpPacketHeader header, Stream inputStream) : base(header, inputStream) { var sha1Value = new byte[20]; if(inputStream.Read(sha1Value, 0, 20) != 20) { throw new CryptographicException(); } HashValue = sha1Value; }