eea542a5c4507c46f795152b3e6577b1408df4bd
Marco Ricci Change the author e-mail ad...

Marco Ricci authored 2 months ago

1) # SPDX-FileCopyrightText: 2024 Marco Ricci <software@the13thletter.info>
Marco Ricci Import initial project files

Marco Ricci authored 6 months ago

2) #
3) # SPDX-License-Identifier: MIT
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

4) 
5) from __future__ import annotations
6) 
7) import base64
8) import contextlib
Marco Ricci Add test fixture for manual...

Marco Ricci authored 1 month ago

9) import enum
Marco Ricci Test exporter data loading...

Marco Ricci authored 2 months ago

10) import importlib.util
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

11) import json
12) import os
Marco Ricci Add test fixture for manual...

Marco Ricci authored 1 month ago

13) import shlex
Marco Ricci Add missing tests for rewor...

Marco Ricci authored 2 months ago

14) import stat
Marco Ricci Add preliminary tests for t...

Marco Ricci authored 2 months ago

15) import tempfile
16) import zipfile
Marco Ricci Support Python 3.10 and PyP...

Marco Ricci authored 3 months ago

17) from typing import TYPE_CHECKING
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

18) 
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 3 months ago

19) import pytest
Marco Ricci Clean up testing machinery...

Marco Ricci authored 2 months ago

20) from typing_extensions import NamedTuple, Self, assert_never
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 3 months ago

21) 
Marco Ricci Add test fixture for manual...

Marco Ricci authored 1 month ago

22) from derivepassphrase import _types, cli, ssh_agent
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

23) 
24) __all__ = ()
25) 
26) if TYPE_CHECKING:
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 3 months ago

27)     from collections.abc import Iterator, Mapping
28) 
29)     import click.testing
Marco Ricci Add principal support for u...

Marco Ricci authored 1 month ago

30)     from typing_extensions import Any, NotRequired, TypedDict
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 3 months ago

31) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

32)     class SSHTestKey(TypedDict):
33)         private_key: bytes
Marco Ricci Add principal support for u...

Marco Ricci authored 1 month ago

34)         private_key_blob: NotRequired[bytes]
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

35)         public_key: bytes | str
36)         public_key_data: bytes
37)         expected_signature: bytes | None
38)         derived_passphrase: bytes | str | None
39) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

40) 
Marco Ricci Add test fixture for manual...

Marco Ricci authored 1 month ago

41) class KnownSSHAgent(str, enum.Enum):
42)     UNKNOWN: str = '(unknown)'
43)     Pageant: str = 'Pageant'
44)     OpenSSHAgent: str = 'OpenSSHAgent'
45) 
46) 
47) class SpawnedSSHAgentInfo(NamedTuple):
48)     agent_type: KnownSSHAgent
49)     client: ssh_agent.SSHAgentClient
50)     isolated: bool
51) 
52) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

53) SUPPORTED_KEYS: Mapping[str, SSHTestKey] = {
54)     'ed25519': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

55)         'private_key': rb"""-----BEGIN OPENSSH PRIVATE KEY-----
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

56) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
57) QyNTUxOQAAACCBeIFoJtYCSF8P/zJIb+TBMIncHGpFBgnpCQ/7whJpdgAAAKDweO7H8Hju
58) xwAAAAtzc2gtZWQyNTUxOQAAACCBeIFoJtYCSF8P/zJIb+TBMIncHGpFBgnpCQ/7whJpdg
59) AAAEAbM/A869nkWZbe2tp3Dm/L6gitvmpH/aRZt8sBII3ExYF4gWgm1gJIXw//Mkhv5MEw
60) idwcakUGCekJD/vCEml2AAAAG3Rlc3Qga2V5IHdpdGhvdXQgcGFzc3BocmFzZQEC
61) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

62) """,
Marco Ricci Add principal support for u...

Marco Ricci authored 1 month ago

63)         'private_key_blob': bytes.fromhex("""
64)             00 00 00 0b 73 73 68 2d 65 64 32 35 35 31 39
65)             00 00 00 20
66)             81 78 81 68 26 d6 02 48 5f 0f ff 32 48 6f e4 c1
67)             30 89 dc 1c 6a 45 06 09 e9 09 0f fb c2 12 69 76
68)             00 00 00 40
69)             1b 33 f0 3c eb d9 e4 59 96 de da da 77 0e 6f cb
70)             ea 08 ad be 6a 47 fd a4 59 b7 cb 01 20 8d c4 c5
71)             81 78 81 68 26 d6 02 48 5f 0f ff 32 48 6f e4 c1
72)             30 89 dc 1c 6a 45 06 09 e9 09 0f fb c2 12 69 76
73)             00 00 00 1b 74 65 73 74 20 6b 65 79 20 77 69 74
74)             68 6f 75 74 20 70 61 73 73 70 68 72 61 73 65
75) """),
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

76)         'public_key': rb"""ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIF4gWgm1gJIXw//Mkhv5MEwidwcakUGCekJD/vCEml2 test key without passphrase
77) """,  # noqa: E501
78)         'public_key_data': bytes.fromhex("""
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

79)             00 00 00 0b 73 73 68 2d 65 64 32 35 35 31 39
80)             00 00 00 20
81)             81 78 81 68 26 d6 02 48 5f 0f ff 32 48 6f e4 c1
82)             30 89 dc 1c 6a 45 06 09 e9 09 0f fb c2 12 69 76
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

83) """),
84)         'expected_signature': bytes.fromhex("""
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

85)             00 00 00 0b 73 73 68 2d 65 64 32 35 35 31 39
86)             00 00 00 40
87)             f0 98 19 80 6c 1a 97 d5 26 03 6e cc e3 65 8f 86
88)             66 07 13 19 13 09 21 33 33 f9 e4 36 53 1d af fd
89)             0d 08 1f ec f8 73 9b 8c 5f 55 39 16 7c 53 54 2c
90)             1e 52 bb 30 ed 7f 89 e2 2f 69 51 55 d8 9e a6 02
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

91)         """),
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 3 months ago

92)         'derived_passphrase': rb'8JgZgGwal9UmA27M42WPhmYHExkTCSEzM/nkNlMdr/0NCB/s+HObjF9VORZ8U1QsHlK7MO1/ieIvaVFV2J6mAg==',  # noqa: E501
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

93)     },
94)     # Currently only supported by PuTTY (which is deficient in other
95)     # niceties of the SSH agent and the agent's client).
96)     'ed448': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

97)         'private_key': rb"""-----BEGIN OPENSSH PRIVATE KEY-----
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

98) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAASgAAAAlz
99) c2gtZWQ0NDgAAAA54vZy009Wu8wExjvEb3hqtLz1GO/+d5vmGUbErWQ4AUO9mYLT
100) zHJHc2m4s+yWzP29Cc3EcxizLG8AAAAA8BdhfCcXYXwnAAAACXNzaC1lZDQ0OAAA
101) ADni9nLTT1a7zATGO8RveGq0vPUY7/53m+YZRsStZDgBQ72ZgtPMckdzabiz7JbM
102) /b0JzcRzGLMsbwAAAAByM7GIMRvWJB3YD6SIpAF2uudX4ozZe0X917wPwiBrs373
103) 9TM1n94Nib6hrxGNmCk2iBQDe2KALPgA4vZy009Wu8wExjvEb3hqtLz1GO/+d5vm
104) GUbErWQ4AUO9mYLTzHJHc2m4s+yWzP29Cc3EcxizLG8AAAAAG3Rlc3Qga2V5IHdp
105) dGhvdXQgcGFzc3BocmFzZQECAwQFBgcICQ==
106) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

107) """,
Marco Ricci Add principal support for u...

Marco Ricci authored 1 month ago

108)         'private_key_blob': bytes.fromhex("""
109)             00 00 00 09 73 73 68 2d 65 64 34 34 38
110)             00 00 00 39 e2 f6 72 d3 4f 56 bb cc 04
111)             c6 3b c4 6f 78 6a b4 bc f5 18 ef fe 77 9b e6 19
112)             46 c4 ad 64 38 01 43 bd 99 82 d3 cc 72 47 73 69
113)             b8 b3 ec 96 cc fd bd 09 cd c4 73 18 b3 2c 6f 00
114)             00 00 00 72 33 b1
115)             88 31 1b d6 24 1d d8 0f a4 88 a4 01 76 ba e7 57
116)             e2 8c d9 7b 45 fd d7 bc 0f c2 20 6b b3 7e f7 f5
117)             33 35 9f de 0d 89 be a1 af 11 8d 98 29 36 88 14
118)             03 7b 62 80 2c f8 00 e2 f6 72 d3 4f 56 bb cc 04
119)             c6 3b c4 6f 78 6a b4 bc f5 18 ef fe 77 9b e6 19
120)             46 c4 ad 64 38 01 43 bd 99 82 d3 cc 72 47 73 69
121)             b8 b3 ec 96 cc fd bd 09 cd c4 73 18 b3 2c 6f 00
122)             00 00 00 1b 74 65 73 74 20 6b 65 79 20 77 69
123)             74 68 6f 75 74 20 70 61 73 73 70 68 72 61 73 65
124) """),
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

125)         'public_key': rb"""ssh-ed448 AAAACXNzaC1lZDQ0OAAAADni9nLTT1a7zATGO8RveGq0vPUY7/53m+YZRsStZDgBQ72ZgtPMckdzabiz7JbM/b0JzcRzGLMsbwA= test key without passphrase
126) """,  # noqa: E501
127)         'public_key_data': bytes.fromhex("""
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

128)             00 00 00 09 73 73 68 2d 65 64 34 34 38
Marco Ricci Add principal support for u...

Marco Ricci authored 1 month ago

129)             00 00 00 39 e2 f6 72 d3 4f 56 bb cc 04
130)             c6 3b c4 6f 78 6a b4 bc f5 18 ef fe 77 9b e6 19
131)             46 c4 ad 64 38 01 43 bd 99 82 d3 cc 72 47 73 69
132)             b8 b3 ec 96 cc fd bd 09 cd c4 73 18 b3 2c 6f 00
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

133)         """),
134)         'expected_signature': bytes.fromhex("""
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

135)             00 00 00 09 73 73 68 2d 65 64 34 34 38
136)             00 00 00 72 06 86
137)             f4 64 a4 a6 ba d9 c3 22 c4 93 49 99 fc 11 de 67
138)             97 08 f2 d8 b7 3c 2c 13 e7 c5 1c 1e 92 a6 0e d8
139)             2f 6d 81 03 82 00 e3 72 e4 32 6d 72 d2 6d 32 84
140)             3f cc a9 1e 57 2c 00 9a b3 99 de 45 da ce 2e d1
141)             db e5 89 f3 35 be 24 58 90 c6 ca 04 f0 db 88 80
142)             db bd 77 7c 80 20 7f 3a 48 61 f6 1f ae a9 5e 53
143)             7b e0 9d 93 1e ea dc eb b5 cd 56 4c ea 8f 08 00
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

144)         """),
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 3 months ago

145)         'derived_passphrase': rb'Bob0ZKSmutnDIsSTSZn8Ed5nlwjy2Lc8LBPnxRwekqYO2C9tgQOCAONy5DJtctJtMoQ/zKkeVywAmrOZ3kXazi7R2+WJ8zW+JFiQxsoE8NuIgNu9d3yAIH86SGH2H66pXlN74J2THurc67XNVkzqjwgA',  # noqa: E501
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

146)     },
147)     'rsa': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

148)         'private_key': rb"""-----BEGIN OPENSSH PRIVATE KEY-----
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

149) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
150) NhAAAAAwEAAQAAAYEAsaHu6Xs4cVsuDSNJlMCqoPVgmDgEviI8TfXmHKqX3JkIqI3LsvV7
151) Ijf8WCdTveEq7CkuZhImtsR52AOEVAoU8mDXDNr+nJ5wUPzf1UIaRjDe0lcXW4SlF01hQs
152) G4wYDuqxshwelraB/L3e0zhD7fjYHF8IbFsqGlFHWEwOtlfhhfbxJsTGguLm4A8/gdEJD5
153) 2rkqDcZpIXCHtJbCzW9aQpWcs/PDw5ylwl/3dB7jfxyfrGz4O3QrzsqhWEsip97mOmwl6q
154) CHbq8V8x9zu89D/H+bG5ijqxhijbjcVUW3lZfw/97gy9J6rG31HNar5H8GycLTFwuCFepD
155) mTEpNgQLKoe8ePIEPq4WHhFUovBdwlrOByUKKqxreyvWt5gkpTARz+9Lt8OjBO3rpqK8sZ
156) VKH3sE3de2RJM3V9PJdmZSs2b8EFK3PsUGdlMPM9pn1uk4uIItKWBmooOynuD8Ll6aPwuW
157) AFn3l8nLLyWdrmmEYzHWXiRjQJxy1Bi5AbHMOWiPAAAFkDPkuBkz5LgZAAAAB3NzaC1yc2
158) EAAAGBALGh7ul7OHFbLg0jSZTAqqD1YJg4BL4iPE315hyql9yZCKiNy7L1eyI3/FgnU73h
159) KuwpLmYSJrbEedgDhFQKFPJg1wza/pyecFD839VCGkYw3tJXF1uEpRdNYULBuMGA7qsbIc
160) Hpa2gfy93tM4Q+342BxfCGxbKhpRR1hMDrZX4YX28SbExoLi5uAPP4HRCQ+dq5Kg3GaSFw
161) h7SWws1vWkKVnLPzw8OcpcJf93Qe438cn6xs+Dt0K87KoVhLIqfe5jpsJeqgh26vFfMfc7
162) vPQ/x/mxuYo6sYYo243FVFt5WX8P/e4MvSeqxt9RzWq+R/BsnC0xcLghXqQ5kxKTYECyqH
163) vHjyBD6uFh4RVKLwXcJazgclCiqsa3sr1reYJKUwEc/vS7fDowTt66aivLGVSh97BN3Xtk
164) STN1fTyXZmUrNm/BBStz7FBnZTDzPaZ9bpOLiCLSlgZqKDsp7g/C5emj8LlgBZ95fJyy8l
165) na5phGMx1l4kY0CcctQYuQGxzDlojwAAAAMBAAEAAAF/cNVYT+Om4x9+SItcz5bOByGIOj
166) yWUH8f9rRjnr5ILuwabIDgvFaVG+xM1O1hWADqzMnSEcknHRkTYEsqYPykAtxFvjOFEh70
167) 6qRUJ+fVZkqRGEaI3oWyWKTOhcCIYImtONvb0LOv/HQ2H2AXCoeqjST1qr/xSuljBtcB8u
168) wxs3EqaO1yU7QoZpDcMX9plH7Rmc9nNfZcgrnktPk2deX2+Y/A5tzdVgG1IeqYp6CBMLNM
169) uhL0OPdDehgBoDujx+rhkZ1gpo1wcULIM94NL7VSHBPX0Lgh9T+3j1HVP+YnMAvhfOvfct
170) LlbJ06+TYGRAMuF2LPCAZM/m0FEyAurRgWxAjLXm+4kp2GAJXlw82deDkQ+P8cHNT6s9ZH
171) R5YSy3lpZ35594ZMOLR8KqVvhgJGF6i9019BiF91SDxjE+sp6dNGfN8W+64tHdDv2a0Mso
172) +8Qjyx7sTpi++EjLU8Iy73/e4B8qbXMyheyA/UUfgMtNKShh6sLlrD9h2Sm9RFTuEAAADA
173) Jh3u7WfnjhhKZYbAW4TsPNXDMrB0/t7xyAQgFmko7JfESyrJSLg1cO+QMOiDgD7zuQ9RSp
174) NIKdPsnIna5peh979mVjb2HgnikjyJECmBpLdwZKhX7MnIvgKw5lnQXHboEtWCa1N58l7f
175) srzwbi9pFUuUp9dShXNffmlUCjDRsVLbK5C6+iaIQyCWFYK8mc6dpNkIoPKf+Xg+EJCIFQ
176) oITqeu30Gc1+M+fdZc2ghq0b6XLthh/uHEry8b68M5KglMAAAAwQDw1i+IdcvPV/3u/q9O
177) /kzLpKO3tbT89sc1zhjZsDNjDAGluNr6n38iq/XYRZu7UTL9BG+EgFVfIUV7XsYT5e+BPf
178) 13VS94rzZ7maCsOlULX+VdMO2zBucHIoec9RUlRZrfB21B2W7YGMhbpoa5lN3lKJQ7afHo
179) dXZUMp0cTFbOmbzJgSzO2/NE7BhVwmvcUzTDJGMMKuxBO6w99YKDKRKm0PNLFDz26rWm9L
180) dNS2MVfVuPMTpzT26HQG4pFageq9cAAADBALzRBXdZF8kbSBa5MTUBVTTzgKQm1C772gJ8
181) T01DJEXZsVtOv7mUC1/m/by6Hk4tPyvDBuGj9hHq4N7dPqGutHb1q5n0ADuoQjRW7BXw5Q
182) vC2EAD91xexdorIA5BgXU+qltBqzzBVzVtF7+jOZOjfzOlaTX9I5I5veyeTaTxZj1XXUzi
183) btBNdMEJJp7ifucYmoYAAwE7K+VlWagDEK2y8Mte9y9E+N0uO2j+h85sQt/UIb2iE/vhcg
184) Bgp6142WnSCQAAABt0ZXN0IGtleSB3aXRob3V0IHBhc3NwaHJhc2UB
185) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

186) """,
Marco Ricci Add principal support for u...

Marco Ricci authored 1 month ago

187)         'private_key_blob': bytes.fromhex("""
188)             00 00 00 07 73 73 68 2d 72 73 61
189)             00 00 01 81 00
190)             b1 a1 ee e9 7b 38 71 5b 2e 0d 23 49 94 c0 aa a0
191)             f5 60 98 38 04 be 22 3c 4d f5 e6 1c aa 97 dc 99
192)             08 a8 8d cb b2 f5 7b 22 37 fc 58 27 53 bd e1 2a
193)             ec 29 2e 66 12 26 b6 c4 79 d8 03 84 54 0a 14 f2
194)             60 d7 0c da fe 9c 9e 70 50 fc df d5 42 1a 46 30
195)             de d2 57 17 5b 84 a5 17 4d 61 42 c1 b8 c1 80 ee
196)             ab 1b 21 c1 e9 6b 68 1f cb dd ed 33 84 3e df 8d
197)             81 c5 f0 86 c5 b2 a1 a5 14 75 84 c0 eb 65 7e 18
198)             5f 6f 12 6c 4c 68 2e 2e 6e 00 f3 f8 1d 10 90 f9
199)             da b9 2a 0d c6 69 21 70 87 b4 96 c2 cd 6f 5a 42
200)             95 9c b3 f3 c3 c3 9c a5 c2 5f f7 74 1e e3 7f 1c
201)             9f ac 6c f8 3b 74 2b ce ca a1 58 4b 22 a7 de e6
202)             3a 6c 25 ea a0 87 6e af 15 f3 1f 73 bb cf 43 fc
203)             7f 9b 1b 98 a3 ab 18 62 8d b8 dc 55 45 b7 95 97
204)             f0 ff de e0 cb d2 7a ac 6d f5 1c d6 ab e4 7f 06
205)             c9 c2 d3 17 0b 82 15 ea 43 99 31 29 36 04 0b 2a
206)             87 bc 78 f2 04 3e ae 16 1e 11 54 a2 f0 5d c2 5a
207)             ce 07 25 0a 2a ac 6b 7b 2b d6 b7 98 24 a5 30 11
208)             cf ef 4b b7 c3 a3 04 ed eb a6 a2 bc b1 95 4a 1f
209)             7b 04 dd d7 b6 44 93 37 57 d3 c9 76 66 52 b3 66
210)             fc 10 52 b7 3e c5 06 76 53 0f 33 da 67 d6 e9 38
211)             b8 82 2d 29 60 66 a2 83 b2 9e e0 fc 2e 5e 9a 3f
212)             0b 96 00 59 f7 97 c9 cb 2f 25 9d ae 69 84 63 31
213)             d6 5e 24 63 40 9c 72 d4 18 b9 01 b1 cc 39 68 8f
214)             00 00 00 03 01 00 01
215)             00 00 01 7f
216)             70 d5 58 4f e3 a6 e3 1f 7e 48 8b 5c cf 96 ce
217)             07 21 88 3a 3c 96 50 7f 1f f6 b4 63 9e be 48 2e
218)             ec 1a 6c 80 e0 bc 56 95 1b ec 4c d4 ed 61 58 00
219)             ea cc c9 d2 11 c9 27 1d 19 13 60 4b 2a 60 fc a4
220)             02 dc 45 be 33 85 12 1e f4 ea a4 54 27 e7 d5 66
221)             4a 91 18 46 88 de 85 b2 58 a4 ce 85 c0 88 60 89
222)             ad 38 db db d0 b3 af fc 74 36 1f 60 17 0a 87 aa
223)             8d 24 f5 aa bf f1 4a e9 63 06 d7 01 f2 ec 31 b3
224)             71 2a 68 ed 72 53 b4 28 66 90 dc 31 7f 69 94 7e
225)             d1 99 cf 67 35 f6 5c 82 b9 e4 b4 f9 36 75 e5 f6
226)             f9 8f c0 e6 dc dd 56 01 b5 21 ea 98 a7 a0 81 30
227)             b3 4c ba 12 f4 38 f7 43 7a 18 01 a0 3b a3 c7 ea
228)             e1 91 9d 60 a6 8d 70 71 42 c8 33 de 0d 2f b5 52
229)             1c 13 d7 d0 b8 21 f5 3f b7 8f 51 d5 3f e6 27 30
230)             0b e1 7c eb df 72 d2 e5 6c 9d 3a f9 36 06 44 03
231)             2e 17 62 cf 08 06 4c fe 6d 05 13 20 2e ad 18 16
232)             c4 08 cb 5e 6f b8 92 9d 86 00 95 e5 c3 cd 9d 78
233)             39 10 f8 ff 1c 1c d4 fa b3 d6 47 47 96 12 cb 79
234)             69 67 7e 79 f7 86 4c 38 b4 7c 2a a5 6f 86 02 46
235)             17 a8 bd d3 5f 41 88 5f 75 48 3c 63 13 eb 29 e9
236)             d3 46 7c df 16 fb ae 2d 1d d0 ef d9 ad 0c b2 8f
237)             bc 42 3c b1 ee c4 e9 8b ef 84 8c b5 3c 23 2e f7
238)             fd ee 01 f2 a6 d7 33 28 5e c8 0f d4 51 f8 0c b4
239)             d2 92 86 1e ac 2e 5a c3 f6 1d 92 9b d4 45 4e e1
240)             00 00 00 c0
241)             26 1d ee ed 67 e7 8e 18 4a 65 86 c0 5b 84 ec 3c
242)             d5 c3 32 b0 74 fe de f1 c8 04 20 16 69 28 ec 97
243)             c4 4b 2a c9 48 b8 35 70 ef 90 30 e8 83 80 3e f3
244)             b9 0f 51 4a 93 48 29 d3 ec 9c 89 da e6 97 a1 f7
245)             bf 66 56 36 f6 1e 09 e2 92 3c 89 10 29 81 a4 b7
246)             70 64 a8 57 ec c9 c8 be 02 b0 e6 59 d0 5c 76 e8
247)             12 d5 82 6b 53 79 f2 5e df b2 bc f0 6e 2f 69 15
248)             4b 94 a7 d7 52 85 73 5f 7e 69 54 0a 30 d1 b1 52
249)             db 2b 90 ba fa 26 88 43 20 96 15 82 bc 99 ce 9d
250)             a4 d9 08 a0 f2 9f f9 78 3e 10 90 88 15 0a 08 4e
251)             a7 ae df 41 9c d7 e3 3e 7d d6 5c da 08 6a d1 be
252)             97 2e d8 61 fe e1 c4 af 2f 1b eb c3 39 2a 09 4c
253)             00 00 00 c1 00
254)             f0 d6 2f 88 75 cb cf 57 fd ee fe af 4e fe 4c cb
255)             a4 a3 b7 b5 b4 fc f6 c7 35 ce 18 d9 b0 33 63 0c
256)             01 a5 b8 da fa 9f 7f 22 ab f5 d8 45 9b bb 51 32
257)             fd 04 6f 84 80 55 5f 21 45 7b 5e c6 13 e5 ef 81
258)             3d fd 77 55 2f 78 af 36 7b 99 a0 ac 3a 55 0b 5f
259)             e5 5d 30 ed b3 06 e7 07 22 87 9c f5 15 25 45 9a
260)             df 07 6d 41 d9 6e d8 18 c8 5b a6 86 b9 94 dd e5
261)             28 94 3b 69 f1 e8 75 76 54 32 9d 1c 4c 56 ce 99
262)             bc c9 81 2c ce db f3 44 ec 18 55 c2 6b dc 53 34
263)             c3 24 63 0c 2a ec 41 3b ac 3d f5 82 83 29 12 a6
264)             d0 f3 4b 14 3c f6 ea b5 a6 f4 b7 4d 4b 63 15 7d
265)             5b 8f 31 3a 73 4f 6e 87 40 6e 29 15 a8 1e ab d7
266)             00 00 00 c1 00
267)             bc d1 05 77 59 17 c9 1b 48 16 b9 31 35 01 55 34
268)             f3 80 a4 26 d4 2e fb da 02 7c 4f 4d 43 24 45 d9
269)             b1 5b 4e bf b9 94 0b 5f e6 fd bc ba 1e 4e 2d 3f
270)             2b c3 06 e1 a3 f6 11 ea e0 de dd 3e a1 ae b4 76
271)             f5 ab 99 f4 00 3b a8 42 34 56 ec 15 f0 e5 0b c2
272)             d8 40 03 f7 5c 5e c5 da 2b 20 0e 41 81 75 3e aa
273)             5b 41 ab 3c c1 57 35 6d 17 bf a3 39 93 a3 7f 33
274)             a5 69 35 fd 23 92 39 bd ec 9e 4d a4 f1 66 3d 57
275)             5d 4c e2 6e d0 4d 74 c1 09 26 9e e2 7e e7 18 9a
276)             86 00 03 01 3b 2b e5 65 59 a8 03 10 ad b2 f0 cb
277)             5e f7 2f 44 f8 dd 2e 3b 68 fe 87 ce 6c 42 df d4
278)             21 bd a2 13 fb e1 72 00 60 a7 ad 78 d9 69 d2 09
279)             00 00 00 1b 74 65 73 74 20 6b 65 79 20 77 69
280)             74 68 6f 75 74 20 70 61 73 73 70 68 72 61 73 65
281) """),
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

282)         'public_key': rb"""ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCxoe7pezhxWy4NI0mUwKqg9WCYOAS+IjxN9eYcqpfcmQiojcuy9XsiN/xYJ1O94SrsKS5mEia2xHnYA4RUChTyYNcM2v6cnnBQ/N/VQhpGMN7SVxdbhKUXTWFCwbjBgO6rGyHB6WtoH8vd7TOEPt+NgcXwhsWyoaUUdYTA62V+GF9vEmxMaC4ubgDz+B0QkPnauSoNxmkhcIe0lsLNb1pClZyz88PDnKXCX/d0HuN/HJ+sbPg7dCvOyqFYSyKn3uY6bCXqoIdurxXzH3O7z0P8f5sbmKOrGGKNuNxVRbeVl/D/3uDL0nqsbfUc1qvkfwbJwtMXC4IV6kOZMSk2BAsqh7x48gQ+rhYeEVSi8F3CWs4HJQoqrGt7K9a3mCSlMBHP70u3w6ME7eumoryxlUofewTd17ZEkzdX08l2ZlKzZvwQUrc+xQZ2Uw8z2mfW6Ti4gi0pYGaig7Ke4PwuXpo/C5YAWfeXycsvJZ2uaYRjMdZeJGNAnHLUGLkBscw5aI8= test key without passphrase
283) """,  # noqa: E501
284)         'public_key_data': bytes.fromhex("""
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

285)             00 00 00 07 73 73 68 2d 72 73 61
286)             00 00 00 03 01 00 01
287)             00 00 01 81 00
288)             b1 a1 ee e9 7b 38 71 5b 2e 0d 23 49 94 c0 aa a0
289)             f5 60 98 38 04 be 22 3c 4d f5 e6 1c aa 97 dc 99
290)             08 a8 8d cb b2 f5 7b 22 37 fc 58 27 53 bd e1 2a
291)             ec 29 2e 66 12 26 b6 c4 79 d8 03 84 54 0a 14 f2
292)             60 d7 0c da fe 9c 9e 70 50 fc df d5 42 1a 46 30
293)             de d2 57 17 5b 84 a5 17 4d 61 42 c1 b8 c1 80 ee
294)             ab 1b 21 c1 e9 6b 68 1f cb dd ed 33 84 3e df 8d
295)             81 c5 f0 86 c5 b2 a1 a5 14 75 84 c0 eb 65 7e 18
296)             5f 6f 12 6c 4c 68 2e 2e 6e 00 f3 f8 1d 10 90 f9
297)             da b9 2a 0d c6 69 21 70 87 b4 96 c2 cd 6f 5a 42
298)             95 9c b3 f3 c3 c3 9c a5 c2 5f f7 74 1e e3 7f 1c
299)             9f ac 6c f8 3b 74 2b ce ca a1 58 4b 22 a7 de e6
300)             3a 6c 25 ea a0 87 6e af 15 f3 1f 73 bb cf 43 fc
301)             7f 9b 1b 98 a3 ab 18 62 8d b8 dc 55 45 b7 95 97
302)             f0 ff de e0 cb d2 7a ac 6d f5 1c d6 ab e4 7f 06
303)             c9 c2 d3 17 0b 82 15 ea 43 99 31 29 36 04 0b 2a
304)             87 bc 78 f2 04 3e ae 16 1e 11 54 a2 f0 5d c2 5a
305)             ce 07 25 0a 2a ac 6b 7b 2b d6 b7 98 24 a5 30 11
306)             cf ef 4b b7 c3 a3 04 ed eb a6 a2 bc b1 95 4a 1f
307)             7b 04 dd d7 b6 44 93 37 57 d3 c9 76 66 52 b3 66
308)             fc 10 52 b7 3e c5 06 76 53 0f 33 da 67 d6 e9 38
309)             b8 82 2d 29 60 66 a2 83 b2 9e e0 fc 2e 5e 9a 3f
310)             0b 96 00 59 f7 97 c9 cb 2f 25 9d ae 69 84 63 31
311)             d6 5e 24 63 40 9c 72 d4 18 b9 01 b1 cc 39 68 8f
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

312) """),
313)         'expected_signature': bytes.fromhex("""
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

314)             00 00 00 07 73 73 68 2d 72 73 61
315)             00 00 01 80
316)             a2 10 7c 2e f6 bb 53 a8 74 2a a1 19 99 ad 81 be
317)             79 9c ed d6 9d 09 4e 6e c5 18 48 33 90 77 99 68
318)             f7 9e 03 5a cd 4e 18 eb 89 7d 85 a2 ee ae 4a 92
319)             f6 6f ce b9 fe 86 7f 2a 6b 31 da 6e 1a fe a2 a5
320)             88 b8 44 7f a1 76 73 b3 ec 75 b5 d0 a6 b9 15 97
321)             65 09 13 7d 94 21 d1 fb 5d 0f 8b 23 04 77 c2 c3
322)             55 22 b1 a0 09 8a f5 38 2a d6 7f 1b 87 29 a0 25
323)             d3 25 6f cb 64 61 07 98 dc 14 c5 84 f8 92 24 5e
324)             50 11 6b 49 e5 f0 cc 29 cb 29 a9 19 d8 a7 71 1f
325)             91 0b 05 b1 01 4b c2 5f 00 a5 b6 21 bf f8 2c 9d
326)             67 9b 47 3b 0a 49 6b 79 2d fc 1d ec 0c b0 e5 27
327)             22 d5 a9 f8 d3 c3 f9 df 48 68 e9 fb ef 3c dc 26
328)             bf cf ea 29 43 01 a6 e3 c5 51 95 f4 66 6d 8a 55
329)             e2 47 ec e8 30 45 4c ae 47 e7 c9 a4 21 8b 64 ba
330)             b6 88 f6 21 f8 73 b9 cb 11 a1 78 75 92 c6 5a e5
331)             64 fe ed 42 d9 95 99 e6 2b 6f 3c 16 3c 28 74 a4
332)             72 2f 0d 3f 2c 33 67 aa 35 19 8e e7 b5 11 2f b3
333)             f7 6a c5 02 e2 6f a3 42 e3 62 19 99 03 ea a5 20
334)             e7 a1 e3 bc c8 06 a3 b5 7c d6 76 5d df 6f 60 46
335)             83 2a 08 00 d6 d3 d9 a4 c1 41 8c f8 60 56 45 81
336)             da 3b a2 16 1f 9e 4e 75 83 17 da c3 53 c3 3e 19
337)             a4 1b bc d2 29 b8 78 61 2b 78 e6 b1 52 b0 d5 ec
338)             de 69 2c 48 62 d9 fd d1 9b 6b b0 49 db d3 ff 38
339)             e7 10 d9 2d ce 9f 0d 5e 09 7b 37 d2 7b c3 bf ce
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

340) """),
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 3 months ago

341)         'derived_passphrase': rb'ohB8Lva7U6h0KqEZma2Bvnmc7dadCU5uxRhIM5B3mWj3ngNazU4Y64l9haLurkqS9m/Ouf6GfyprMdpuGv6ipYi4RH+hdnOz7HW10Ka5FZdlCRN9lCHR+10PiyMEd8LDVSKxoAmK9Tgq1n8bhymgJdMlb8tkYQeY3BTFhPiSJF5QEWtJ5fDMKcspqRnYp3EfkQsFsQFLwl8ApbYhv/gsnWebRzsKSWt5Lfwd7Ayw5Sci1an408P530ho6fvvPNwmv8/qKUMBpuPFUZX0Zm2KVeJH7OgwRUyuR+fJpCGLZLq2iPYh+HO5yxGheHWSxlrlZP7tQtmVmeYrbzwWPCh0pHIvDT8sM2eqNRmO57URL7P3asUC4m+jQuNiGZkD6qUg56HjvMgGo7V81nZd329gRoMqCADW09mkwUGM+GBWRYHaO6IWH55OdYMX2sNTwz4ZpBu80im4eGEreOaxUrDV7N5pLEhi2f3Rm2uwSdvT/zjnENktzp8NXgl7N9J7w7/O',  # noqa: E501
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

342)     },
343) }
344) 
345) UNSUITABLE_KEYS: Mapping[str, SSHTestKey] = {
346)     'dsa1024': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

347)         'private_key': rb"""-----BEGIN OPENSSH PRIVATE KEY-----
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

348) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABsQAAAAdzc2gtZH
349) NzAAAAgQC7KAZXqBGNVLBQPrcMYAoNW54BhD8aIhe7BDWYzJcsaMt72VKSkguZ8+XR7nRa
350) 0C/ZsBi+uJp0dpxy9ZMTOWX4u5YPMeQcXEdGExZIfimGqSOAsy6fCld2IfJZJZExcCmhe9
351) Ssjsd3YSAPJRluOXFQc95MZoR5hMwlIDD8QzrE7QAAABUA99nOZOgd7aHMVGoXpUEBcn7H
352) ossAAACALr2Ag3hxM3rKdxzVUw8fX0VVPXO+3+Kr8hGe0Kc/7NwVaBVL1GQ8fenBuWynpA
353) UbH0wo3h1wkB/8hX6p+S8cnu5rIBlUuVNwLw/bIYohK98LfqTYK/V+g6KD+8m34wvEiXZm
354) qywY54n2bksch1Nqvj/tNpLzExSx/XS0kSM1aigAAACAbQNRPcVEuGDrEcf+xg5tgAejPX
355) BPXr/Jss+Chk64km3mirMYjAWyWYtVcgT+7hOYxtYRin8LyMLqKRmqa0Q5UrvDfChgLhvs
356) G9YSb/Mpw5qm8PiHSafwhkaz/te3+8hKogqoe7sd+tCF06IpJr5k70ACiNtRGqssNF8Elr
357) l1efYAAAH4swlfVrMJX1YAAAAHc3NoLWRzcwAAAIEAuygGV6gRjVSwUD63DGAKDVueAYQ/
358) GiIXuwQ1mMyXLGjLe9lSkpILmfPl0e50WtAv2bAYvriadHaccvWTEzll+LuWDzHkHFxHRh
359) MWSH4phqkjgLMunwpXdiHyWSWRMXApoXvUrI7Hd2EgDyUZbjlxUHPeTGaEeYTMJSAw/EM6
360) xO0AAAAVAPfZzmToHe2hzFRqF6VBAXJ+x6LLAAAAgC69gIN4cTN6yncc1VMPH19FVT1zvt
361) /iq/IRntCnP+zcFWgVS9RkPH3pwblsp6QFGx9MKN4dcJAf/IV+qfkvHJ7uayAZVLlTcC8P
362) 2yGKISvfC36k2Cv1foOig/vJt+MLxIl2ZqssGOeJ9m5LHIdTar4/7TaS8xMUsf10tJEjNW
363) ooAAAAgG0DUT3FRLhg6xHH/sYObYAHoz1wT16/ybLPgoZOuJJt5oqzGIwFslmLVXIE/u4T
364) mMbWEYp/C8jC6ikZqmtEOVK7w3woYC4b7BvWEm/zKcOapvD4h0mn8IZGs/7Xt/vISqIKqH
365) u7HfrQhdOiKSa+ZO9AAojbURqrLDRfBJa5dXn2AAAAFQDJHfenj4EJ9WkehpdJatPBlqCW
366) 0gAAABt0ZXN0IGtleSB3aXRob3V0IHBhc3NwaHJhc2UBAgMEBQYH
367) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

368) """,
Marco Ricci Add principal support for u...

Marco Ricci authored 1 month ago

369)         'private_key_blob': bytes.fromhex("""
370)             00 00 00 07 73 73 68 2d 64 73 73
371)             00 00 00 81 00
372)             bb 28 06 57 a8 11 8d 54 b0 50 3e b7 0c 60 0a 0d
373)             5b 9e 01 84 3f 1a 22 17 bb 04 35 98 cc 97 2c 68
374)             cb 7b d9 52 92 92 0b 99 f3 e5 d1 ee 74 5a d0 2f
375)             d9 b0 18 be b8 9a 74 76 9c 72 f5 93 13 39 65 f8
376)             bb 96 0f 31 e4 1c 5c 47 46 13 16 48 7e 29 86 a9
377)             23 80 b3 2e 9f 0a 57 76 21 f2 59 25 91 31 70 29
378)             a1 7b d4 ac 8e c7 77 61 20 0f 25 19 6e 39 71 50
379)             73 de 4c 66 84 79 84 cc 25 20 30 fc 43 3a c4 ed
380)             00 00 00 15 00 f7 d9 ce 64
381)             e8 1d ed a1 cc 54 6a 17 a5 41 01 72 7e c7 a2 cb
382)             00 00 00 80
383)             2e bd 80 83 78 71 33 7a ca 77 1c d5 53 0f 1f 5f
384)             45 55 3d 73 be df e2 ab f2 11 9e d0 a7 3f ec dc
385)             15 68 15 4b d4 64 3c 7d e9 c1 b9 6c a7 a4 05 1b
386)             1f 4c 28 de 1d 70 90 1f fc 85 7e a9 f9 2f 1c 9e
387)             ee 6b 20 19 54 b9 53 70 2f 0f db 21 8a 21 2b df
388)             0b 7e a4 d8 2b f5 7e 83 a2 83 fb c9 b7 e3 0b c4
389)             89 76 66 ab 2c 18 e7 89 f6 6e 4b 1c 87 53 6a be
390)             3f ed 36 92 f3 13 14 b1 fd 74 b4 91 23 35 6a 28
391)             00 00 00 80
392)             6d 03 51 3d c5 44 b8 60 eb 11 c7 fe c6 0e 6d 80
393)             07 a3 3d 70 4f 5e bf c9 b2 cf 82 86 4e b8 92 6d
394)             e6 8a b3 18 8c 05 b2 59 8b 55 72 04 fe ee 13 98
395)             c6 d6 11 8a 7f 0b c8 c2 ea 29 19 aa 6b 44 39 52
396)             bb c3 7c 28 60 2e 1b ec 1b d6 12 6f f3 29 c3 9a
397)             a6 f0 f8 87 49 a7 f0 86 46 b3 fe d7 b7 fb c8 4a
398)             a2 0a a8 7b bb 1d fa d0 85 d3 a2 29 26 be 64 ef
399)             40 02 88 db 51 1a ab 2c 34 5f 04 96 b9 75 79 f6
400)             00 00 00 15 00 c9 1d f7 a7
401)             8f 81 09 f5 69 1e 86 97 49 6a d3 c1 96 a0 96 d2
402)             00 00 00 1b 74 65 73 74 20 6b 65 79 20 77 69
403)             74 68 6f 75 74 20 70 61 73 73 70 68 72 61 73 65
404) """),
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

405)         'public_key': rb"""ssh-dss AAAAB3NzaC1kc3MAAACBALsoBleoEY1UsFA+twxgCg1bngGEPxoiF7sENZjMlyxoy3vZUpKSC5nz5dHudFrQL9mwGL64mnR2nHL1kxM5Zfi7lg8x5BxcR0YTFkh+KYapI4CzLp8KV3Yh8lklkTFwKaF71KyOx3dhIA8lGW45cVBz3kxmhHmEzCUgMPxDOsTtAAAAFQD32c5k6B3tocxUahelQQFyfseiywAAAIAuvYCDeHEzesp3HNVTDx9fRVU9c77f4qvyEZ7Qpz/s3BVoFUvUZDx96cG5bKekBRsfTCjeHXCQH/yFfqn5Lxye7msgGVS5U3AvD9shiiEr3wt+pNgr9X6DooP7ybfjC8SJdmarLBjnifZuSxyHU2q+P+02kvMTFLH9dLSRIzVqKAAAAIBtA1E9xUS4YOsRx/7GDm2AB6M9cE9ev8myz4KGTriSbeaKsxiMBbJZi1VyBP7uE5jG1hGKfwvIwuopGaprRDlSu8N8KGAuG+wb1hJv8ynDmqbw+IdJp/CGRrP+17f7yEqiCqh7ux360IXToikmvmTvQAKI21Eaqyw0XwSWuXV59g== test key without passphrase
406) """,  # noqa: E501
407)         'public_key_data': bytes.fromhex("""
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

408)             00 00 00 07 73 73 68 2d 64 73 73
409)             00 00 00 81 00
410)             bb 28 06 57 a8 11 8d 54 b0 50 3e b7 0c 60 0a 0d
411)             5b 9e 01 84 3f 1a 22 17 bb 04 35 98 cc 97 2c 68
412)             cb 7b d9 52 92 92 0b 99 f3 e5 d1 ee 74 5a d0 2f
413)             d9 b0 18 be b8 9a 74 76 9c 72 f5 93 13 39 65 f8
414)             bb 96 0f 31 e4 1c 5c 47 46 13 16 48 7e 29 86 a9
415)             23 80 b3 2e 9f 0a 57 76 21 f2 59 25 91 31 70 29
416)             a1 7b d4 ac 8e c7 77 61 20 0f 25 19 6e 39 71 50
417)             73 de 4c 66 84 79 84 cc 25 20 30 fc 43 3a c4 ed
418)             00 00 00 15 00 f7 d9 ce 64
419)             e8 1d ed a1 cc 54 6a 17 a5 41 01 72 7e c7 a2 cb
420)             00 00 00 80
421)             2e bd 80 83 78 71 33 7a ca 77 1c d5 53 0f 1f 5f
422)             45 55 3d 73 be df e2 ab f2 11 9e d0 a7 3f ec dc
423)             15 68 15 4b d4 64 3c 7d e9 c1 b9 6c a7 a4 05 1b
424)             1f 4c 28 de 1d 70 90 1f fc 85 7e a9 f9 2f 1c 9e
425)             ee 6b 20 19 54 b9 53 70 2f 0f db 21 8a 21 2b df
426)             0b 7e a4 d8 2b f5 7e 83 a2 83 fb c9 b7 e3 0b c4
427)             89 76 66 ab 2c 18 e7 89 f6 6e 4b 1c 87 53 6a be
428)             3f ed 36 92 f3 13 14 b1 fd 74 b4 91 23 35 6a 28
429)             00 00 00 80
430)             6d 03 51 3d c5 44 b8 60 eb 11 c7 fe c6 0e 6d 80
431)             07 a3 3d 70 4f 5e bf c9 b2 cf 82 86 4e b8 92 6d
432)             e6 8a b3 18 8c 05 b2 59 8b 55 72 04 fe ee 13 98
433)             c6 d6 11 8a 7f 0b c8 c2 ea 29 19 aa 6b 44 39 52
434)             bb c3 7c 28 60 2e 1b ec 1b d6 12 6f f3 29 c3 9a
435)             a6 f0 f8 87 49 a7 f0 86 46 b3 fe d7 b7 fb c8 4a
436)             a2 0a a8 7b bb 1d fa d0 85 d3 a2 29 26 be 64 ef
437)             40 02 88 db 51 1a ab 2c 34 5f 04 96 b9 75 79 f6
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

438) """),
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

439)         'expected_signature': None,
440)         'derived_passphrase': None,
441)     },
442)     'ecdsa256': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

443)         'private_key': rb"""-----BEGIN OPENSSH PRIVATE KEY-----
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

444) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
445) 1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQTLbU0zDwsk2Dvp+VYIrsNVf5gWwz2S
446) 3SZ8TbxiQRkpnGSVqyIoHJOJc+NQItAa7xlJ/8Z6gfz57Z3apUkaMJm6AAAAuKeY+YinmP
447) mIAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMttTTMPCyTYO+n5
448) Vgiuw1V/mBbDPZLdJnxNvGJBGSmcZJWrIigck4lz41Ai0BrvGUn/xnqB/PntndqlSRowmb
449) oAAAAhAKIl/3n0pKVIxpZkXTGtii782Qr4yIcvHdpxjO/QsIqKAAAAG3Rlc3Qga2V5IHdp
450) dGhvdXQgcGFzc3BocmFzZQECAwQ=
451) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

452) """,
Marco Ricci Add principal support for u...

Marco Ricci authored 1 month ago

453)         'private_key_blob': bytes.fromhex("""
454)             00 00 00 13 65 63 64
455)             73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 36
456)             00 00 00 08 6e 69 73 74 70 32 35 36
457)             00 00 00 41 04
458)             cb 6d 4d 33 0f 0b 24 d8 3b e9 f9 56 08 ae c3 55
459)             7f 98 16 c3 3d 92 dd 26 7c 4d bc 62 41 19 29 9c
460)             64 95 ab 22 28 1c 93 89 73 e3 50 22 d0 1a ef 19
461)             49 ff c6 7a 81 fc f9 ed 9d da a5 49 1a 30 99 ba
462)             00 00 00 21 00
463)             a2 25 ff 79 f4 a4 a5 48 c6 96 64 5d 31 ad 8a 2e
464)             fc d9 0a f8 c8 87 2f 1d da 71 8c ef d0 b0 8a 8a
465)             00 00 00 1b 74 65 73 74 20 6b 65 79 20 77 69
466)             74 68 6f 75 74 20 70 61 73 73 70 68 72 61 73 65
467) """),
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

468)         'public_key': rb"""ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMttTTMPCyTYO+n5Vgiuw1V/mBbDPZLdJnxNvGJBGSmcZJWrIigck4lz41Ai0BrvGUn/xnqB/PntndqlSRowmbo= test key without passphrase
469) """,  # noqa: E501
470)         'public_key_data': bytes.fromhex("""
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

471)             00 00 00 13 65 63 64 73 61 2d 73 68 61 32 2d 6e
472)             69 73 74 70 32 35 36
473)             00 00 00 08 6e 69 73 74 70 32 35 36
474)             00 00 00 41 04
475)             cb 6d 4d 33 0f 0b 24 d8 3b e9 f9 56 08 ae c3 55
476)             7f 98 16 c3 3d 92 dd 26 7c 4d bc 62 41 19 29 9c
477)             64 95 ab 22 28 1c 93 89 73 e3 50 22 d0 1a ef 19
478)             49 ff c6 7a 81 fc f9 ed 9d da a5 49 1a 30 99 ba
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

479) """),
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

480)         'expected_signature': None,
481)         'derived_passphrase': None,
482)     },
483)     'ecdsa384': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

484)         'private_key': rb"""-----BEGIN OPENSSH PRIVATE KEY-----
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

485) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAiAAAABNlY2RzYS
486) 1zaGEyLW5pc3RwMzg0AAAACG5pc3RwMzg0AAAAYQSgkOjkAvq7v5vHuj3KBL4/EAWcn5hZ
487) DyKcbyV0eBMGFq7hKXQlZqIahLVqeMR0QqmkxNJ2rly2VHcXneq3vZ+9fIsWCOdYk5WP3N
488) ZPzv911Xn7wbEkC7QndD5zKlm4pBUAAADomhj+IZoY/iEAAAATZWNkc2Etc2hhMi1uaXN0
489) cDM4NAAAAAhuaXN0cDM4NAAAAGEEoJDo5AL6u7+bx7o9ygS+PxAFnJ+YWQ8inG8ldHgTBh
490) au4Sl0JWaiGoS1anjEdEKppMTSdq5ctlR3F53qt72fvXyLFgjnWJOVj9zWT87/ddV5+8Gx
491) JAu0J3Q+cypZuKQVAAAAMQD5sTy8p+B1cn/DhOmXquui1BcxvASqzzevkBlbQoBa73y04B
492) 2OdqVOVRkwZWRROz0AAAAbdGVzdCBrZXkgd2l0aG91dCBwYXNzcGhyYXNlAQIDBA==
493) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

494) """,
Marco Ricci Add principal support for u...

Marco Ricci authored 1 month ago

495)         'private_key_blob': bytes.fromhex("""
496)             00 00 00 13 65 63 64
497)             73 61 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34
498)             00 00 00 08 6e 69 73 74 70 33 38 34
499)             00 00 00 61 04
500)             a0 90 e8 e4 02 fa bb bf 9b c7 ba 3d ca 04 be 3f
501)             10 05 9c 9f 98 59 0f 22 9c 6f 25 74 78 13 06 16
502)             ae e1 29 74 25 66 a2 1a 84 b5 6a 78 c4 74 42 a9
503)             a4 c4 d2 76 ae 5c b6 54 77 17 9d ea b7 bd 9f bd
504)             7c 8b 16 08 e7 58 93 95 8f dc d6 4f ce ff 75 d5
505)             79 fb c1 b1 24 0b b4 27 74 3e 73 2a 59 b8 a4 15
506)             00 00 00 31 00
507)             f9 b1 3c bc a7 e0 75 72 7f c3 84 e9 97 aa eb a2
508)             d4 17 31 bc 04 aa cf 37 af 90 19 5b 42 80 5a ef
509)             7c b4 e0 1d 8e 76 a5 4e 55 19 30 65 64 51 3b 3d
510)             00 00 00 1b 74 65 73 74 20 6b 65 79 20 77 69
511)             74 68 6f 75 74 20 70 61 73 73 70 68 72 61 73 65
512) """),
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

513)         'public_key': rb"""ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBKCQ6OQC+ru/m8e6PcoEvj8QBZyfmFkPIpxvJXR4EwYWruEpdCVmohqEtWp4xHRCqaTE0nauXLZUdxed6re9n718ixYI51iTlY/c1k/O/3XVefvBsSQLtCd0PnMqWbikFQ== test key without passphrase
514) """,  # noqa: E501
515)         'public_key_data': bytes.fromhex("""
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

516)             00 00 00 13
517)             65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70
518)             33 38 34
519)             00 00 00 08 6e 69 73 74 70 33 38 34
520)             00 00 00 61 04
521)             a0 90 e8 e4 02 fa bb bf 9b c7 ba 3d ca 04 be 3f
522)             10 05 9c 9f 98 59 0f 22 9c 6f 25 74 78 13 06 16
523)             ae e1 29 74 25 66 a2 1a 84 b5 6a 78 c4 74 42 a9
524)             a4 c4 d2 76 ae 5c b6 54 77 17 9d ea b7 bd 9f bd
525)             7c 8b 16 08 e7 58 93 95 8f dc d6 4f ce ff 75 d5
526)             79 fb c1 b1 24 0b b4 27 74 3e 73 2a 59 b8 a4 15
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

527) """),
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

528)         'expected_signature': None,
529)         'derived_passphrase': None,
530)     },
531) }
532) 
533) DUMMY_SERVICE = 'service1'
Marco Ricci Clean up testing machinery...

Marco Ricci authored 2 months ago

534) DUMMY_PASSPHRASE = 'my secret passphrase'
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

535) DUMMY_KEY1 = SUPPORTED_KEYS['ed25519']['public_key_data']
536) DUMMY_KEY1_B64 = base64.standard_b64encode(DUMMY_KEY1).decode('ASCII')
537) DUMMY_KEY2 = SUPPORTED_KEYS['rsa']['public_key_data']
538) DUMMY_KEY2_B64 = base64.standard_b64encode(DUMMY_KEY2).decode('ASCII')
Marco Ricci Avoid crashing when overrid...

Marco Ricci authored 3 months ago

539) DUMMY_KEY3 = SUPPORTED_KEYS['ed448']['public_key_data']
540) DUMMY_KEY3_B64 = base64.standard_b64encode(DUMMY_KEY3).decode('ASCII')
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

541) DUMMY_CONFIG_SETTINGS = {
542)     'length': 10,
543)     'upper': 1,
544)     'lower': 1,
545)     'repeat': 5,
546)     'number': 1,
547)     'space': 1,
548)     'dash': 1,
549)     'symbol': 1,
550) }
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

551) DUMMY_RESULT_PASSPHRASE = b'.2V_QJkd o'
552) DUMMY_RESULT_KEY1 = b'E<b<{ -7iG'
553) DUMMY_PHRASE_FROM_KEY1_RAW = (
554)     b'\x00\x00\x00\x0bssh-ed25519'
555)     b'\x00\x00\x00@\xf0\x98\x19\x80l\x1a\x97\xd5&\x03n'
556)     b'\xcc\xe3e\x8f\x86f\x07\x13\x19\x13\t!33\xf9\xe46S'
557)     b'\x1d\xaf\xfd\r\x08\x1f\xec\xf8s\x9b\x8c_U9\x16|ST,'
558)     b'\x1eR\xbb0\xed\x7f\x89\xe2/iQU\xd8\x9e\xa6\x02'
559) )
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 3 months ago

560) DUMMY_PHRASE_FROM_KEY1 = b'8JgZgGwal9UmA27M42WPhmYHExkTCSEzM/nkNlMdr/0NCB/s+HObjF9VORZ8U1QsHlK7MO1/ieIvaVFV2J6mAg=='  # noqa: E501
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

561) 
Marco Ricci Move exporter command-line...

Marco Ricci authored 2 months ago

562) VAULT_MASTER_KEY = 'vault key'
563) VAULT_V02_CONFIG = 'P7xeh5y4jmjpJ2pFq4KUcTVoaE9ZOEkwWmpVTURSSWQxbGt6emN4aFE4eFM3anVPbDRNTGpOLzY3eDF5aE1YTm5LNWh5Q1BwWTMwM3M5S083MWRWRFlmOXNqSFJNcStGMWFOS3c2emhiOUNNenZYTmNNMnZxaUErdlRoOGF2ZHdGT1ZLNTNLOVJQcU9jWmJrR3g5N09VcVBRZ0ZnSFNUQy9HdFVWWnFteVhRVkY3MHNBdnF2ZWFEbFBseWRGelE1c3BFTnVUckRQdWJSL29wNjFxd2Y2ZVpob3VyVzRod3FKTElTenJ1WTZacTJFOFBtK3BnVzh0QWVxcWtyWFdXOXYyenNQeFNZbWt1MDU2Vm1kVGtISWIxWTBpcWRFbyswUVJudVVhZkVlNVpGWDA4WUQ2Q2JTWW81SnlhQ2Zxa3cxNmZoQjJES0Uyd29rNXpSck5iWVBrVmEwOXFya1NpMi9saU5LL3F0M3N3MjZKekNCem9ER2svWkZ0SUJLdmlHRno0VlQzQ3pqZTBWcTM3YmRiNmJjTkhqUHZoQ0NxMW1ldW1XOFVVK3pQMEtUMkRMVGNvNHFlOG40ck5KcGhsYXg1b1VzZ1NYU1B2T3RXdEkwYzg4NWE3YWUzOWI1MDI0MThhMWZjODQ3MDA2OTJmNDQ0MDkxNGFiNmRlMGQ2YjZiNjI5NGMwN2IwMmI4MGZi'  # noqa: E501
564) VAULT_V02_CONFIG_DATA = {
565)     'global': {
Marco Ricci Clean up testing machinery...

Marco Ricci authored 2 months ago

566)         'phrase': DUMMY_PASSPHRASE.rstrip('\n'),
Marco Ricci Move exporter command-line...

Marco Ricci authored 2 months ago

567)     },
568)     'services': {
569)         '(meta)': {
570)             'notes': 'This config was originally in v0.2 format.',
571)         },
572)         DUMMY_SERVICE: DUMMY_CONFIG_SETTINGS.copy(),
573)     },
574) }
575) VAULT_V03_CONFIG = 'sBPBrr8BFHPxSJkV/A53zk9zwDQHFxLe6UIusCVvzFQre103pcj5xxmE11lMTA0U2QTYjkhRXKkH5WegSmYpAnzReuRsYZlWWp6N4kkubf+twZ9C3EeggPm7as2Af4TICHVbX4uXpIHeQJf9y1OtqrO+SRBrgPBzgItoxsIxebxVKgyvh1CZQOSkn7BIzt9xKhDng3ubS4hQ91fB0QCumlldTbUl8tj4Xs5JbvsSlUMxRlVzZ0OgAOrSsoWELXmsp6zXFa9K6wIuZa4wQuMLQFHiA64JO1CR3I+rviWCeMlbTOuJNx6vMB5zotKJqA2hIUpN467TQ9vI4g/QTo40m5LT2EQKbIdTvBQAzcV4lOcpr5Lqt4LHED5mKvm/4YfpuuT3I3XCdWfdG5SB7ciiB4Go+xQdddy3zZMiwm1fEwIB8XjFf2cxoJdccLQ2yxf+9diedBP04EsMHrvxKDhQ7/vHl7xF2MMFTDKl3WFd23vvcjpR1JgNAKYprG/e1p/7'  # noqa: E501
576) VAULT_V03_CONFIG_DATA = {
577)     'global': {
Marco Ricci Clean up testing machinery...

Marco Ricci authored 2 months ago

578)         'phrase': DUMMY_PASSPHRASE.rstrip('\n'),
Marco Ricci Move exporter command-line...

Marco Ricci authored 2 months ago

579)     },
580)     'services': {
581)         '(meta)': {
582)             'notes': 'This config was originally in v0.3 format.',
583)         },
584)         DUMMY_SERVICE: DUMMY_CONFIG_SETTINGS.copy(),
585)     },
586) }
587) VAULT_STOREROOM_CONFIG_ZIPPED = b"""
588) UEsDBBQAAAAIAJ1WGVnTVFGT0gAAAOYAAAAFAAAALmtleXMFwclSgzAAANC7n9GrBzBldcYDE5Al
589) EKbFAvGWklBAtqYsBcd/973fw8LFox76w/vb34tzhD5OATeEAk6tJ6Fbp3WrvkJO7l0KIjtxCLfY
590) ORm8ScEDPbNkyVwGLmZNTuQzXPMl/GnLO0I2PmUhRcxSj2Iy6PUy57up4thL6zndYwtyORpyCTGy
591) ibbjIeq/K/9atsHkl680nwsKFVk1i97gbGhG4gC5CMS8aUx8uebuToRCDsAT61UQVp0yEjw1bhm1
592) 6UPWzM2wyfMGMyY1ox5HH/9QSwMEFAAAAAgAnVYZWd1pX+EFAwAA1AMAAAIAAAAwMA3ON7abQAAA
593) wP4fwy0FQUR3ZASLYEkCOnKOEtHPd7e7KefPr71YP800/vqN//3hAywvUaCcTYb6TbKS/kYcVnvG
594) wGA5N8ksjpFNCu5BZGu953GdoVnOfN6PNXoluWOS2JzO23ELNJ2m9nDn0uDhwC39VHJT1pQdejIw
595) CovQTEWmBH53FJufhNSZKQG5s1fMcw9hqn3NbON6wRDquOjLe/tqWkG1yiQDSF5Ail8Wd2UaA7vo
596) 40QorG1uOBU7nPlDx/cCTDpSqwTZDkkAt6Zy9RT61NUZqHSMIgKMerj3njXOK+1q5sA/upSGvMrN
597) 7/JpSEhcmu7GDvQJ8TyLos6vPCSmxO6RRG3X4BLpqHkTgeqHz+YDZwTV+6y5dvSmTSsCP5uPCmi+
598) 7r9irZ1m777iL2R8NFH0QDIo1GFsy1NrUvWq4TGuvVIbkHrML5mFdR6ajNhRjL/6//1crYAMLHxo
599) qkjGz2Wck2dmRd96mFFAfdQ1/BqDgi6X/KRwHL9VmhpdjcKJhuE04xLYgTCyKLv8TkFfseNAbN3N
600) 7KvVW7QVF97W50pzXzy3Ea3CatNQkJ1DnkR0vc0dsHd1Zr0o1acUaAa65B2yjYXCk3TFlMo9TNce
601) OWBXzJrpaZ4N7bscdwCF9XYesSMpxBDpwyCIVyJ8tHZVf/iS4pE6u+XgvD42yef+ujhM/AyboqPk
602) sFNV/XoNpmWIySdkTMmwu72q1GfPqr01ze/TzCVrCe0KkFcZhe77jrLPOnRCIarF2c9MMHNfmguU
603) A0tJ8HodQb/zehL6C9KSiNWfG+NlK1Dro1sGKhiJETLMFru272CNlwQJmzTHuKAXuUvJmQCfmLfL
604) EPrxoE08fu+v6DKnSopnG8GTkbscPZ+K5q2kC6m7pCizKO1sLKG7fMBRnJxnel/vmpY2lFCB4ADy
605) no+dvqBl6z3X/ji9AFXC9X8HRd+8u57OS1zV4OhiVd7hMy1U8F5qbIBms+FS6QbL9NhIb2lFN4VO
606) 3+ITZz1sPJBl68ZgJWOV6O4F5cAHGKl/UEsDBBQAAAAIAJ1WGVn9pqLBygEAACsCAAACAAAAMDMN
607) z8mWa0AAANB9f0ZvLZQhyDsnC0IMJShDBTuzJMZoktLn/ft79w/u7/dWvZb7OHz/Yf5+yYUBMTNK
608) RrCI1xIQs67d6yI6bM75waX0gRLdKMGyC5O2SzBLs57V4+bqxo5xI2DraLTVeniUXLxkLyjRnC4u
609) 24Vp+7p+ppt9DlVNNZp7rskQDOe47mbgViNeE5oXpg/oDgTcfQYNvt8V0OoyKbIiNymOW/mB3hze
610) D1EHqTWQvFZB5ANGpLMM0U10xWYAClzuVJXKm/n/8JgVaobY38IjzxXyk4iPkQUuYtws73Kan871
611) R3mZa7/j0pO6Wu0LuoV+czp9yZEH/SU42lCgjEsZ9Mny3tHaF09QWU4oB7HI+LBhKnFJ9c0bHEky
612) OooHgzgTIa0y8fbpst30PEUwfUAS+lYzPXG3y+QUiy5nrJFPb0IwESd9gIIOVSfZK63wvD5ueoxj
613) O9bn2gutSFT6GO17ibguhXtItAjPbZWfyyQqHRyeBcpT7qbzQ6H1Of5clEqVdNcetAg8ZMKoWTbq
614) /vSSQ2lpkEqT0tEQo7zwKBzeB37AysB5hhDCPn1gUTER6d+1S4dzwO7HhDf9kG+3botig2Xm1Dz9
615) A1BLAwQUAAAACACdVhlZs14oCcgBAAArAgAAAgAAADA5BcHJkqIwAADQe39GXz2wE5gqDxAGQRZF
616) QZZbDIFG2YwIga7593nv93sm9N0M/fcf4d+XcUlVE+kvustz3BU7FjHOaW+u6TRsfNKzLh74mO1w
617) IXUlM/2sGKKuY5sYrW5N+oGqit2zLBYv57mFvH/S8pWGYDGzUnU1CdTL3B4Yix+Hk8E/+m0cSi2E
618) dnAibw1brWVXM++8iYcUg84TMbJXntFYCyrNw1NF+008I02PeH4C8oDID6fIoKvsw3p7WJJ/I9Yp
619) a6oJzlJiP5JGxRxZPj50N6EMtzNB+tZoIGxgtOFVpiJ05yMQFztY6I6LKIgvXW/s919GIjGshqdM
620) XVPFxaKG4p9Iux/xazf48FY8O7SMmbQC1VsXIYo+7eSpIY67VzrCoh41wXPklOWS6CV8RR/JBSqq
621) 8lHkcz8L21lMCOrVR1Cs0ls4HLIhUkqr9YegTJ67VM7xevUsgOI7BkPDldiulRgX+sdPheCyCacu
622) e7/b/nk0SXWF7ZBxsR1awYqwkFKz41/1bZDsETsmd8n1DHycGIvRULv3yYhKcvWQ4asAMhP1ks5k
623) AgOcrM+JFvpYA86Ja8HCqCg8LihEI1e7+m8F71Lpavv/UEsDBBQAAAAIAJ1WGVnKO2Ji+AEAAGsC
624) AAACAAAAMWENx7dyo0AAANDen+GWAonMzbggLsJakgGBOhBLlGBZsjz373eve7+fKyJTM/Sff85/
625) P5QMwMFfAWipfXwvFPWU582cd3t7JVV5pBV0Y1clL4eKUd0w1m1M5JrkgW5PlfpOVedgABSe4zPY
626) LnSIZVuen5Eua9QY8lQ7rxW7YIqeajhgLfL54BIcY90fd8ANixlcM8V23Z03U35Txba0BbSguc0f
627) NRF83cWp+7rOYgNO9wWLs915oQmWAqAtqRYCiWlgAtxYFg0MnNS4/G80FvFmQTh0cjwcF1xEVPeW
628) l72ky84PEA0QMgRtQW+HXWtE0/vQTtNKzvNqPfrGZCldL5nk9PWhhPEQ/azyW11bz2eB+aM0g0r7
629) 0/5YkO9er10YonsBT1rEn0lfBXDHwtwbxG2bdqELTuEtX2+OEih7K43rN2EvpXX47azaNpe/drIz
630) wgAdhpfZ/mZwaGFX0c7r5HCTnroNRi5Bx/vu7m1A7Nt1dix4Gl/aPLCWQzpwmdIMJDiqD1RGpc5v
631) +pDLrpfhZOVhLjAPSQ0V7mm/XNSca8oIsDjwdvR438RQCU56mrlypklS4/tJAe0JZNZIgBmJszjG
632) AFbsmNYTJ9GmULB9lXmTWmrME592S285iWU5SsJcE1s+3oQw9QrvWB+e3bGAd9e+VFmFqr6+/gFQ
633) SwECHgMUAAAACACdVhlZ01RRk9IAAADmAAAABQAAAAAAAAABAAAApIEAAAAALmtleXNQSwECHgMU
634) AAAACACdVhlZ3Wlf4QUDAADUAwAAAgAAAAAAAAABAAAApIH1AAAAMDBQSwECHgMUAAAACACdVhlZ
635) /aaiwcoBAAArAgAAAgAAAAAAAAABAAAApIEaBAAAMDNQSwECHgMUAAAACACdVhlZs14oCcgBAAAr
636) AgAAAgAAAAAAAAABAAAApIEEBgAAMDlQSwECHgMUAAAACACdVhlZyjtiYvgBAABrAgAAAgAAAAAA
637) AAABAAAApIHsBwAAMWFQSwUGAAAAAAUABQDzAAAABAoAAAAA
638) """
639) VAULT_STOREROOM_CONFIG_DATA = {
640)     'global': {
Marco Ricci Clean up testing machinery...

Marco Ricci authored 2 months ago

641)         'phrase': DUMMY_PASSPHRASE.rstrip('\n'),
Marco Ricci Move exporter command-line...

Marco Ricci authored 2 months ago

642)     },
643)     'services': {
644)         '(meta)': {
645)             'notes': 'This config was originally in storeroom format.',
646)         },
647)         DUMMY_SERVICE: DUMMY_CONFIG_SETTINGS.copy(),
648)     },
649) }
650) 
Marco Ricci Add more tests of the store...

Marco Ricci authored 2 months ago

651) _VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED_JAVASCRIPT_SOURCE = """
652) // Executed in the top-level directory of the vault project code, in Node.js.
653) const storeroom = require('storeroom')
654) const Store = require('./lib/store.js')
655) let store = new Store(storeroom.createFileAdapter('./broken-dir', 'vault key'))
656) await store._storeroom.put('/services/array/', ['entry1','entry2'])
657) // The resulting "broken-dir" was then zipped manually.
658) """
659) VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED = b"""
660) UEsDBBQAAgAIAHijH1kjc0ql0gAAAOYAAAAFAAAALmtleXMFwclygjAAANB7P8Mrh7LIYmd6oGxC
661) HKwTJJgbNpBKCpGAhNTpv/e952ZpxHTjw+bN+HuJJABEikvHecD0pLgpgYKWjue0CZGk19mKF+4f
662) 0AoLrXKh+ckk13nmxVk/KFE28eEHkBgJTISvRUVMQ0N5aRapLgWs/M7NSXV7qs0s2aIEstUG5FHv
663) fo/HKjpdUJMGK86vs2rOJFGyrx9ZK4iWW+LefwSTYxhYOlWpb0PpgXsV4dHNTz5skcJqpPUudZf9
664) jCFD0vxChL6ajm0P0prY+z9QSwMEFAACAAgAeKMfWX4L7vDYAQAAPwIAAAIAAAAwNQXByZKiMAAA
665) 0Ht/Rl85sIR1qvqAouxbJAG8kWYxgCKICEzNv897f7+XanrR4fH9h//3pVdF8qmVeWjW+STwSbak
666) 4e3CS00h2AcrQIcghm0lOcrLdJfuaOFqg5zEsW9lTbJMtIId5ezNGM9jPKaxeriXXm45pGuHCwFP
667) /gmcXKWGeU3sHfj93iIf6p0xrfQIGGJOvayKjzypUqb99Bllo9IwNP2FZjxmBWDw0NRzJrxr/4Qj
668) qp4ted4f91ZaR8+64C0BJBzDngElJEFLdA2WBcip2R/VZIG219WT3JlkbFrYSjhHWeb47igytTpo
669) USPjEJWVol0cVpD6iX1/mGM2BpHAFa+fLx3trXgbXaVmjyZVzUKDh/XqnovnLs529UGYCAdj8Xnx
670) vWwfWclm5uIB8cHbElx6G82Zs8RQnkDsyGVDbNaMOO7lMQF7o1Uy7Q9GuSWcFMK4KBAbcwm4l8RY
671) +2ema46H3/S31IW1LOFpoZxjwyBS69dWS7/ulVxJfbuydMvZMeWpmerjUHnKaQdumibSeSOXh+zg
672) XU6w6SsKAjHWXCTjRehWmyNnI7z3+epr1RzUlnDcUMiYQ/seaNefgNx4jIbOw92FC2hxnZOJupK9
673) M1WVdH3+8x9QSwMEFAACAAgAeKMfWUXRU2i7AQAAFwIAAAIAAAAxYQ3QyZZjUAAA0H19Rm2zCGLs
674) c2rxzDMxBTtTEA8hnqlO/3v3/YT7+71W86cdh+8/+N8vUMGNNAjWlNHgsyBlwCpgBd/a2rrW0qwg
675) p/CmvT4PTpwjHztJ2T10Jc2Fc8O7eHQb9MawAbxSKscxFAjz5wnJviaOMT5kEIZS+ibU6GgqU61P
676) lbeYRIiNCfK1VeHMFCpUhZ1ipnh50kux5N2jph5aMvc+HOR3lQgx9MJpMzQ2oNxSfEm7wZ5s0GYb
677) Bgy2xwaEMXNRnbzlbijZJi0M7yXNKS7nS1uFMtsapEc204YOBbOY4VK6L/9jS2ez56ybGkQPfn6+
678) QCwTqvkR5ieuRhF0zcoPLld+OUlI0RfEPnYHKEG7gtSya/Z1Hh77Xq4ytJHdr7WmXt7BUFA8Sffm
679) obXI31UOyVNLW0y4WMKDWq+atKGbU5BDUayoITMqvCteAZfJvnR4kZftMaFEG5ln7ptpdzpl10m3
680) G2rgUwTjPBJKomnOtJpdwm1tXm6IMPQ6IPy7oMDC5JjrmxAPXwdPnY/i07Go6EKSYjbkj8vdj/BR
681) rAMe2wnzdJaRhKv8kPVG1VqNdzm6xLb/Cf8AUEsDBBQAAgAIAHijH1kaCPeauQEAABcCAAACAAAA
682) MWUFwTmyokAAAND8H+OnBAKyTpVBs8iOIG2zZM0OigJCg07N3ee9v7+kmt/d6/n7h/n3AyJEvoaD
683) gtd8f4RxATnaHVeGNjyuolVVL+mY8Tms5ldfgYseNYMzRYJj3+i3iUgqlT5D1r7j1Bh5qVzi14X0
684) jpuH7DBKeeot2jWI5mPubptvV567pX2U3OC6ccxWmyo2Dd3ehUkbPP4uiDgWDZzFg/fFETIawMng
685) ahWHB2cfc2bM2kugNhWLS4peUBp36UWqMpF6+sLeUxAVZ24u08MDNMpNk81VDgiftnfBTBBhBGm0
686) RNpzxMMOPnCx3RRFgttiJTydfkB9MeZ9pvxP9jUm/fndQfJI83CsBxcEWhbjzlEparc3VS2s4LjR
687) 3Xafw3HLSlPqylHOWK2vc2ZJoObwqrCaFRg7kz1+z08SGu8pe0EHaII6FSxL7VM+rfVgpc1045Ut
688) 6ayCQ0TwRL5m4oMYkZbFnivCBTY3Cdji2SQ+gh8m3A6YkFxXUH0Vz9Is8JZaLFyi24GjyZZ9rGuk
689) Y6w53oLyTF/fSzG24ghCDZ6pOgB5qyfk4z2mUmH7pwxNCoHZ1oaxeTSn039QSwECHgMUAAIACAB4
690) ox9ZI3NKpdIAAADmAAAABQAAAAAAAAABAAAApIEAAAAALmtleXNQSwECHgMUAAIACAB4ox9Zfgvu
691) 8NgBAAA/AgAAAgAAAAAAAAABAAAApIH1AAAAMDVQSwECHgMUAAIACAB4ox9ZRdFTaLsBAAAXAgAA
692) AgAAAAAAAAABAAAApIHtAgAAMWFQSwECHgMUAAIACAB4ox9ZGgj3mrkBAAAXAgAAAgAAAAAAAAAB
693) AAAApIHIBAAAMWVQSwUGAAAAAAQABADDAAAAoQYAAAAA
694) """
695) 
Marco Ricci Move exporter command-line...

Marco Ricci authored 2 months ago

696) CANNOT_LOAD_CRYPTOGRAPHY = (
Marco Ricci Clean up testing machinery...

Marco Ricci authored 2 months ago

697)     'Cannot load the required Python module "cryptography".'
Marco Ricci Move exporter command-line...

Marco Ricci authored 2 months ago

698) )
699) 
Marco Ricci Test exporter data loading...

Marco Ricci authored 2 months ago

700) skip_if_cryptography_support = pytest.mark.skipif(
701)     importlib.util.find_spec('cryptography') is not None,
702)     reason='cryptography support available; cannot test "no support" scenario',
703) )
704) skip_if_no_cryptography_support = pytest.mark.skipif(
705)     importlib.util.find_spec('cryptography') is None,
706)     reason='no "cryptography" support',
707) )
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

708) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

709) 
Marco Ricci Consolidate `types` submodu...

Marco Ricci authored 3 months ago

710) def list_keys(self: Any = None) -> list[_types.KeyCommentPair]:
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 3 months ago

711)     del self  # Unused.
Marco Ricci Consolidate `types` submodu...

Marco Ricci authored 3 months ago

712)     Pair = _types.KeyCommentPair  # noqa: N806
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

713)     list1 = [
714)         Pair(value['public_key_data'], f'{key} test key'.encode('ASCII'))
715)         for key, value in SUPPORTED_KEYS.items()
716)     ]
717)     list2 = [
718)         Pair(value['public_key_data'], f'{key} test key'.encode('ASCII'))
719)         for key, value in UNSUITABLE_KEYS.items()
720)     ]
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

721)     return list1 + list2
722) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

723) 
Marco Ricci Consolidate `types` submodu...

Marco Ricci authored 3 months ago

724) def list_keys_singleton(self: Any = None) -> list[_types.KeyCommentPair]:
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 3 months ago

725)     del self  # Unused.
Marco Ricci Consolidate `types` submodu...

Marco Ricci authored 3 months ago

726)     Pair = _types.KeyCommentPair  # noqa: N806
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

727)     list1 = [
728)         Pair(value['public_key_data'], f'{key} test key'.encode('ASCII'))
729)         for key, value in SUPPORTED_KEYS.items()
730)     ]
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

731)     return list1[:1]
732) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

733) 
Marco Ricci Consolidate `types` submodu...

Marco Ricci authored 3 months ago

734) def suitable_ssh_keys(conn: Any) -> Iterator[_types.KeyCommentPair]:
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 3 months ago

735)     del conn  # Unused.
Marco Ricci Consolidate `types` submodu...

Marco Ricci authored 3 months ago

736)     Pair = _types.KeyCommentPair  # noqa: N806
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

737)     yield from [
Marco Ricci Move `sequin` and `ssh_agen...

Marco Ricci authored 3 months ago

738)         Pair(DUMMY_KEY1, b'no comment'),
739)         Pair(DUMMY_KEY2, b'a comment'),
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

740)     ]
741) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

742) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

743) def phrase_from_key(key: bytes) -> bytes:
744)     if key == DUMMY_KEY1:  # pragma: no branch
745)         return DUMMY_PHRASE_FROM_KEY1
746)     raise KeyError(key)  # pragma: no cover
747) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

748) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

749) @contextlib.contextmanager
750) def isolated_config(
Marco Ricci Clean up testing machinery...

Marco Ricci authored 2 months ago

751)     monkeypatch: pytest.MonkeyPatch,
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

752)     runner: click.testing.CliRunner,
Marco Ricci Fix typing issues in mypy s...

Marco Ricci authored 3 months ago

753) ) -> Iterator[None]:
Marco Ricci Consolidate `types` submodu...

Marco Ricci authored 3 months ago

754)     prog_name = cli.PROG_NAME
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

755)     env_name = prog_name.replace(' ', '_').upper() + '_PATH'
756)     with runner.isolated_filesystem():
757)         monkeypatch.setenv('HOME', os.getcwd())
758)         monkeypatch.setenv('USERPROFILE', os.getcwd())
759)         monkeypatch.delenv(env_name, raising=False)
Marco Ricci Rename the configuration fi...

Marco Ricci authored 2 months ago

760)         config_dir = cli._config_filename(subsystem=None)
761)         os.makedirs(config_dir, exist_ok=True)
Marco Ricci Modularize test helpers to...

Marco Ricci authored 2 months ago

762)         yield
763) 
764) 
765) @contextlib.contextmanager
766) def isolated_vault_config(
767)     monkeypatch: pytest.MonkeyPatch,
768)     runner: click.testing.CliRunner,
769)     config: Any,
770) ) -> Iterator[None]:
771)     with isolated_config(monkeypatch=monkeypatch, runner=runner):
Marco Ricci Rename the configuration fi...

Marco Ricci authored 2 months ago

772)         config_filename = cli._config_filename(subsystem='vault')
773)         with open(config_filename, 'w', encoding='UTF-8') as outfile:
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

774)             json.dump(config, outfile)
775)         yield
776) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 3 months ago

777) 
Marco Ricci Add preliminary tests for t...

Marco Ricci authored 2 months ago

778) @contextlib.contextmanager
779) def isolated_vault_exporter_config(
780)     monkeypatch: pytest.MonkeyPatch,
781)     runner: click.testing.CliRunner,
782)     vault_config: str | bytes | None = None,
783)     vault_key: str | None = None,
784) ) -> Iterator[None]:
785)     if TYPE_CHECKING:
786)         chdir = contextlib.chdir
787)     else:
788)         try:
789)             chdir = contextlib.chdir
790)         except AttributeError:
791) 
792)             @contextlib.contextmanager
Marco Ricci Move exporter command-line...

Marco Ricci authored 2 months ago

793)             def chdir(newpath: str) -> Iterator[None]:  # pragma: no branch
Marco Ricci Add preliminary tests for t...

Marco Ricci authored 2 months ago

794)                 oldpath = os.getcwd()
795)                 os.chdir(newpath)
796)                 yield
797)                 os.chdir(oldpath)
798) 
799)     with runner.isolated_filesystem():
800)         monkeypatch.setenv('HOME', os.getcwd())
801)         monkeypatch.setenv('USERPROFILE', os.getcwd())
802)         monkeypatch.delenv('VAULT_PATH', raising=False)
803)         monkeypatch.delenv('VAULT_KEY', raising=False)
804)         monkeypatch.delenv('LOGNAME', raising=False)
805)         monkeypatch.delenv('USER', raising=False)
806)         monkeypatch.delenv('USERNAME', raising=False)
807)         if vault_key is not None:
808)             monkeypatch.setenv('VAULT_KEY', vault_key)
Marco Ricci Add support for Python 3.9

Marco Ricci authored 1 month ago

809)         # Use match/case here once Python 3.9 becomes unsupported.
810)         if isinstance(vault_config, str):
811)             with open('.vault', 'w', encoding='UTF-8') as outfile:
812)                 print(vault_config, file=outfile)
813)         elif isinstance(vault_config, bytes):
814)             os.makedirs('.vault', mode=0o700, exist_ok=True)
815)             with (
816)                 chdir('.vault'),
817)                 tempfile.NamedTemporaryFile(suffix='.zip') as tmpzipfile,
818)             ):
819)                 for line in vault_config.splitlines():
820)                     tmpzipfile.write(base64.standard_b64decode(line))
821)                 tmpzipfile.flush()
822)                 tmpzipfile.seek(0, 0)
823)                 with zipfile.ZipFile(tmpzipfile.file) as zipfileobj:
824)                     zipfileobj.extractall()
825)         elif vault_config is None:
826)             pass
827)         else:  # pragma: no cover
828)             assert_never(vault_config)
Marco Ricci Add preliminary tests for t...

Marco Ricci authored 2 months ago

829)         yield
830) 
831) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 4 months ago

832) def auto_prompt(*args: Any, **kwargs: Any) -> str:
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 3 months ago

833)     del args, kwargs  # Unused.
Marco Ricci Clean up testing machinery...

Marco Ricci authored 2 months ago

834)     return DUMMY_PASSPHRASE
Marco Ricci Add missing tests for rewor...

Marco Ricci authored 2 months ago

835) 
836) 
837) def make_file_readonly(
838)     pathname: str | bytes | os.PathLike[str],
839)     /,
840)     *,
841)     try_race_free_implementation: bool = True,
842) ) -> None:
843)     """Mark a file as read-only.
844) 
845)     On POSIX, this entails removing the write permission bits for user,
846)     group and other, and ensuring the read permission bit for user is
847)     set.
848) 
849)     Unfortunately, Windows has its own rules: Set exactly(?) the read
850)     permission bit for user to make the file read-only, and set
851)     exactly(?) the write permission bit for user to make the file
852)     read/write; all other permission bit settings are ignored.
853) 
854)     The cross-platform procedure therefore is:
855) 
856)     1. Call `os.stat` on the file, noting the permission bits.
857)     2. Calculate the new permission bits POSIX-style.
858)     3. Call `os.chmod` with permission bit `stat.S_IREAD`.
859)     4. Call `os.chmod` with the correct POSIX-style permissions.
860) 
861)     If the platform supports it, we use a file descriptor instead of
862)     a path name.  Otherwise, we use the same path name multiple times,
863)     and are susceptible to race conditions.
864) 
865)     """
866)     fname: int | str | bytes | os.PathLike[str]
867)     if try_race_free_implementation and {os.stat, os.chmod} <= os.supports_fd:
868)         fname = os.open(
869)             pathname,
870)             os.O_RDONLY
871)             | getattr(os, 'O_CLOEXEC', 0)
872)             | getattr(os, 'O_NOCTTY', 0),
873)         )
874)     else:
875)         fname = pathname
876)     try:
877)         orig_mode = os.stat(fname).st_mode
878)         new_mode = (
879)             orig_mode & ~stat.S_IWUSR & ~stat.S_IWGRP & ~stat.S_IWOTH
880)             | stat.S_IREAD
881)         )
882)         os.chmod(fname, stat.S_IREAD)
883)         os.chmod(fname, new_mode)
884)     finally:
885)         if isinstance(fname, int):
886)             os.close(fname)
Marco Ricci Clean up testing machinery...

Marco Ricci authored 2 months ago

887) 
888) 
889) class ReadableResult(NamedTuple):
890)     """Helper class for formatting and testing click.testing.Result objects."""
891) 
892)     exception: BaseException | None
893)     exit_code: int
894)     output: str
895)     stderr: str
896) 
897)     @classmethod
898)     def parse(cls, r: click.testing.Result, /) -> Self:
899)         try:
900)             stderr = r.stderr
901)         except ValueError:
902)             stderr = r.output
903)         return cls(r.exception, r.exit_code, r.output or '', stderr or '')
904) 
905)     def clean_exit(
906)         self, *, output: str = '', empty_stderr: bool = False
907)     ) -> bool:
908)         """Return whether the invocation exited cleanly.
909) 
910)         Args:
911)             output:
912)                 An expected output string.
913) 
914)         """
915)         return (
916)             (
917)                 not self.exception
918)                 or (
919)                     isinstance(self.exception, SystemExit)
920)                     and self.exit_code == 0
921)                 )
922)             )
923)             and (not output or output in self.output)
924)             and (not empty_stderr or not self.stderr)
925)         )
926) 
927)     def error_exit(
928)         self, *, error: str | type[BaseException] = BaseException
929)     ) -> bool:
930)         """Return whether the invocation exited uncleanly.
931) 
932)         Args:
933)             error:
934)                 An expected error message, or an expected numeric error
935)                 code, or an expected exception type.
936) 
937)         """
Marco Ricci Add support for Python 3.9

Marco Ricci authored 1 month ago

938)         # Use match/case here once Python 3.9 becomes unsupported.
939)         if isinstance(error, str):
940)             return (
941)                 isinstance(self.exception, SystemExit)
942)                 and self.exit_code > 0
943)                 and (not error or error in self.stderr)
944)             )
945)         else:  # noqa: RET505
946)             return isinstance(self.exception, error)