dissect.fve 4.4.dev1__tar.gz → 4.5.dev1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/PKG-INFO +2 -2
  2. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/crypto/_pycryptodome.py +5 -1
  3. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/luks/metadata.py +3 -21
  4. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect.fve.egg-info/PKG-INFO +2 -2
  5. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/pyproject.toml +22 -2
  6. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tox.ini +7 -10
  7. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/.git-blame-ignore-revs +0 -0
  8. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/.gitattributes +0 -0
  9. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/COPYRIGHT +0 -0
  10. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/LICENSE +0 -0
  11. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/MANIFEST.in +0 -0
  12. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/README.md +0 -0
  13. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/__init__.py +0 -0
  14. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/bde/__init__.py +0 -0
  15. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/bde/bde.py +0 -0
  16. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/bde/c_bde.py +0 -0
  17. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/bde/eow.py +0 -0
  18. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/bde/information.py +0 -0
  19. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/bde/keys.py +0 -0
  20. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/crypto/__init__.py +0 -0
  21. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/crypto/base.py +0 -0
  22. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/crypto/elephant.py +0 -0
  23. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/crypto/utils.py +0 -0
  24. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/exceptions.py +0 -0
  25. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/luks/__init__.py +0 -0
  26. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/luks/af.py +0 -0
  27. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/luks/c_luks.py +0 -0
  28. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/luks/luks.py +0 -0
  29. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/tools/__init__.py +0 -0
  30. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/tools/dd.py +0 -0
  31. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect.fve.egg-info/SOURCES.txt +0 -0
  32. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect.fve.egg-info/dependency_links.txt +0 -0
  33. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect.fve.egg-info/entry_points.txt +0 -0
  34. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect.fve.egg-info/requires.txt +0 -0
  35. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect.fve.egg-info/top_level.txt +0 -0
  36. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/setup.cfg +0 -0
  37. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/__init__.py +0 -0
  38. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/aes-xts_128.bin.gz +0 -0
  39. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/aes-xts_256.bin.gz +0 -0
  40. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/aes_128.bin.gz +0 -0
  41. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/aes_128_diffuser.bin.gz +0 -0
  42. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/aes_256.bin.gz +0 -0
  43. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/aes_256_diffuser.bin.gz +0 -0
  44. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/decrypted.bin.gz +0 -0
  45. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/eow_partial.bin.gz +0 -0
  46. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/recovery_key.bek +0 -0
  47. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/recovery_key.bin.gz +0 -0
  48. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/recovery_password.bin.gz +0 -0
  49. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/startup_key.bek +0 -0
  50. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/startup_key.bin.gz +0 -0
  51. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/suspended.bin.gz +0 -0
  52. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/vista.bin.gz +0 -0
  53. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/win7_partial.bin.gz +0 -0
  54. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks1/aes-ecb.bin.gz +0 -0
  55. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks1/sha1.bin.gz +0 -0
  56. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks2/aes-cbc-essiv.bin.gz +0 -0
  57. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks2/aes-cbc-plain.bin.gz +0 -0
  58. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks2/aes-ecb-pbkdf2.bin.gz +0 -0
  59. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks2/aes-ecb.bin.gz +0 -0
  60. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks2/aes-xts-plain64.bin.gz +0 -0
  61. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks2/multiple-slots.bin.gz +0 -0
  62. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_docs/Makefile +0 -0
  63. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_docs/conf.py +0 -0
  64. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_docs/index.rst +0 -0
  65. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_utils.py +0 -0
  66. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/conftest.py +0 -0
  67. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/test_bde.py +0 -0
  68. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/test_bde_eow_bitmap.py +0 -0
  69. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/test_crypto.py +0 -0
  70. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/test_luks.py +0 -0
  71. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/test_luks_kdf.py +0 -0
  72. {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/test_luks_metadata.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dissect.fve
3
- Version: 4.4.dev1
3
+ Version: 4.5.dev1
4
4
  Summary: A Dissect module implementing a parsers for full volume encryption implementations, currently Linux Unified Key Setup (LUKS1 and LUKS2) and Microsoft's Bitlocker Disk Encryption
5
5
  Author-email: Dissect Team <dissect@fox-it.com>
6
6
  License-Expression: AGPL-3.0-or-later
@@ -17,7 +17,7 @@ Classifier: Topic :: Internet :: Log Analysis
17
17
  Classifier: Topic :: Scientific/Engineering :: Information Analysis
18
18
  Classifier: Topic :: Security
19
19
  Classifier: Topic :: Utilities
20
- Requires-Python: ~=3.9
20
+ Requires-Python: >=3.10
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE
23
23
  License-File: COPYRIGHT
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import hashlib
4
4
  import platform
5
5
  import sys
6
- from typing import Any, Callable
6
+ from typing import TYPE_CHECKING, Any
7
7
 
8
8
  from Crypto.Cipher import AES
9
9
  from Crypto.Util import _raw_api
@@ -18,6 +18,10 @@ else:
18
18
  # On PyPy the opposite is true, and also just use this as the default fallback
19
19
  from Crypto.Util.strxor import strxor as xor
20
20
 
21
+
22
+ if TYPE_CHECKING:
23
+ from collections.abc import Callable
24
+
21
25
  POINTER_SIZE = 8 if sys.maxsize > 2**32 else 4
22
26
 
23
27
 
@@ -2,16 +2,9 @@ from __future__ import annotations
2
2
 
3
3
  import base64
4
4
  import json
5
- import sys
6
5
  from dataclasses import dataclass, field, fields
7
-
8
- if sys.version_info >= (3, 10):
9
- from types import UnionType # novermin
10
- else:
11
- # Python 3.9
12
- from typing import Union as UnionType
13
-
14
- from typing import Any, Optional, get_args, get_origin, get_type_hints
6
+ from types import UnionType
7
+ from typing import Any, get_args, get_origin, get_type_hints
15
8
 
16
9
  from dissect.fve.luks.c_luks import c_luks
17
10
 
@@ -45,7 +38,7 @@ class JsonItem:
45
38
  def _parse_type(type_: Any, value: str | int | dict | list) -> str | int | dict | list | bytes:
46
39
  result = None
47
40
 
48
- if type_ == Optional[type_]:
41
+ if type_ == type_ | None:
49
42
  result = JsonItem._parse_type(get_args(type_)[0], value) if value is not None else None
50
43
  elif get_origin(type_) is UnionType:
51
44
  for atype in get_args(type_):
@@ -241,14 +234,3 @@ class Metadata(JsonItem):
241
234
  )
242
235
 
243
236
  return Metadata(config, keyslots, digests, segments, tokens)
244
-
245
-
246
- # Backward compatibility with Python 3.9
247
- if sys.version_info < (3, 10):
248
- items = list(globals().values())
249
- for obj in items:
250
- if isinstance(obj, type) and issubclass(obj, JsonItem):
251
- for k, v in obj.__annotations__.items():
252
- if isinstance(v, str) and "|" in v:
253
- # Because we import Union as UnionType
254
- obj.__annotations__[k] = f"UnionType[{v.replace(' | ', ', ')}]"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dissect.fve
3
- Version: 4.4.dev1
3
+ Version: 4.5.dev1
4
4
  Summary: A Dissect module implementing a parsers for full volume encryption implementations, currently Linux Unified Key Setup (LUKS1 and LUKS2) and Microsoft's Bitlocker Disk Encryption
5
5
  Author-email: Dissect Team <dissect@fox-it.com>
6
6
  License-Expression: AGPL-3.0-or-later
@@ -17,7 +17,7 @@ Classifier: Topic :: Internet :: Log Analysis
17
17
  Classifier: Topic :: Scientific/Engineering :: Information Analysis
18
18
  Classifier: Topic :: Security
19
19
  Classifier: Topic :: Utilities
20
- Requires-Python: ~=3.9
20
+ Requires-Python: >=3.10
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE
23
23
  License-File: COPYRIGHT
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
  name = "dissect.fve"
7
7
  description = "A Dissect module implementing a parsers for full volume encryption implementations, currently Linux Unified Key Setup (LUKS1 and LUKS2) and Microsoft's Bitlocker Disk Encryption"
8
8
  readme = "README.md"
9
- requires-python = "~=3.9"
9
+ requires-python = ">=3.10"
10
10
  license = "AGPL-3.0-or-later"
11
11
  license-files = ["LICENSE", "COPYRIGHT"]
12
12
  authors = [
@@ -47,12 +47,32 @@ dev = [
47
47
  "dissect.util>=3.22.dev,<4.0.dev",
48
48
  ]
49
49
 
50
+ [dependency-groups]
51
+ test = [
52
+ "pytest",
53
+ ]
54
+ lint = [
55
+ "ruff==0.13.1",
56
+ "vermin",
57
+ ]
58
+ build = [
59
+ "build",
60
+ ]
61
+ debug = [
62
+ "ipdb",
63
+ ]
64
+ dev = [
65
+ {include-group = "test"},
66
+ {include-group = "lint"},
67
+ {include-group = "debug"},
68
+ ]
69
+
50
70
  [project.scripts]
51
71
  fve-dd = "dissect.fve.tools.dd:main"
52
72
 
53
73
  [tool.ruff]
54
74
  line-length = 120
55
- required-version = ">=0.12.0"
75
+ required-version = ">=0.13.1"
56
76
 
57
77
  [tool.ruff.format]
58
78
  docstring-code-format = true
@@ -4,7 +4,7 @@ envlist = lint, py3, pypy3
4
4
  # requires if they are not available on the host system. This requires the
5
5
  # locally installed tox to have a minimum version 3.3.0. This means the names
6
6
  # of the configuration options are still according to the tox 3.x syntax.
7
- minversion = 4.4.3
7
+ minversion = 4.27.0
8
8
  # This version of virtualenv will install setuptools version 68.2.2 and pip
9
9
  # 23.3.1. These versions fully support python projects defined only through a
10
10
  # pyproject.toml file (PEP-517/PEP-518/PEP-621). This pip version also support
@@ -24,27 +24,24 @@ commands =
24
24
 
25
25
  [testenv:build]
26
26
  package = skip
27
- deps =
28
- build
27
+ dependency_groups = build
29
28
  commands =
30
29
  pyproject-build
31
30
 
32
31
  [testenv:fix]
33
32
  package = skip
34
- deps =
35
- ruff==0.12.1
33
+ dependency_groups = lint
36
34
  commands =
37
- ruff format dissect tests
38
35
  ruff check --fix dissect tests
36
+ ruff format dissect tests
39
37
 
40
38
  [testenv:lint]
41
39
  package = skip
42
- deps =
43
- ruff==0.12.1
44
- vermin
40
+ dependency_groups = lint
45
41
  commands =
46
42
  ruff check dissect tests
47
- vermin -t=3.9- --no-tips --lint dissect tests
43
+ ruff format --check dissect tests
44
+ vermin -t=3.10- --no-tips --lint dissect tests
48
45
 
49
46
  [testenv:docs-build]
50
47
  allowlist_externals = make
File without changes
File without changes
File without changes
File without changes