from __future__ import absolute_import, division, print_function

from fastpbkdf2._fastpbkdf2 import ffi, lib


def pbkdf2_hmac(name, password, salt, rounds, dklen=None):
    if name not in ["sha1", "sha256", "sha512"]:
        raise ValueError(
            "Algorithm {} not supported. "
            "Please use sha1, sha256 or sha512".format(name)
        )

    algorithm = {
        "sha1": (lib.fastpbkdf2_hmac_sha1, 20),
        "sha256": (lib.fastpbkdf2_hmac_sha256, 32),
        "sha512": (lib.fastpbkdf2_hmac_sha512, 64),
    }

    out_length = dklen or algorithm[name][1]
    out = ffi.new("uint8_t[]", out_length)
    algorithm[name][0](
        password, len(password),
        salt, len(salt),
        rounds,
        out, out_length
    )

    return ffi.buffer(out)[:]

from __future__ import absolute_import, division, print_function

from fastpbkdf2._fastpbkdf2 import ffi, lib


def pbkdf2_hmac(name, password, salt, rounds, dklen=None):
    if name not in ["sha1", "sha256", "sha512"]:
        raise ValueError("unsupported hash type")

    algorithm = {
        "sha1": (lib.fastpbkdf2_hmac_sha1, 20),
        "sha256": (lib.fastpbkdf2_hmac_sha256, 32),
        "sha512": (lib.fastpbkdf2_hmac_sha512, 64),
    }

    out_length = dklen or algorithm[name][1]
    out = ffi.new("uint8_t[]", out_length)
    algorithm[name][0](
        password, len(password),
        salt, len(salt),
        rounds,
        out, out_length
    )

    return ffi.buffer(out)[:]

Change exception message to be same as stdlib.
Change exception message to be same as stdlib.

  from __future__ import absolute_import, division, print_function
  
  from fastpbkdf2._fastpbkdf2 import ffi, lib
  
  
  def pbkdf2_hmac(name, password, salt, rounds, dklen=None):
      if name not in ["sha1", "sha256", "sha512"]:
+         raise ValueError("unsupported hash type")
-         raise ValueError(
-             "Algorithm {} not supported. "
-             "Please use sha1, sha256 or sha512".format(name)
-         )
  
      algorithm = {
          "sha1": (lib.fastpbkdf2_hmac_sha1, 20),
          "sha256": (lib.fastpbkdf2_hmac_sha256, 32),
          "sha512": (lib.fastpbkdf2_hmac_sha512, 64),
      }
  
      out_length = dklen or algorithm[name][1]
      out = ffi.new("uint8_t[]", out_length)
      algorithm[name][0](
          password, len(password),
          salt, len(salt),
          rounds,
          out, out_length
      )
  
      return ffi.buffer(out)[:]
  
Change exception message to be same as stdlib.
## Code Before:
from __future__ import absolute_import, division, print_function

from fastpbkdf2._fastpbkdf2 import ffi, lib


def pbkdf2_hmac(name, password, salt, rounds, dklen=None):
    if name not in ["sha1", "sha256", "sha512"]:
        raise ValueError(
            "Algorithm {} not supported. "
            "Please use sha1, sha256 or sha512".format(name)
        )

    algorithm = {
        "sha1": (lib.fastpbkdf2_hmac_sha1, 20),
        "sha256": (lib.fastpbkdf2_hmac_sha256, 32),
        "sha512": (lib.fastpbkdf2_hmac_sha512, 64),
    }

    out_length = dklen or algorithm[name][1]
    out = ffi.new("uint8_t[]", out_length)
    algorithm[name][0](
        password, len(password),
        salt, len(salt),
        rounds,
        out, out_length
    )

    return ffi.buffer(out)[:]

## Instruction:
Change exception message to be same as stdlib.
## Code After:
from __future__ import absolute_import, division, print_function

from fastpbkdf2._fastpbkdf2 import ffi, lib


def pbkdf2_hmac(name, password, salt, rounds, dklen=None):
    if name not in ["sha1", "sha256", "sha512"]:
        raise ValueError("unsupported hash type")

    algorithm = {
        "sha1": (lib.fastpbkdf2_hmac_sha1, 20),
        "sha256": (lib.fastpbkdf2_hmac_sha256, 32),
        "sha512": (lib.fastpbkdf2_hmac_sha512, 64),
    }

    out_length = dklen or algorithm[name][1]
    out = ffi.new("uint8_t[]", out_length)
    algorithm[name][0](
        password, len(password),
        salt, len(salt),
        rounds,
        out, out_length
    )

    return ffi.buffer(out)[:]
