title: MD4 hashlib support in Python 3.8
body: <p>I am trying to implement a soap client for a server that uses NTLM authentication. The libraries that I use (requests-ntlm2 which relies on ntlm-auth) implement the MD4 algorithm that lies in the core of the NTLM protocol via the standard library's hashlib.</p>
  <p>Although hashlib seems to support MD4:</p>
  <pre><code>&gt;&gt;&gt; import hashlib
  &gt;&gt;&gt; hashlib.algorithms_available
  {'md5-sha1', 'md4', 'shake_128', 'md5', 'blake2s', 'sha3_512', 'ripemd160', 'sha512', 'mdc2', 'blake2b', 'sha3_256', 'sha3_224', 'sha512_224', 'sha1', 'sha384', 'sha256', 'sha224', 'whirlpool', 'sha512_256', 'sha3_384', 'shake_256', 'sm3'}
  &gt;&gt;&gt;
  </code></pre>
  <p>and so does the openssl library in my system:</p>
  <pre><code>(victory) C:\code\python\services&gt;openssl
  help:
  [...]
  Message Digest commands (see the `dgst' command for more details)
  blake2b512        blake2s256        md4               md5
  mdc2              rmd160            sha1              sha224
  sha256            sha3-224          sha3-256          sha3-384
  sha3-512          sha384            sha512            sha512-224
  sha512-256        shake128          shake256          sm3
  [...]
  </code></pre>
  <p>when the authentication tries to run python produces an <strong>ValueError: unsupported hash type md4</strong> error. Here is the relevant part of the traceback:</p>
  <pre><code>C:\ProgramData\Miniconda3\envs\victory\lib\site-packages\ntlm_auth\compute_hash.py in _ntowfv1(password)
      165         return nt_hash
      166 
  --&gt; 167     digest = hashlib.new('md4', password.encode('utf-16-le')).digest()
      168 
      169     return digest
  
  C:\ProgramData\Miniconda3\envs\victory\lib\hashlib.py in __hash_new(name, data, **kwargs)
      161         # This allows for SHA224/256 and SHA384/512 support even though
      162         # the OpenSSL library prior to 0.9.8 doesn't provide them.
  --&gt; 163         return __get_builtin_constructor(name)(data)
      164 
      165 
  
  C:\ProgramData\Miniconda3\envs\victory\lib\hashlib.py in __get_builtin_constructor(name)
      118         return constructor
      119 
  --&gt; 120     raise ValueError('unsupported hash type ' + name)
      121 
      122 
  
  ValueError: unsupported hash type md4
  </code></pre>
  <p>Even when I try to merely call the MD4 from hashlib, I get the same result:</p>
  <pre><code>&gt;&gt;&gt; import hashlib
  &gt;&gt;&gt; hashlib.new('md4')
  Traceback (most recent call last):
    File &quot;C:\ProgramData\Miniconda3\envs\victory\lib\hashlib.py&quot;, line 157, in __hash_new
      return _hashlib.new(name, data)
  ValueError: [digital envelope routines] initialization error
  
  During handling of the above exception, another exception occurred:
  
  Traceback (most recent call last):
    File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;
    File &quot;C:\ProgramData\Miniconda3\envs\victory\lib\hashlib.py&quot;, line 163, in __hash_new
      return __get_builtin_constructor(name)(data)
    File &quot;C:\ProgramData\Miniconda3\envs\victory\lib\hashlib.py&quot;, line 120, in __get_builtin_constructor
      raise ValueError('unsupported hash type ' + name)
  ValueError: unsupported hash type md4
  </code></pre>
  <p>Any insights about what's going on and/or any help would be immensely appreciated.</p>