diff --git a/src/veracrypt/veracrypt.py b/src/veracrypt/veracrypt.py index 1bfb69b..382cdb9 100644 --- a/src/veracrypt/veracrypt.py +++ b/src/veracrypt/veracrypt.py @@ -110,6 +110,21 @@ def _validate_options(self, options: Optional[List[str]], context: str) -> None: f"{context} options must be a list of strings when provided." ) + def _validate_keyfiles( + self, keyfiles: Optional[List[str]], context: str + ) -> None: + """Validate keyfile paths passed into public methods.""" + if keyfiles is None: + return + if not isinstance(keyfiles, list) or not all( + isinstance(item, str) for item in keyfiles + ): + raise ValueError( + f"{context} keyfiles must be a list of strings when provided." + ) + for keyfile in keyfiles: + self._check_path(keyfile) + @staticmethod def _mask_password_in_args(args: List[str], password: str, index: int) -> None: """Safely mask a password in a command args list.""" @@ -338,6 +353,7 @@ def create_volume( """ self.logger.debug("Creating volume") self._validate_options(options, "create_volume") + self._validate_keyfiles(keyfiles, "create_volume") if self.os_name == "Windows": cmd = self._create_win(