Example #1
0
    def test_rotation(self):
        # Initializing a key repository results in this many keys. We don't
        # support max_active_keys being set any lower.
        min_active_keys = 2

        # Simulate every rotation strategy up to "rotating once a week while
        # maintaining a year's worth of keys."
        for max_active_keys in six.moves.range(min_active_keys, 52 + 1):
            self.config_fixture.config(group='fernet_tokens',
                                       max_active_keys=max_active_keys)

            # Ensure that resetting the key repository always results in 2
            # active keys.
            self.useFixture(ksfixtures.KeyRepository(self.config_fixture))
            self.assertEqual(min_active_keys, self.key_repository_size)

            # Rotate the keys just enough times to fully populate the key
            # repository.
            for rotation in six.moves.range(max_active_keys - min_active_keys):
                fernet_utils.rotate_keys()
            self.assertEqual(max_active_keys, self.key_repository_size)

            # Rotate an additional number of times to ensure that we maintain
            # the desired number of active keys.
            for rotation in six.moves.range(10):
                fernet_utils.rotate_keys()
                self.assertEqual(self.key_repository_size, max_active_keys)
Example #2
0
    def test_rotation(self):
        # Initializing a key repository results in this many keys. We don't
        # support max_active_keys being set any lower.
        min_active_keys = 2

        # Simulate every rotation strategy up to "rotating once a week while
        # maintaining a year's worth of keys."
        for max_active_keys in six.moves.range(min_active_keys, 52 + 1):
            self.config_fixture.config(group='fernet_tokens',
                                       max_active_keys=max_active_keys)

            # Ensure that resetting the key repository always results in 2
            # active keys.
            self.useFixture(ksfixtures.KeyRepository(self.config_fixture))
            self.assertEqual(min_active_keys, self.key_repository_size)

            # Rotate the keys just enough times to fully populate the key
            # repository.
            for rotation in six.moves.range(max_active_keys - min_active_keys):
                fernet_utils.rotate_keys()
            self.assertEqual(max_active_keys, self.key_repository_size)

            # Rotate an additional number of times to ensure that we maintain
            # the desired number of active keys.
            for rotation in six.moves.range(10):
                fernet_utils.rotate_keys()
                self.assertEqual(self.key_repository_size, max_active_keys)
 def test_non_numeric_files(self):
     self.useFixture(ksfixtures.KeyRepository(self.config_fixture))
     evil_file = os.path.join(CONF.fernet_tokens.key_repository, '99.bak')
     with open(evil_file, 'w'):
         pass
     fernet_utils.rotate_keys()
     self.assertTrue(os.path.isfile(evil_file))
     keys = 0
     for x in os.listdir(CONF.fernet_tokens.key_repository):
         if x == '99.bak':
             continue
         keys += 1
     self.assertEqual(3, keys)
Example #4
0
 def test_non_numeric_files(self):
     self.useFixture(ksfixtures.KeyRepository(self.config_fixture))
     evil_file = os.path.join(CONF.fernet_tokens.key_repository, '99.bak')
     with open(evil_file, 'w'):
         pass
     fernet_utils.rotate_keys()
     self.assertTrue(os.path.isfile(evil_file))
     keys = 0
     for x in os.listdir(CONF.fernet_tokens.key_repository):
         if x == '99.bak':
             continue
         keys += 1
     self.assertEqual(3, keys)
    def test_rotation(self):
        # Initializing a key repository results in this many keys. We don't
        # support max_active_keys being set any lower.
        min_active_keys = 2

        # Simulate every rotation strategy up to "rotating once a week while
        # maintaining a year's worth of keys."
        for max_active_keys in range(min_active_keys, 52 + 1):
            self.config_fixture.config(group='fernet_tokens',
                                       max_active_keys=max_active_keys)

            # Ensure that resetting the key repository always results in 2
            # active keys.
            self.useFixture(ksfixtures.KeyRepository(self.config_fixture))

            # Validate the initial repository state.
            self.assertRepositoryState(expected_size=min_active_keys)

            # The repository should be initialized with a staged key (0) and a
            # primary key (1). The next key is just auto-incremented.
            exp_keys = [0, 1]
            next_key_number = exp_keys[-1] + 1  # keep track of next key
            self.assertEqual(exp_keys, self.keys)

            # Rotate the keys just enough times to fully populate the key
            # repository.
            for rotation in range(max_active_keys - min_active_keys):
                fernet_utils.rotate_keys()
                self.assertRepositoryState(expected_size=rotation + 3)

                exp_keys.append(next_key_number)
                next_key_number += 1
                self.assertEqual(exp_keys, self.keys)

            # We should have a fully populated key repository now.
            self.assertEqual(max_active_keys, self.key_repository_size)

            # Rotate an additional number of times to ensure that we maintain
            # the desired number of active keys.
            for rotation in range(10):
                fernet_utils.rotate_keys()
                self.assertRepositoryState(expected_size=max_active_keys)

                exp_keys.pop(1)
                exp_keys.append(next_key_number)
                next_key_number += 1
                self.assertEqual(exp_keys, self.keys)
Example #6
0
    def test_rotation(self):
        # Initializing a key repository results in this many keys. We don't
        # support max_active_keys being set any lower.
        min_active_keys = 2

        # Simulate every rotation strategy up to "rotating once a week while
        # maintaining a year's worth of keys."
        for max_active_keys in range(min_active_keys, 52 + 1):
            self.config_fixture.config(group='fernet_tokens',
                                       max_active_keys=max_active_keys)

            # Ensure that resetting the key repository always results in 2
            # active keys.
            self.useFixture(ksfixtures.KeyRepository(self.config_fixture))

            # Validate the initial repository state.
            self.assertRepositoryState(expected_size=min_active_keys)

            # The repository should be initialized with a staged key (0) and a
            # primary key (1). The next key is just auto-incremented.
            exp_keys = [0, 1]
            next_key_number = exp_keys[-1] + 1  # keep track of next key
            self.assertEqual(exp_keys, self.keys)

            # Rotate the keys just enough times to fully populate the key
            # repository.
            for rotation in range(max_active_keys - min_active_keys):
                fernet_utils.rotate_keys()
                self.assertRepositoryState(expected_size=rotation + 3)

                exp_keys.append(next_key_number)
                next_key_number += 1
                self.assertEqual(exp_keys, self.keys)

            # We should have a fully populated key repository now.
            self.assertEqual(max_active_keys, self.key_repository_size)

            # Rotate an additional number of times to ensure that we maintain
            # the desired number of active keys.
            for rotation in range(10):
                fernet_utils.rotate_keys()
                self.assertRepositoryState(expected_size=max_active_keys)

                exp_keys.pop(1)
                exp_keys.append(next_key_number)
                next_key_number += 1
                self.assertEqual(exp_keys, self.keys)
Example #7
0
    def main(cls):
        from keystone.token.providers.fernet import utils as fernet

        keystone_user_id, keystone_group_id = cls.get_user_group()
        if fernet.validate_key_repository(requires_write=True):
            fernet.rotate_keys(keystone_user_id, keystone_group_id)
Example #8
0
    def main(cls):
        from keystone.token.providers.fernet import utils as fernet

        keystone_user_id, keystone_group_id = cls.get_user_group()
        if fernet.validate_key_repository():
            fernet.rotate_keys(keystone_user_id, keystone_group_id)
Example #9
0
 def main(cls):
     keystone_user_id, keystone_group_id = cls.get_user_group()
     if fernet.validate_key_repository():
         fernet.rotate_keys(keystone_user_id, keystone_group_id)
Example #10
0
 def main(cls):
     keystone_user_id, keystone_group_id = cls.get_user_group()
     if fernet.validate_key_repository():
         fernet.rotate_keys(keystone_user_id, keystone_group_id)