<Type Name="SymmetricAlgorithm" FullName="System.Security.Cryptography.SymmetricAlgorithm">
  <TypeSignature Maintainer="auto" Language="C#" Value="public abstract class SymmetricAlgorithm : IDisposable" />
  <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.Object</BaseTypeName>
  </Base>
  <Interfaces>
    <Interface>
      <InterfaceName>System.IDisposable</InterfaceName>
    </Interface>
  </Interfaces>
  <Docs>
    <summary>Abstract base class for all cryptographic symmetric algorithms. Available algorithms include:

<list type="bullet"><item><term><see cref="T:System.Security.Cryptography.DES" /></term></item><item><term><see cref="T:System.Security.Cryptography.RC2" /></term></item><item><term><see cref="T:System.Security.Cryptography.Rijndael" /></term></item><item><term><see cref="T:System.Security.Cryptography.TripleDES" /></term></item></list></summary>
    <remarks>To be added</remarks>
  </Docs>
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected SymmetricAlgorithm ();" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>Called from constructor of derived class.</summary>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="BlockSize">
      <MemberSignature Language="C#" Value="public virtual int BlockSize { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The block size of the cryptographic operation in bits.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="BlockSizeValue">
      <MemberSignature Language="C#" Value="protected int BlockSizeValue;" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>The block size of the cryptographic operation in bits.</summary>
        <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>Zeroize sensitive informations inside the algorithm implementation.</summary>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Create">
      <MemberSignature Language="C#" Value="public static System.Security.Cryptography.SymmetricAlgorithm Create ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Cryptography.SymmetricAlgorithm</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Creates the default implementation of the default symmetric algorithm (<see cref="T:System.Security.Cryptography.Rijndael" />).</summary>
        <returns>To be added: an object of type 'SymmetricAlgorithm'</returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Create">
      <MemberSignature Language="C#" Value="public static System.Security.Cryptography.SymmetricAlgorithm Create (string algName);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Cryptography.SymmetricAlgorithm</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="algName" Type="System.String" />
      </Parameters>
      <Docs>
        <param name="algName">Specifies which derived class to create.</param>
        <summary>Creates a specific implementation of the given symmetric algorithm.</summary>
        <returns>To be added: an object of type 'SymmetricAlgorithm'</returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="CreateDecryptor">
      <MemberSignature Language="C#" Value="public virtual System.Security.Cryptography.ICryptoTransform CreateDecryptor ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Cryptography.ICryptoTransform</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Gets an Decryptor transform object to work with a CryptoStream.</summary>
        <returns>To be added: an object of type 'ICryptoTransform'</returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="CreateDecryptor">
      <MemberSignature Language="C#" Value="public abstract System.Security.Cryptography.ICryptoTransform CreateDecryptor (byte[] rgbKey, byte[] rgbIV);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Cryptography.ICryptoTransform</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="rgbKey" Type="System.Byte[]" />
        <Parameter Name="rgbIV" Type="System.Byte[]" />
      </Parameters>
      <Docs>
        <param name="rgbKey">To be added: an object of type 'byte []'</param>
        <param name="rgbIV">To be added: an object of type 'byte []'</param>
        <summary>Gets an Decryptor transform object to work with a CryptoStream.</summary>
        <returns>To be added: an object of type 'ICryptoTransform'</returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="CreateEncryptor">
      <MemberSignature Language="C#" Value="public virtual System.Security.Cryptography.ICryptoTransform CreateEncryptor ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Cryptography.ICryptoTransform</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Gets an Encryptor transform object to work with a CryptoStream.</summary>
        <returns>To be added: an object of type 'ICryptoTransform'</returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="CreateEncryptor">
      <MemberSignature Language="C#" Value="public abstract System.Security.Cryptography.ICryptoTransform CreateEncryptor (byte[] rgbKey, byte[] rgbIV);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Cryptography.ICryptoTransform</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="rgbKey" Type="System.Byte[]" />
        <Parameter Name="rgbIV" Type="System.Byte[]" />
      </Parameters>
      <Docs>
        <param name="rgbKey">To be added: an object of type 'byte []'</param>
        <param name="rgbIV">To be added: an object of type 'byte []'</param>
        <summary>Gets an Encryptor transform object to work with a CryptoStream.</summary>
        <returns>To be added: an object of type 'ICryptoTransform'</returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Dispose">
      <MemberSignature Language="C#" Value="protected virtual 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="FeedbackSize">
      <MemberSignature Language="C#" Value="public virtual int FeedbackSize { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The feedback size of the cryptographic operation in bits.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="FeedbackSizeValue">
      <MemberSignature Language="C#" Value="protected int FeedbackSizeValue;" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>The feedback size of the cryptographic operation in bits.</summary>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Finalize">
      <MemberSignature Language="C#" Value="~SymmetricAlgorithm ();" />
      <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="GenerateIV">
      <MemberSignature Language="C#" Value="public abstract void GenerateIV ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Generate a new initialization vector (IV) for the algorithm.</summary>
        <remarks>Used to generate an inital vector if none is specified.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GenerateKey">
      <MemberSignature Language="C#" Value="public abstract void GenerateKey ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Generate a new secret key for the algorithm.</summary>
        <remarks>Used to generate a random key if none is specified.</remarks>
      </Docs>
    </Member>
    <Member MemberName="IV">
      <MemberSignature Language="C#" Value="public virtual byte[] IV { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Byte[]</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The initialization vector (IV) for the symmetric algorithm.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="IVValue">
      <MemberSignature Language="C#" Value="protected byte[] IVValue;" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Byte[]</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>The initialization vector (IV) for the symmetric algorithm.</summary>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Key">
      <MemberSignature Language="C#" Value="public virtual byte[] Key { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Byte[]</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The secret key for the symmetric algorithm.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="KeySize">
      <MemberSignature Language="C#" Value="public virtual int KeySize { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The size of the secret key used by the symmetric algorithm in bits.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="KeySizeValue">
      <MemberSignature Language="C#" Value="protected int KeySizeValue;" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>The size of the secret key used by the symmetric algorithm in bits.</summary>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="KeyValue">
      <MemberSignature Language="C#" Value="protected byte[] KeyValue;" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Byte[]</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>The secret key for the symmetric algorithm.</summary>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="LegalBlockSizes">
      <MemberSignature Language="C#" Value="public virtual System.Security.Cryptography.KeySizes[] LegalBlockSizes { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Cryptography.KeySizes[]</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Specifies the block sizes that are supported by the symmetric algorithm. </summary>
        <value>To be added: an object of type 'KeySizes []'</value>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="LegalBlockSizesValue">
      <MemberSignature Language="C#" Value="protected System.Security.Cryptography.KeySizes[] LegalBlockSizesValue;" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Cryptography.KeySizes[]</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Specifies the block sizes that are supported by the symmetric algorithm.</summary>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="LegalKeySizes">
      <MemberSignature Language="C#" Value="public virtual System.Security.Cryptography.KeySizes[] LegalKeySizes { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Cryptography.KeySizes[]</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Specifies the key sizes that are supported by the symmetric algorithm.</summary>
        <value>To be added: an object of type 'KeySizes []'</value>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="LegalKeySizesValue">
      <MemberSignature Language="C#" Value="protected System.Security.Cryptography.KeySizes[] LegalKeySizesValue;" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Cryptography.KeySizes[]</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Specifies the key sizes that are supported by the symmetric algorithm.</summary>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Mode">
      <MemberSignature Language="C#" Value="public virtual System.Security.Cryptography.CipherMode Mode { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Cryptography.CipherMode</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Represents the cipher mode used in the symmetric algorithm.</summary>
        <value>To be added.</value>
        <remarks>Default mode of operation is <see cref="E:System.Security.Cryptography.CipherMode.CBC" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="ModeValue">
      <MemberSignature Language="C#" Value="protected System.Security.Cryptography.CipherMode ModeValue;" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Cryptography.CipherMode</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Represents the cipher mode used in the symmetric algorithm.</summary>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Padding">
      <MemberSignature Language="C#" Value="public virtual System.Security.Cryptography.PaddingMode Padding { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Cryptography.PaddingMode</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Represents the padding mode used in the symmetric algorithm. </summary>
        <value>To be added.</value>
        <remarks>Default padding mode is <see cref="E:System.Security.Cryptography.PaddingMode.Pkcs7" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="PaddingValue">
      <MemberSignature Language="C#" Value="protected System.Security.Cryptography.PaddingMode PaddingValue;" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Cryptography.PaddingMode</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Represents the padding mode used in the symmetric algorithm.</summary>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="System.IDisposable.Dispose">
      <MemberSignature Language="C#" Value="void IDisposable.Dispose ();" />
      <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="ValidKeySize">
      <MemberSignature Language="C#" Value="public bool ValidKeySize (int bitLength);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="bitLength" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="bitLength">the given keyLength</param>
        <summary>Checks wether the given keyLength is valid for the current algorithm.</summary>
        <returns>True if the key length is valid for the algorithm, false otherwise.</returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
  </Members>
  <Attributes>
    <Attribute>
      <AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName>
    </Attribute>
  </Attributes>
</Type>
