<Type Name="CryptoStream" FullName="System.Security.Cryptography.CryptoStream">
  <TypeSignature Maintainer="auto" Language="C#" Value="public class CryptoStream : System.IO.Stream" />
  <AssemblyInfo>
    <AssemblyName>mscorlib</AssemblyName>
    <AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00]</AssemblyPublicKey>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the &lt;link location="node:gtk-sharp/programming/threads"&gt;Gtk# Thread Programming&lt;/link&gt; for details.</ThreadSafetyStatement>
  <Base>
    <BaseTypeName>System.IO.Stream</BaseTypeName>
  </Base>
  <Interfaces>
  </Interfaces>
  <Docs>
    <summary>A cryptographic stream class using transforms that can be chained on other streams.</summary>
    <remarks>
      <para>Multiple CryptoStream can be chained to do multiple cryptographic operations using a single Read or Write operation.</para>
      <example>
        <code lang="C#">
// we will be writing encrypted data to this file
FileStream fs = new File.OpenWrite ("data");

Rijndael aes = Rijndael.Create ();
CryptoStream cse = new CryptoStream (fs, aes.CreateEncryptor (), CryptoStreamMode.Write);

SHA1 hash = SHA1.Create ();
CryptoStream csh = new CryptoStream (cse, hash, CryptoStreamMode.Write);

byte[] data = Encoding.UTF8.GetBytes ("http://www.go-mono.com/");

// the data will first be hashed (csh), then encrypted (cse) and finally written to a file (fs)
csh.Write (data, 0, data.Length);
csh.FlushFinalBlock ();

// then we can display the hash (e.g. send it out-of-band)
byte[] hash = hash.Hash;
Console.WriteLine ("SHA1: {0}", BitConverter.ToString (hash));
  </code>
      </example>
    </remarks>
  </Docs>
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public CryptoStream (System.IO.Stream stream, System.Security.Cryptography.ICryptoTransform transform, System.Security.Cryptography.CryptoStreamMode mode);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="stream" Type="System.IO.Stream" />
        <Parameter Name="transform" Type="System.Security.Cryptography.ICryptoTransform" />
        <Parameter Name="mode" Type="System.Security.Cryptography.CryptoStreamMode" />
      </Parameters>
      <Docs>
        <param name="stream">To be added: an object of type 'IO.Stream'</param>
        <param name="transform">To be added: an object of type 'ICryptoTransform'</param>
        <param name="mode">To be added: an object of type 'CryptoStreamMode'</param>
        <summary>To be added</summary>
        <remarks>An <see cref="T:System.ArgumentException" /> will be thrown if
<list type="bullet"><item><term>The specified stream cannot be read (<see cref="T:System.IO.Stream" />.<see cref="P:System.IO.Stream.CanRead" />) and <see cref="T:System.Security.Cryptography.CryptoStreamMode" />.<see cref="E:System.Security.Cryptography.CryptoStreamMode.Read" /> is specified.</term></item><item><term>The specified stream cannot be written (<see cref="T:System.IO.Stream" />.<see cref="P:System.IO.Stream.CanWrite" />) and <see cref="T:System.Security.Cryptography.CryptoStreamMode" />.<see cref="E:System.Security.Cryptography.CryptoStreamMode.Write" /> is specified.</term></item></list></remarks>
      </Docs>
    </Member>
    <Member MemberName="CanRead">
      <MemberSignature Language="C#" Value="public override bool CanRead { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added</summary>
        <value>True if the CryptoStream was created with <see cref="T:System.Security.Cryptography.CryptoStreamMode" />.<see cref="E:System.Security.Cryptography.CryptoStreamMode.Read" />, false otherwise.</value>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="CanSeek">
      <MemberSignature Language="C#" Value="public override bool CanSeek { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added</summary>
        <value>Always false.</value>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="CanWrite">
      <MemberSignature Language="C#" Value="public override bool CanWrite { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added</summary>
        <value>True if the CryptoStream was created with <see cref="T:System.Security.Cryptography.CryptoStreamMode" />.<see cref="E:System.Security.Cryptography.CryptoStreamMode.Write" />, false otherwise.</value>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Clear">
      <MemberSignature Language="C#" Value="public void Clear ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added</summary>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Close">
      <MemberSignature Language="C#" Value="public override void Close ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added</summary>
        <remarks>This will call <see cref="M:System.Security.Cryptography.CryptoStream.FlushFinalBlock" /> if the CryptoStream was opened in <see cref="E:System.Security.Cryptography.CryptoStreamMode.Write" /> mode.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Dispose">
      <MemberSignature Language="C#" Value="protected override void Dispose (bool disposing);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="disposing" Type="System.Boolean" />
      </Parameters>
      <Docs>
        <param name="disposing">To be added: an object of type 'bool'</param>
        <summary>To be added</summary>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Finalize">
      <MemberSignature Language="C#" Value="~CryptoStream ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Flush">
      <MemberSignature Language="C#" Value="public override void Flush ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="FlushFinalBlock">
      <MemberSignature Language="C#" Value="public void FlushFinalBlock ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added</summary>
        <remarks>
          <para>
This method can only be called if the CryptoStream was created with <see cref="T:System.Security.Cryptography.CryptoStreamMode" />.<see cref="E:System.Security.Cryptography.CryptoStreamMode.Write" />. Calling this method more than one time will also result in a <see cref="T:System.NotSupportedException" />.
</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="Length">
      <MemberSignature Language="C#" Value="public override long Length { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Int64</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added</summary>
        <value>This property isn't supported on CryptoStream and will always throw a <see cref="T:System.NotSupportedException" />.</value>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Position">
      <MemberSignature Language="C#" Value="public override long Position { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Int64</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Read">
      <MemberSignature Language="C#" Value="public override int Read (byte[] buffer, int offset, int count);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="buffer" Type="System.Byte[]" />
        <Parameter Name="offset" Type="System.Int32" />
        <Parameter Name="count" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="buffer">To be added.</param>
        <param name="offset">To be added.</param>
        <param name="count">To be added.</param>
        <summary>To be added.</summary>
        <returns>To be added.</returns>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Seek">
      <MemberSignature Language="C#" Value="public override long Seek (long offset, System.IO.SeekOrigin origin);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int64</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="offset" Type="System.Int64" />
        <Parameter Name="origin" Type="System.IO.SeekOrigin" />
      </Parameters>
      <Docs>
        <param name="offset">To be added: an object of type 'long'</param>
        <param name="origin">To be added: an object of type 'IO.SeekOrigin'</param>
        <summary>To be added</summary>
        <returns>To be added: an object of type 'long'</returns>
        <remarks>This method isn't supported on CryptoStream and will always throw a <see cref="T:System.NotSupportedException" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="SetLength">
      <MemberSignature Language="C#" Value="public override void SetLength (long value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="value" Type="System.Int64" />
      </Parameters>
      <Docs>
        <param name="value">To be added: an object of type 'long'</param>
        <summary>To be added</summary>
        <remarks>This method isn't supported on CryptoStream and will always throw a <see cref="T:System.NotSupportedException" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Write">
      <MemberSignature Language="C#" Value="public override void Write (byte[] buffer, int offset, int count);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="buffer" Type="System.Byte[]" />
        <Parameter Name="offset" Type="System.Int32" />
        <Parameter Name="count" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="buffer">To be added.</param>
        <param name="offset">To be added.</param>
        <param name="count">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
  </Members>
  <Attributes>
    <Attribute>
      <AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName>
    </Attribute>
  </Attributes>
</Type>
