Example #1
0
def type5_pw(password, salt=None):
    if not HAS_PASSLIB:
        raise AnsibleFilterError(
            'type5_pw filter requires PassLib library to be installed')

    if not isinstance(password, string_types):
        raise AnsibleFilterError(
            "type5_pw password input should be a string, but was given a input of %s"
            % (type(password).__name__))

    salt_chars = ansible_password._gen_candidate_chars(
        ['ascii_letters', 'digits', './'])
    if salt is not None and not isinstance(salt, string_types):
        raise AnsibleFilterError(
            "type5_pw salt input should be a string, but was given a input of %s"
            % (type(salt).__name__))
    elif not salt:
        salt = random_password(length=4, chars=salt_chars)
    elif not set(salt) <= set(salt_chars):
        raise AnsibleFilterError(
            "type5_pw salt used inproper characters, must be one of %s" %
            (salt_chars))

    encrypted_password = md5_crypt.encrypt(password, salt=salt)

    return encrypted_password
Example #2
0
    def test_gen_password(self):
        for testcase in old_style_params_data:
            params = testcase['params']
            candidate_chars = testcase['candidate_chars']
            params_chars_spec = password._gen_candidate_chars(params['chars'])
            password_string = password._random_password(length=params['length'],
                                                        chars=params_chars_spec)
            self.assertEquals(len(password_string),
                              params['length'],
                              msg='generated password=%s has length (%s) instead of expected length (%s)' %
                              (password_string, len(password_string), params['length']))

            for char in password_string:
                self.assertIn(char, candidate_chars,
                              msg='%s not found in %s from chars spect %s' %
                              (char, candidate_chars, params['chars']))
Example #3
0
    def test_gen_password(self):
        for testcase in old_style_params_data:
            params = testcase['params']
            candidate_chars = testcase['candidate_chars']
            params_chars_spec = password._gen_candidate_chars(params['chars'])
            password_string = password.random_password(length=params['length'],
                                                       chars=params_chars_spec)
            self.assertEquals(len(password_string),
                              params['length'],
                              msg='generated password=%s has length (%s) instead of expected length (%s)' %
                              (password_string, len(password_string), params['length']))

            for char in password_string:
                self.assertIn(char, candidate_chars,
                              msg='%s not found in %s from chars spect %s' %
                              (char, candidate_chars, params['chars']))
Example #4
0
 def _assert_gen_candidate_chars(self, testcase):
     expected_candidate_chars = testcase['candidate_chars']
     params = testcase['params']
     chars_spec = params['chars']
     res = password._gen_candidate_chars(chars_spec)
     self.assertEqual(res, expected_candidate_chars)
Example #5
0
 def _assert_gen_candidate_chars(self, testcase):
     expected_candidate_chars = testcase['candidate_chars']
     params = testcase['params']
     chars_spec = params['chars']
     res = password._gen_candidate_chars(chars_spec)
     self.assertEquals(res, expected_candidate_chars)