<Type Name="DiffieHellmanManaged" FullName="Mono.Security.Cryptography.DiffieHellmanManaged">
  <TypeSignature Language="C#" Value="public sealed class DiffieHellmanManaged : Mono.Security.Cryptography.DiffieHellman, IDisposable" Maintainer="auto" />
  <AssemblyInfo>
    <AssemblyName>Mono.Security</AssemblyName>
    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
    <AssemblyCulture>neutral</AssemblyCulture>
    <Attributes>
      <Attribute>
        <AttributeName>System.Resources.NeutralResourcesLanguageAttribute</AttributeName>
      </Attribute>
      <Attribute>
        <AttributeName>System.Runtime.InteropServices.ComVisibleAttribute</AttributeName>
      </Attribute>
      <Attribute>
        <AttributeName>System.CLSCompliantAttribute</AttributeName>
      </Attribute>
      <Attribute>
        <AttributeName>System.Resources.SatelliteContractVersionAttribute</AttributeName>
      </Attribute>
    </Attributes>
  </AssemblyInfo>
  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
  <Docs>
    <summary>Implements the Diffie-Hellman algorithm.</summary>
    <remarks>To be added</remarks>
  </Docs>
  <Base>
    <BaseTypeName>Mono.Security.Cryptography.DiffieHellman</BaseTypeName>
  </Base>
  <Interfaces>
    <Interface>
      <InterfaceName>System.IDisposable</InterfaceName>
    </Interface>
  </Interfaces>
  <Attributes />
  <Members>
    <Member MemberName="CreateKeyExchange">
      <MemberSignature Language="C#" Value="public override byte [] CreateKeyExchange ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Byte[]</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Creates the key exchange data.</summary>
        <returns>The key exchange data to be sent to the intended recipient.</returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="DecryptKeyExchange">
      <MemberSignature Language="C#" Value="public override byte [] DecryptKeyExchange (byte [] keyEx);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Byte[]</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="keyEx" Type="System.Byte[]" />
      </Parameters>
      <Docs>
        <summary>Extracts secret information from the key exchange data.</summary>
        <param name="keyEx">The key exchange data within which the shared key is hidden.</param>
        <returns>The shared key derived from the key exchange data.</returns>
        <remarks>To be added</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>
        <summary>To be added</summary>
        <param name="disposing">a <see cref="T:System.Boolean" /></param>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="ExportParameters">
      <MemberSignature Language="C#" Value="public override Mono.Security.Cryptography.DHParameters ExportParameters (bool includePrivateParameters);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Mono.Security.Cryptography.DHParameters</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="includePrivateParameters" Type="System.Boolean" />
      </Parameters>
      <Docs>
        <summary>Exports the DH parameters.</summary>
        <param name="includePrivateParameters">
          <b>True</b> to include private parameters; otherwise, <b>false</b>.</param>
        <returns>The parameters for DiffieHellman.</returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="ImportParameters">
      <MemberSignature Language="C#" Value="public override void ImportParameters (Mono.Security.Cryptography.DHParameters parameters);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="parameters" Type="Mono.Security.Cryptography.DHParameters" />
      </Parameters>
      <Docs>
        <summary>Imports the specified DH parameters.</summary>
        <param name="parameters">The parameters for DiffieHellman.</param>
        <remarks>A <see cref="T:System.Security.Cryptography.CryptographicException" /> is thrown if <paramref name="P" /> or <paramref name="G" /> is a null reference (<b>Nothing</b> in Visual Basic) -or- <paramref name="P" /> is not a prime number.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Finalize">
      <MemberSignature Language="C#" Value="protected override void Finalize ();" />
      <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=".ctor">
      <MemberSignature Language="C#" Value="public DiffieHellmanManaged ();" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>Initializes a new DiffieHellmanManaged instance.</summary>
        <returns>a <see cref="T:Mono.Security.Cryptography.DiffieHellmanManaged" /></returns>
        <remarks>The default length of the shared secret is 1024 bits.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public DiffieHellmanManaged (int bitLength, int l, Mono.Security.Cryptography.DHKeyGeneration method);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="bitLength" Type="System.Int32" />
        <Parameter Name="l" Type="System.Int32" />
        <Parameter Name="method" Type="Mono.Security.Cryptography.DHKeyGeneration" />
      </Parameters>
      <Docs>
        <summary>Initializes a new DiffieHellmanManaged instance.</summary>
        <param name="bitLength">The length, in bits, of the public P parameter.</param>
        <param name="l">The length, in bits, of the secret value X. This parameter can be set to 0 to use the default size.</param>
        <param name="method">One of the <see cref="T:Mono.Security.Cryptography.DHKeyGeneration" /> values.</param>
        <returns>a <see cref="T:Mono.Security.Cryptography.DiffieHellmanManaged" /></returns>
        <remarks>
          <para>The larger the bit length, the more secure the algorithm is. The default is 1024 bits. The minimum bit length is 128 bits.</para>
          <para>An <see cref="T:System.ArgumentException" /> is thrown if the specified bit length is invalid.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public DiffieHellmanManaged (byte [] p, byte [] g, byte [] x);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="p" Type="System.Byte[]" />
        <Parameter Name="g" Type="System.Byte[]" />
        <Parameter Name="x" Type="System.Byte[]" />
      </Parameters>
      <Docs>
        <summary>Initializes a new DiffieHellmanManaged instance.</summary>
        <param name="p">The P parameter of the Diffie-Hellman algorithm. This is a public parameter.</param>
        <param name="g">The G parameter of the Diffie-Hellman algorithm. This is a public parameter.</param>
        <param name="x">The X parameter of the Diffie-Hellman algorithm. This is a private parameter. If this parameters is a null reference (<b>Nothing</b> in Visual Basic), a secret value of the default size will be generated.</param>
        <returns>a <see cref="T:Mono.Security.Cryptography.DiffieHellmanManaged" /></returns>
        <remarks>
          <para>An <see cref="T:System.ArgumentNullException" /> is thrown if <paramref name="p" /> or <paramref name="g" /> is a null reference (<b>Nothing</b> in Visual Basic).</para>
          <para>A <see cref="T:System.Security.Cryptography.CryptographicException" /> is thrown if <paramref name="p" /> or <paramref name="g" /> is invalid.
</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public DiffieHellmanManaged (byte [] p, byte [] g, int l);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="p" Type="System.Byte[]" />
        <Parameter Name="g" Type="System.Byte[]" />
        <Parameter Name="l" Type="System.Int32" />
      </Parameters>
      <Docs>
        <summary>The P parameter of the Diffie-Hellman algorithm. This is a public parameter.</summary>
        <param name="p">The P parameter of the Diffie-Hellman algorithm. This is a public parameter.</param>
        <param name="g">The G parameter of the Diffie-Hellman algorithm. This is a public parameter.</param>
        <param name="l">The length, in bits, of the private value. If 0 is specified, the default value will be used.</param>
        <returns>a <see cref="T:Mono.Security.Cryptography.DiffieHellmanManaged" /></returns>
        <remarks>
          <para>An <see cref="T:System.ArgumentNullException" /> is thrown if <paramref name="p" /> or <paramref name="g" /> is a null reference (<b>Nothing</b> in Visual Basic).</para>
          <para>An <see cref="T:System.ArgumentException" /> if <paramref name="l" /> is invalid.</para>
          <para>A <see cref="T:System.Security.Cryptography.CryptographicException" /> is thrown if <paramref name="p" /> or <paramref name="g" /> is invalid.
</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="KeyExchangeAlgorithm">
      <MemberSignature Language="C#" Value="public override string KeyExchangeAlgorithm { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Gets the name of the key exchange algorithm.</summary>
        <returns>The name of the key exchange algorithm.</returns>
        <remarks>The PKCS#3 OID for DH key exchange is 1.2.840.113549.1.3</remarks>
      </Docs>
    </Member>
    <Member MemberName="SignatureAlgorithm">
      <MemberSignature Language="C#" Value="public override string SignatureAlgorithm { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Gets the name of the signature algorithm.</summary>
        <returns>The name of the signature algorithm.</returns>
        <remarks>Signature isn't applicable to DH, so a null reference is returned.</remarks>
      </Docs>
    </Member>
  </Members>
</Type>