ledgered 0.4.2.dev8__py3-none-any.whl → 0.5.1.dev3__py3-none-any.whl
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.
- ledgered/__version__.py +2 -2
- ledgered/binary.py +78 -0
- ledgered/manifest/app.py +1 -1
- ledgered/manifest/constants.py +1 -1
- ledgered/manifest/manifest.py +1 -1
- ledgered/manifest/tests.py +1 -1
- ledgered/manifest/use_cases.py +1 -1
- {ledgered-0.4.2.dev8.dist-info → ledgered-0.5.1.dev3.dist-info}/METADATA +2 -1
- ledgered-0.5.1.dev3.dist-info/RECORD +20 -0
- {ledgered-0.4.2.dev8.dist-info → ledgered-0.5.1.dev3.dist-info}/WHEEL +1 -1
- {ledgered-0.4.2.dev8.dist-info → ledgered-0.5.1.dev3.dist-info}/entry_points.txt +1 -0
- ledgered-0.4.2.dev8.dist-info/RECORD +0 -19
- /ledgered/{manifest/types.py → serializers.py} +0 -0
- {ledgered-0.4.2.dev8.dist-info → ledgered-0.5.1.dev3.dist-info}/LICENSE +0 -0
- {ledgered-0.4.2.dev8.dist-info → ledgered-0.5.1.dev3.dist-info}/top_level.txt +0 -0
ledgered/__version__.py
CHANGED
|
@@ -12,5 +12,5 @@ __version__: str
|
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
|
13
13
|
version_tuple: VERSION_TUPLE
|
|
14
14
|
|
|
15
|
-
__version__ = version = '0.
|
|
16
|
-
__version_tuple__ = version_tuple = (0,
|
|
15
|
+
__version__ = version = '0.5.1.dev3'
|
|
16
|
+
__version_tuple__ = version_tuple = (0, 5, 1, 'dev3')
|
ledgered/binary.py
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from argparse import ArgumentParser
|
|
3
|
+
from dataclasses import asdict, dataclass
|
|
4
|
+
from elftools.elf.elffile import ELFFile
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from typing import Optional, Union
|
|
7
|
+
|
|
8
|
+
from ledgered.serializers import Jsonable
|
|
9
|
+
|
|
10
|
+
LEDGER_PREFIX = "ledger."
|
|
11
|
+
DEFAULT_GRAPHICS = "bagl"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass
|
|
15
|
+
class Sections(Jsonable):
|
|
16
|
+
api_level: Optional[str] = None
|
|
17
|
+
app_name: Optional[str] = None
|
|
18
|
+
app_version: Optional[str] = None
|
|
19
|
+
sdk_graphics: str = DEFAULT_GRAPHICS
|
|
20
|
+
sdk_hash: Optional[str] = None
|
|
21
|
+
sdk_name: Optional[str] = None
|
|
22
|
+
sdk_version: Optional[str] = None
|
|
23
|
+
target: Optional[str] = None
|
|
24
|
+
target_id: Optional[str] = None
|
|
25
|
+
target_name: Optional[str] = None
|
|
26
|
+
|
|
27
|
+
def __str__(self) -> str:
|
|
28
|
+
return "\n".join(f"{key} {value}" for key, value in sorted(asdict(self).items()))
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class LedgerBinaryApp:
|
|
32
|
+
|
|
33
|
+
def __init__(self, binary_path: Union[str, Path]):
|
|
34
|
+
if isinstance(binary_path, str):
|
|
35
|
+
binary_path = Path(binary_path)
|
|
36
|
+
self._path = binary_path = binary_path.resolve()
|
|
37
|
+
logging.info("Parsing binary '%s'", self._path)
|
|
38
|
+
with self._path.open("rb") as filee:
|
|
39
|
+
sections = {
|
|
40
|
+
s.name.replace(LEDGER_PREFIX, ""): s.data().decode()
|
|
41
|
+
for s in ELFFile(filee).iter_sections() if LEDGER_PREFIX in s.name
|
|
42
|
+
}
|
|
43
|
+
self._sections = Sections(**sections)
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def sections(self) -> Sections:
|
|
47
|
+
return self._sections
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def set_parser() -> ArgumentParser:
|
|
51
|
+
parser = ArgumentParser(prog="ledger-binary",
|
|
52
|
+
description="Utilitary to parse Ledger embedded application ELF file "
|
|
53
|
+
"and output metadatas")
|
|
54
|
+
parser.add_argument('-v', '--verbose', action='count', default=0)
|
|
55
|
+
parser.add_argument("binary", type=Path, help="The ledger embedded application ELF file")
|
|
56
|
+
parser.add_argument("-j",
|
|
57
|
+
"--json",
|
|
58
|
+
required=False,
|
|
59
|
+
action="store_true",
|
|
60
|
+
help="outputs as JSON rather than text")
|
|
61
|
+
return parser
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def main() -> None:
|
|
65
|
+
args = set_parser().parse_args()
|
|
66
|
+
assert args.binary.is_file(), f"'{args.binary.resolve()}' does not appear to be a file."
|
|
67
|
+
|
|
68
|
+
# verbosity
|
|
69
|
+
if args.verbose == 1:
|
|
70
|
+
logging.root.setLevel(logging.INFO)
|
|
71
|
+
elif args.verbose > 1:
|
|
72
|
+
logging.root.setLevel(logging.DEBUG)
|
|
73
|
+
|
|
74
|
+
app = LedgerBinaryApp(args.binary)
|
|
75
|
+
if args.json:
|
|
76
|
+
print(app.sections.json)
|
|
77
|
+
else:
|
|
78
|
+
print(app.sections)
|
ledgered/manifest/app.py
CHANGED
ledgered/manifest/constants.py
CHANGED
ledgered/manifest/manifest.py
CHANGED
|
@@ -4,10 +4,10 @@ from dataclasses import dataclass
|
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
from typing import Dict, IO, Optional, Union
|
|
6
6
|
|
|
7
|
+
from ledgered.serializers import Jsonable
|
|
7
8
|
from .app import AppConfig
|
|
8
9
|
from .constants import MANIFEST_FILE_NAME
|
|
9
10
|
from .tests import TestsConfig
|
|
10
|
-
from .types import Jsonable
|
|
11
11
|
from .use_cases import UseCasesConfig
|
|
12
12
|
|
|
13
13
|
|
ledgered/manifest/tests.py
CHANGED
|
@@ -3,9 +3,9 @@ from pathlib import Path
|
|
|
3
3
|
from typing import Dict, List, Optional, Union
|
|
4
4
|
from urllib.parse import urlparse
|
|
5
5
|
|
|
6
|
+
from ledgered.serializers import Jsonable, JsonDict, JsonSet
|
|
6
7
|
from .constants import DEFAULT_USE_CASE
|
|
7
8
|
from .errors import MissingField
|
|
8
|
-
from .types import Jsonable, JsonDict, JsonSet
|
|
9
9
|
from .utils import getLogger
|
|
10
10
|
|
|
11
11
|
APPLICATION_DIRECTORY_KEY = "application_directory"
|
ledgered/manifest/use_cases.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ledgered
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.1.dev3
|
|
4
4
|
Summary: Python tools, utils, libraries, to be used with Ledger cryptodevices
|
|
5
5
|
Author-email: Ledger <hello@ledger.fr>
|
|
6
6
|
License: MIT License
|
|
@@ -38,6 +38,7 @@ Requires-Python: >=3.7
|
|
|
38
38
|
Description-Content-Type: text/markdown
|
|
39
39
|
License-File: LICENSE
|
|
40
40
|
Requires-Dist: toml
|
|
41
|
+
Requires-Dist: pyelftools
|
|
41
42
|
Provides-Extra: dev
|
|
42
43
|
Requires-Dist: pytest ; extra == 'dev'
|
|
43
44
|
Requires-Dist: pytest-cov ; extra == 'dev'
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
ledgered/__init__.py,sha256=aRY9b0H6CrS8gUFvdWHz-IPvyBm0i8i8paMzmE1BuK4,126
|
|
2
|
+
ledgered/__version__.py,sha256=JoP8xxeWqd1YO3n8zlxMp9AA3Rhpl8FlPYS9mFpCirA,424
|
|
3
|
+
ledgered/binary.py,sha256=0uhnb04lc31IZmwV2N0qY6ns33xdrLABbyqFyrW1Y7U,2532
|
|
4
|
+
ledgered/serializers.py,sha256=DKcz7X3hz3Qoumv9neoqK4xLh13ZBE5rOJv0KdZxZes,1624
|
|
5
|
+
ledgered/manifest/__init__.py,sha256=YbsDtjHJsUO0T37GQKoMSrC44sfcSq0JTSjDN6xrc64,243
|
|
6
|
+
ledgered/manifest/app.py,sha256=xK9vW7nABsuxPNzj1wpeZd5T9y3PVBhwSAw3LlHdtGQ,1084
|
|
7
|
+
ledgered/manifest/cli.py,sha256=WKk_ohJuDKDzUrY-fSoger2LsyygwsrwhbgzqQZbKQI,7890
|
|
8
|
+
ledgered/manifest/constants.py,sha256=GjI7Q0V8EAyQNZcD8T6nQnU5IJbRJfkKbOBXQcA29qo,132
|
|
9
|
+
ledgered/manifest/errors.py,sha256=VxP5p-wyN8Tp-3gg2dSAywbDD8vP7CXh_2E2vlRHMOA,41
|
|
10
|
+
ledgered/manifest/manifest.py,sha256=dSsxOJGimzpptVqNJPdJ6VoM7nSYKRLAxQWnMc4hCjM,1860
|
|
11
|
+
ledgered/manifest/tests.py,sha256=Zh-c_pZ4XzMKU7Pp7P-iltBnfrG8iRjO9drRtyJIUW8,3365
|
|
12
|
+
ledgered/manifest/use_cases.py,sha256=Zu5ufX29iBlFEWYAQhx3YDY_ajd0539F5pW8aULMyEw,898
|
|
13
|
+
ledgered/manifest/utils.py,sha256=HnqQVH6MTNGjs6JAEGVjs6IUcywio6mCNlMrp7xhUu4,509
|
|
14
|
+
ledgered/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
+
ledgered-0.5.1.dev3.dist-info/LICENSE,sha256=rcYmKw35vfzxANXv5w2DgsSVXV8LXcOnTDo6lslFYp0,1063
|
|
16
|
+
ledgered-0.5.1.dev3.dist-info/METADATA,sha256=Zc--49PVDzjvoZiTWZadWjtjyV1d_htmQuF1GrQe54Q,2932
|
|
17
|
+
ledgered-0.5.1.dev3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
18
|
+
ledgered-0.5.1.dev3.dist-info/entry_points.txt,sha256=absOELBtJLqnlB9NdfOQCh1RLDPVbCNgnPXX8fSUw_8,100
|
|
19
|
+
ledgered-0.5.1.dev3.dist-info/top_level.txt,sha256=LWTGn6fYa3YI2253y1orMdCyI1DcSMp86wOJ-rj_RQE,9
|
|
20
|
+
ledgered-0.5.1.dev3.dist-info/RECORD,,
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
ledgered/__init__.py,sha256=aRY9b0H6CrS8gUFvdWHz-IPvyBm0i8i8paMzmE1BuK4,126
|
|
2
|
-
ledgered/__version__.py,sha256=ku16JZdfKXLWpZCmi0-9m86hNgJgEcr0b6gGvGEkoTI,424
|
|
3
|
-
ledgered/manifest/__init__.py,sha256=YbsDtjHJsUO0T37GQKoMSrC44sfcSq0JTSjDN6xrc64,243
|
|
4
|
-
ledgered/manifest/app.py,sha256=yia6FJNiJjqP9JZL20EP8n2RUBlwcTQ_oklco1bmmi0,1070
|
|
5
|
-
ledgered/manifest/cli.py,sha256=WKk_ohJuDKDzUrY-fSoger2LsyygwsrwhbgzqQZbKQI,7890
|
|
6
|
-
ledgered/manifest/constants.py,sha256=_MpfWULp8VLU14bPBWxvWc3VwxLVic9cNqxEOMsFHbE,134
|
|
7
|
-
ledgered/manifest/errors.py,sha256=VxP5p-wyN8Tp-3gg2dSAywbDD8vP7CXh_2E2vlRHMOA,41
|
|
8
|
-
ledgered/manifest/manifest.py,sha256=QL9WENUO_2SpCEjPGwxIXE9GneJYVzGqsbumVL9CrrI,1846
|
|
9
|
-
ledgered/manifest/tests.py,sha256=PshutDM0oM2hTZhgkyBNfrVs_ccgNlvIRvZU3o2g_YE,3351
|
|
10
|
-
ledgered/manifest/types.py,sha256=DKcz7X3hz3Qoumv9neoqK4xLh13ZBE5rOJv0KdZxZes,1624
|
|
11
|
-
ledgered/manifest/use_cases.py,sha256=n3yt_dqka414ZwkQ4OxYPkNHoEBq6zxaBweI7gRgOpg,884
|
|
12
|
-
ledgered/manifest/utils.py,sha256=HnqQVH6MTNGjs6JAEGVjs6IUcywio6mCNlMrp7xhUu4,509
|
|
13
|
-
ledgered/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
-
ledgered-0.4.2.dev8.dist-info/LICENSE,sha256=rcYmKw35vfzxANXv5w2DgsSVXV8LXcOnTDo6lslFYp0,1063
|
|
15
|
-
ledgered-0.4.2.dev8.dist-info/METADATA,sha256=r6MPdI5X3RcBUe7wylLy9unJPaohBvj6RBSY17TUCHs,2906
|
|
16
|
-
ledgered-0.4.2.dev8.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
|
17
|
-
ledgered-0.4.2.dev8.dist-info/entry_points.txt,sha256=ydCLKUhbrcId--15EDnxOwXfigMRkV7pyGYxqMsR5b0,63
|
|
18
|
-
ledgered-0.4.2.dev8.dist-info/top_level.txt,sha256=LWTGn6fYa3YI2253y1orMdCyI1DcSMp86wOJ-rj_RQE,9
|
|
19
|
-
ledgered-0.4.2.dev8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|