<Type Name="ChallengeResponse" FullName="Mono.Security.Protocol.Ntlm.ChallengeResponse">
  <TypeSignature Language="C#" Value="public class ChallengeResponse : 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 Challenge Response mechanism for NTLM v1.</summary>
    <remarks>This requires access to cryptographic algorithm <see cref="T:System.Security.Cryptography.DES" /> and <see cref="T:Mono.Security.Cryptography.MD4" />.</remarks>
  </Docs>
  <Base>
    <BaseTypeName>System.Object</BaseTypeName>
  </Base>
  <Interfaces>
    <Interface>
      <InterfaceName>System.IDisposable</InterfaceName>
    </Interface>
  </Interfaces>
  <Attributes />
  <Members>
    <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="Dispose">
      <MemberSignature Language="C#" Value="public virtual void Dispose ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Release the resources held by the class.</summary>
        <remarks>There are no unmanaged resource held by this class (unless the cryptographic DES or MD4 objects use unmanaged resources). Dispose is used to ensure the instance can clean-up (zeroize) its informations.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public ChallengeResponse ();" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>Creates an empty challenge/response object.</summary>
        <returns>a <see cref="T:Mono.Security.Protocol.Ntlm.ChallengeResponse" /></returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public ChallengeResponse (string password, byte [] challenge);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="password" Type="System.String" />
        <Parameter Name="challenge" Type="System.Byte[]" />
      </Parameters>
      <Docs>
        <summary>Creates a challenge/response object with the specified password and challenge.</summary>
        <param name="password">a <see cref="T:System.String" /> representing the password.</param>
        <param name="challenge">an array of bytes representing the challenge (random numbers).</param>
        <returns>a <see cref="T:Mono.Security.Protocol.Ntlm.ChallengeResponse" /></returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Password">
      <MemberSignature Language="C#" Value="public string Password { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Set the password to calculate the response.</summary>
        <returns>null.</returns>
        <remarks>For security considerations get will always return null. Keep your own copy of the password if required.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Challenge">
      <MemberSignature Language="C#" Value="public byte [] Challenge { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Byte[]</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Set the challenge (random numbers) to calculate the response. </summary>
        <returns>null.</returns>
        <remarks>For security considerations get will always return null. Keep your own copy of the challenge if required.</remarks>
      </Docs>
    </Member>
    <Member MemberName="LM">
      <MemberSignature Language="C#" Value="public byte [] LM { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Byte[]</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Return the LAN Manager (LM) part of the response.</summary>
        <returns>a <see cref="T:System.Byte[]" /> containing the LAN Manager (LM) response.</returns>
        <remarks>
          <para>The LAN Manager response is calculated using DES two times. First time on the seven first characters of the password, then a second time on the last seven character of the password. This is why LAN Manager is historically limited to 14 characters passwords.</para>
          <para>As you can guess it is also weak because having a 8 characters password doesn't help much with such a design.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="NT">
      <MemberSignature Language="C#" Value="public byte [] NT { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Byte[]</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Return the NT part of the response.</summary>
        <returns>a <see cref="T:System.Byte[]" /> containing the NT response.</returns>
        <remarks>The NT response is calculated using MD4 on the Unicode representation of the password. Passwords of any size will be digested in a 128 bits value.</remarks>
      </Docs>
    </Member>
  </Members>
</Type>