3035794147127de9be9b42cf96353e598389b71a
Marco Ricci Change the author e-mail ad...

Marco Ricci authored 3 months ago

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

Marco Ricci authored 7 months ago

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

Marco Ricci authored 5 months ago

4) 
5) from __future__ import annotations
6) 
7) import base64
8) import contextlib
Marco Ricci Test exporter data loading...

Marco Ricci authored 3 months ago

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

Marco Ricci authored 5 months ago

10) import json
11) import os
Marco Ricci Add missing tests for rewor...

Marco Ricci authored 4 months ago

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

Marco Ricci authored 3 months ago

13) import tempfile
14) import zipfile
Marco Ricci Support Python 3.10 and PyP...

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 3 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 4 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 3 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 3 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

42) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
43) QyNTUxOQAAACCBeIFoJtYCSF8P/zJIb+TBMIncHGpFBgnpCQ/7whJpdgAAAKDweO7H8Hju
44) xwAAAAtzc2gtZWQyNTUxOQAAACCBeIFoJtYCSF8P/zJIb+TBMIncHGpFBgnpCQ/7whJpdg
45) AAAEAbM/A869nkWZbe2tp3Dm/L6gitvmpH/aRZt8sBII3ExYF4gWgm1gJIXw//Mkhv5MEw
46) idwcakUGCekJD/vCEml2AAAAG3Rlc3Qga2V5IHdpdGhvdXQgcGFzc3BocmFzZQEC
47) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 3 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

65)             00 00 00 0b 73 73 68 2d 65 64 32 35 35 31 39
66)             00 00 00 20
67)             81 78 81 68 26 d6 02 48 5f 0f ff 32 48 6f e4 c1
68)             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 5 months ago

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

Marco Ricci authored 5 months ago

71)             00 00 00 0b 73 73 68 2d 65 64 32 35 35 31 39
72)             00 00 00 40
73)             f0 98 19 80 6c 1a 97 d5 26 03 6e cc e3 65 8f 86
74)             66 07 13 19 13 09 21 33 33 f9 e4 36 53 1d af fd
75)             0d 08 1f ec f8 73 9b 8c 5f 55 39 16 7c 53 54 2c
76)             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 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

84) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAASgAAAAlz
85) c2gtZWQ0NDgAAAA54vZy009Wu8wExjvEb3hqtLz1GO/+d5vmGUbErWQ4AUO9mYLT
86) zHJHc2m4s+yWzP29Cc3EcxizLG8AAAAA8BdhfCcXYXwnAAAACXNzaC1lZDQ0OAAA
87) ADni9nLTT1a7zATGO8RveGq0vPUY7/53m+YZRsStZDgBQ72ZgtPMckdzabiz7JbM
88) /b0JzcRzGLMsbwAAAAByM7GIMRvWJB3YD6SIpAF2uudX4ozZe0X917wPwiBrs373
89) 9TM1n94Nib6hrxGNmCk2iBQDe2KALPgA4vZy009Wu8wExjvEb3hqtLz1GO/+d5vm
90) GUbErWQ4AUO9mYLTzHJHc2m4s+yWzP29Cc3EcxizLG8AAAAAG3Rlc3Qga2V5IHdp
91) dGhvdXQgcGFzc3BocmFzZQECAwQFBgcICQ==
92) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 3 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 3 months ago

115)             00 00 00 39 e2 f6 72 d3 4f 56 bb cc 04
116)             c6 3b c4 6f 78 6a b4 bc f5 18 ef fe 77 9b e6 19
117)             46 c4 ad 64 38 01 43 bd 99 82 d3 cc 72 47 73 69
118)             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 5 months ago

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

Marco Ricci authored 5 months ago

121)             00 00 00 09 73 73 68 2d 65 64 34 34 38
122)             00 00 00 72 06 86
123)             f4 64 a4 a6 ba d9 c3 22 c4 93 49 99 fc 11 de 67
124)             97 08 f2 d8 b7 3c 2c 13 e7 c5 1c 1e 92 a6 0e d8
125)             2f 6d 81 03 82 00 e3 72 e4 32 6d 72 d2 6d 32 84
126)             3f cc a9 1e 57 2c 00 9a b3 99 de 45 da ce 2e d1
127)             db e5 89 f3 35 be 24 58 90 c6 ca 04 f0 db 88 80
128)             db bd 77 7c 80 20 7f 3a 48 61 f6 1f ae a9 5e 53
129)             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 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

132)     },
133)     'rsa': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 3 months ago

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

Marco Ricci authored 5 months ago

268)         '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
269) """,  # noqa: E501
270)         'public_key_data': bytes.fromhex("""
Marco Ricci Rename and regroup all test...

Marco Ricci authored 5 months ago

271)             00 00 00 07 73 73 68 2d 72 73 61
272)             00 00 00 03 01 00 01
273)             00 00 01 81 00
274)             b1 a1 ee e9 7b 38 71 5b 2e 0d 23 49 94 c0 aa a0
275)             f5 60 98 38 04 be 22 3c 4d f5 e6 1c aa 97 dc 99
276)             08 a8 8d cb b2 f5 7b 22 37 fc 58 27 53 bd e1 2a
277)             ec 29 2e 66 12 26 b6 c4 79 d8 03 84 54 0a 14 f2
278)             60 d7 0c da fe 9c 9e 70 50 fc df d5 42 1a 46 30
279)             de d2 57 17 5b 84 a5 17 4d 61 42 c1 b8 c1 80 ee
280)             ab 1b 21 c1 e9 6b 68 1f cb dd ed 33 84 3e df 8d
281)             81 c5 f0 86 c5 b2 a1 a5 14 75 84 c0 eb 65 7e 18
282)             5f 6f 12 6c 4c 68 2e 2e 6e 00 f3 f8 1d 10 90 f9
283)             da b9 2a 0d c6 69 21 70 87 b4 96 c2 cd 6f 5a 42
284)             95 9c b3 f3 c3 c3 9c a5 c2 5f f7 74 1e e3 7f 1c
285)             9f ac 6c f8 3b 74 2b ce ca a1 58 4b 22 a7 de e6
286)             3a 6c 25 ea a0 87 6e af 15 f3 1f 73 bb cf 43 fc
287)             7f 9b 1b 98 a3 ab 18 62 8d b8 dc 55 45 b7 95 97
288)             f0 ff de e0 cb d2 7a ac 6d f5 1c d6 ab e4 7f 06
289)             c9 c2 d3 17 0b 82 15 ea 43 99 31 29 36 04 0b 2a
290)             87 bc 78 f2 04 3e ae 16 1e 11 54 a2 f0 5d c2 5a
291)             ce 07 25 0a 2a ac 6b 7b 2b d6 b7 98 24 a5 30 11
292)             cf ef 4b b7 c3 a3 04 ed eb a6 a2 bc b1 95 4a 1f
293)             7b 04 dd d7 b6 44 93 37 57 d3 c9 76 66 52 b3 66
294)             fc 10 52 b7 3e c5 06 76 53 0f 33 da 67 d6 e9 38
295)             b8 82 2d 29 60 66 a2 83 b2 9e e0 fc 2e 5e 9a 3f
296)             0b 96 00 59 f7 97 c9 cb 2f 25 9d ae 69 84 63 31
297)             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 5 months ago

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

Marco Ricci authored 5 months ago

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

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

Marco Ricci authored 5 months ago

327)         '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 5 months ago

328)     },
329) }
330) 
331) UNSUITABLE_KEYS: Mapping[str, SSHTestKey] = {
332)     'dsa1024': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

334) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABsQAAAAdzc2gtZH
335) NzAAAAgQC7KAZXqBGNVLBQPrcMYAoNW54BhD8aIhe7BDWYzJcsaMt72VKSkguZ8+XR7nRa
336) 0C/ZsBi+uJp0dpxy9ZMTOWX4u5YPMeQcXEdGExZIfimGqSOAsy6fCld2IfJZJZExcCmhe9
337) Ssjsd3YSAPJRluOXFQc95MZoR5hMwlIDD8QzrE7QAAABUA99nOZOgd7aHMVGoXpUEBcn7H
338) ossAAACALr2Ag3hxM3rKdxzVUw8fX0VVPXO+3+Kr8hGe0Kc/7NwVaBVL1GQ8fenBuWynpA
339) UbH0wo3h1wkB/8hX6p+S8cnu5rIBlUuVNwLw/bIYohK98LfqTYK/V+g6KD+8m34wvEiXZm
340) qywY54n2bksch1Nqvj/tNpLzExSx/XS0kSM1aigAAACAbQNRPcVEuGDrEcf+xg5tgAejPX
341) BPXr/Jss+Chk64km3mirMYjAWyWYtVcgT+7hOYxtYRin8LyMLqKRmqa0Q5UrvDfChgLhvs
342) G9YSb/Mpw5qm8PiHSafwhkaz/te3+8hKogqoe7sd+tCF06IpJr5k70ACiNtRGqssNF8Elr
343) l1efYAAAH4swlfVrMJX1YAAAAHc3NoLWRzcwAAAIEAuygGV6gRjVSwUD63DGAKDVueAYQ/
344) GiIXuwQ1mMyXLGjLe9lSkpILmfPl0e50WtAv2bAYvriadHaccvWTEzll+LuWDzHkHFxHRh
345) MWSH4phqkjgLMunwpXdiHyWSWRMXApoXvUrI7Hd2EgDyUZbjlxUHPeTGaEeYTMJSAw/EM6
346) xO0AAAAVAPfZzmToHe2hzFRqF6VBAXJ+x6LLAAAAgC69gIN4cTN6yncc1VMPH19FVT1zvt
347) /iq/IRntCnP+zcFWgVS9RkPH3pwblsp6QFGx9MKN4dcJAf/IV+qfkvHJ7uayAZVLlTcC8P
348) 2yGKISvfC36k2Cv1foOig/vJt+MLxIl2ZqssGOeJ9m5LHIdTar4/7TaS8xMUsf10tJEjNW
349) ooAAAAgG0DUT3FRLhg6xHH/sYObYAHoz1wT16/ybLPgoZOuJJt5oqzGIwFslmLVXIE/u4T
350) mMbWEYp/C8jC6ikZqmtEOVK7w3woYC4b7BvWEm/zKcOapvD4h0mn8IZGs/7Xt/vISqIKqH
351) u7HfrQhdOiKSa+ZO9AAojbURqrLDRfBJa5dXn2AAAAFQDJHfenj4EJ9WkehpdJatPBlqCW
352) 0gAAABt0ZXN0IGtleSB3aXRob3V0IHBhc3NwaHJhc2UBAgMEBQYH
353) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 3 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

394)             00 00 00 07 73 73 68 2d 64 73 73
395)             00 00 00 81 00
396)             bb 28 06 57 a8 11 8d 54 b0 50 3e b7 0c 60 0a 0d
397)             5b 9e 01 84 3f 1a 22 17 bb 04 35 98 cc 97 2c 68
398)             cb 7b d9 52 92 92 0b 99 f3 e5 d1 ee 74 5a d0 2f
399)             d9 b0 18 be b8 9a 74 76 9c 72 f5 93 13 39 65 f8
400)             bb 96 0f 31 e4 1c 5c 47 46 13 16 48 7e 29 86 a9
401)             23 80 b3 2e 9f 0a 57 76 21 f2 59 25 91 31 70 29
402)             a1 7b d4 ac 8e c7 77 61 20 0f 25 19 6e 39 71 50
403)             73 de 4c 66 84 79 84 cc 25 20 30 fc 43 3a c4 ed
404)             00 00 00 15 00 f7 d9 ce 64
405)             e8 1d ed a1 cc 54 6a 17 a5 41 01 72 7e c7 a2 cb
406)             00 00 00 80
407)             2e bd 80 83 78 71 33 7a ca 77 1c d5 53 0f 1f 5f
408)             45 55 3d 73 be df e2 ab f2 11 9e d0 a7 3f ec dc
409)             15 68 15 4b d4 64 3c 7d e9 c1 b9 6c a7 a4 05 1b
410)             1f 4c 28 de 1d 70 90 1f fc 85 7e a9 f9 2f 1c 9e
411)             ee 6b 20 19 54 b9 53 70 2f 0f db 21 8a 21 2b df
412)             0b 7e a4 d8 2b f5 7e 83 a2 83 fb c9 b7 e3 0b c4
413)             89 76 66 ab 2c 18 e7 89 f6 6e 4b 1c 87 53 6a be
414)             3f ed 36 92 f3 13 14 b1 fd 74 b4 91 23 35 6a 28
415)             00 00 00 80
416)             6d 03 51 3d c5 44 b8 60 eb 11 c7 fe c6 0e 6d 80
417)             07 a3 3d 70 4f 5e bf c9 b2 cf 82 86 4e b8 92 6d
418)             e6 8a b3 18 8c 05 b2 59 8b 55 72 04 fe ee 13 98
419)             c6 d6 11 8a 7f 0b c8 c2 ea 29 19 aa 6b 44 39 52
420)             bb c3 7c 28 60 2e 1b ec 1b d6 12 6f f3 29 c3 9a
421)             a6 f0 f8 87 49 a7 f0 86 46 b3 fe d7 b7 fb c8 4a
422)             a2 0a a8 7b bb 1d fa d0 85 d3 a2 29 26 be 64 ef
423)             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 5 months ago

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

Marco Ricci authored 5 months ago

425)         'expected_signature': None,
426)         'derived_passphrase': None,
427)     },
428)     'ecdsa256': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

430) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
431) 1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQTLbU0zDwsk2Dvp+VYIrsNVf5gWwz2S
432) 3SZ8TbxiQRkpnGSVqyIoHJOJc+NQItAa7xlJ/8Z6gfz57Z3apUkaMJm6AAAAuKeY+YinmP
433) mIAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMttTTMPCyTYO+n5
434) Vgiuw1V/mBbDPZLdJnxNvGJBGSmcZJWrIigck4lz41Ai0BrvGUn/xnqB/PntndqlSRowmb
435) oAAAAhAKIl/3n0pKVIxpZkXTGtii782Qr4yIcvHdpxjO/QsIqKAAAAG3Rlc3Qga2V5IHdp
436) dGhvdXQgcGFzc3BocmFzZQECAwQ=
437) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 3 months ago

439)         'private_key_blob': bytes.fromhex("""
440)             00 00 00 13 65 63 64
441)             73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 36
442)             00 00 00 08 6e 69 73 74 70 32 35 36
443)             00 00 00 41 04
444)             cb 6d 4d 33 0f 0b 24 d8 3b e9 f9 56 08 ae c3 55
445)             7f 98 16 c3 3d 92 dd 26 7c 4d bc 62 41 19 29 9c
446)             64 95 ab 22 28 1c 93 89 73 e3 50 22 d0 1a ef 19
447)             49 ff c6 7a 81 fc f9 ed 9d da a5 49 1a 30 99 ba
448)             00 00 00 21 00
449)             a2 25 ff 79 f4 a4 a5 48 c6 96 64 5d 31 ad 8a 2e
450)             fc d9 0a f8 c8 87 2f 1d da 71 8c ef d0 b0 8a 8a
451)             00 00 00 1b 74 65 73 74 20 6b 65 79 20 77 69
452)             74 68 6f 75 74 20 70 61 73 73 70 68 72 61 73 65
453) """),
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

457)             00 00 00 13 65 63 64 73 61 2d 73 68 61 32 2d 6e
458)             69 73 74 70 32 35 36
459)             00 00 00 08 6e 69 73 74 70 32 35 36
460)             00 00 00 41 04
461)             cb 6d 4d 33 0f 0b 24 d8 3b e9 f9 56 08 ae c3 55
462)             7f 98 16 c3 3d 92 dd 26 7c 4d bc 62 41 19 29 9c
463)             64 95 ab 22 28 1c 93 89 73 e3 50 22 d0 1a ef 19
464)             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 5 months ago

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

Marco Ricci authored 5 months ago

466)         'expected_signature': None,
467)         'derived_passphrase': None,
468)     },
469)     'ecdsa384': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

471) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAiAAAABNlY2RzYS
472) 1zaGEyLW5pc3RwMzg0AAAACG5pc3RwMzg0AAAAYQSgkOjkAvq7v5vHuj3KBL4/EAWcn5hZ
473) DyKcbyV0eBMGFq7hKXQlZqIahLVqeMR0QqmkxNJ2rly2VHcXneq3vZ+9fIsWCOdYk5WP3N
474) ZPzv911Xn7wbEkC7QndD5zKlm4pBUAAADomhj+IZoY/iEAAAATZWNkc2Etc2hhMi1uaXN0
475) cDM4NAAAAAhuaXN0cDM4NAAAAGEEoJDo5AL6u7+bx7o9ygS+PxAFnJ+YWQ8inG8ldHgTBh
476) au4Sl0JWaiGoS1anjEdEKppMTSdq5ctlR3F53qt72fvXyLFgjnWJOVj9zWT87/ddV5+8Gx
477) JAu0J3Q+cypZuKQVAAAAMQD5sTy8p+B1cn/DhOmXquui1BcxvASqzzevkBlbQoBa73y04B
478) 2OdqVOVRkwZWRROz0AAAAbdGVzdCBrZXkgd2l0aG91dCBwYXNzcGhyYXNlAQIDBA==
479) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 3 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

502)             00 00 00 13
503)             65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70
504)             33 38 34
505)             00 00 00 08 6e 69 73 74 70 33 38 34
506)             00 00 00 61 04
507)             a0 90 e8 e4 02 fa bb bf 9b c7 ba 3d ca 04 be 3f
508)             10 05 9c 9f 98 59 0f 22 9c 6f 25 74 78 13 06 16
509)             ae e1 29 74 25 66 a2 1a 84 b5 6a 78 c4 74 42 a9
510)             a4 c4 d2 76 ae 5c b6 54 77 17 9d ea b7 bd 9f bd
511)             7c 8b 16 08 e7 58 93 95 8f dc d6 4f ce ff 75 d5
512)             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 5 months ago

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

Marco Ricci authored 5 months ago

514)         'expected_signature': None,
515)         'derived_passphrase': None,
516)     },
517) }
518) 
519) DUMMY_SERVICE = 'service1'
Marco Ricci Clean up testing machinery...

Marco Ricci authored 3 months ago

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

Marco Ricci authored 5 months ago

521) DUMMY_KEY1 = SUPPORTED_KEYS['ed25519']['public_key_data']
522) DUMMY_KEY1_B64 = base64.standard_b64encode(DUMMY_KEY1).decode('ASCII')
523) DUMMY_KEY2 = SUPPORTED_KEYS['rsa']['public_key_data']
524) DUMMY_KEY2_B64 = base64.standard_b64encode(DUMMY_KEY2).decode('ASCII')
Marco Ricci Avoid crashing when overrid...

Marco Ricci authored 4 months ago

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

Marco Ricci authored 5 months ago

527) DUMMY_CONFIG_SETTINGS = {
528)     'length': 10,
529)     'upper': 1,
530)     'lower': 1,
531)     'repeat': 5,
532)     'number': 1,
533)     'space': 1,
534)     'dash': 1,
535)     'symbol': 1,
536) }
Marco Ricci Rename and regroup all test...

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 3 months ago

548) VAULT_MASTER_KEY = 'vault key'
549) VAULT_V02_CONFIG = 'P7xeh5y4jmjpJ2pFq4KUcTVoaE9ZOEkwWmpVTURSSWQxbGt6emN4aFE4eFM3anVPbDRNTGpOLzY3eDF5aE1YTm5LNWh5Q1BwWTMwM3M5S083MWRWRFlmOXNqSFJNcStGMWFOS3c2emhiOUNNenZYTmNNMnZxaUErdlRoOGF2ZHdGT1ZLNTNLOVJQcU9jWmJrR3g5N09VcVBRZ0ZnSFNUQy9HdFVWWnFteVhRVkY3MHNBdnF2ZWFEbFBseWRGelE1c3BFTnVUckRQdWJSL29wNjFxd2Y2ZVpob3VyVzRod3FKTElTenJ1WTZacTJFOFBtK3BnVzh0QWVxcWtyWFdXOXYyenNQeFNZbWt1MDU2Vm1kVGtISWIxWTBpcWRFbyswUVJudVVhZkVlNVpGWDA4WUQ2Q2JTWW81SnlhQ2Zxa3cxNmZoQjJES0Uyd29rNXpSck5iWVBrVmEwOXFya1NpMi9saU5LL3F0M3N3MjZKekNCem9ER2svWkZ0SUJLdmlHRno0VlQzQ3pqZTBWcTM3YmRiNmJjTkhqUHZoQ0NxMW1ldW1XOFVVK3pQMEtUMkRMVGNvNHFlOG40ck5KcGhsYXg1b1VzZ1NYU1B2T3RXdEkwYzg4NWE3YWUzOWI1MDI0MThhMWZjODQ3MDA2OTJmNDQ0MDkxNGFiNmRlMGQ2YjZiNjI5NGMwN2IwMmI4MGZi'  # noqa: E501
550) VAULT_V02_CONFIG_DATA = {
551)     'global': {
Marco Ricci Clean up testing machinery...

Marco Ricci authored 3 months ago

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

Marco Ricci authored 3 months ago

553)     },
554)     'services': {
555)         '(meta)': {
556)             'notes': 'This config was originally in v0.2 format.',
557)         },
558)         DUMMY_SERVICE: DUMMY_CONFIG_SETTINGS.copy(),
559)     },
560) }
561) VAULT_V03_CONFIG = 'sBPBrr8BFHPxSJkV/A53zk9zwDQHFxLe6UIusCVvzFQre103pcj5xxmE11lMTA0U2QTYjkhRXKkH5WegSmYpAnzReuRsYZlWWp6N4kkubf+twZ9C3EeggPm7as2Af4TICHVbX4uXpIHeQJf9y1OtqrO+SRBrgPBzgItoxsIxebxVKgyvh1CZQOSkn7BIzt9xKhDng3ubS4hQ91fB0QCumlldTbUl8tj4Xs5JbvsSlUMxRlVzZ0OgAOrSsoWELXmsp6zXFa9K6wIuZa4wQuMLQFHiA64JO1CR3I+rviWCeMlbTOuJNx6vMB5zotKJqA2hIUpN467TQ9vI4g/QTo40m5LT2EQKbIdTvBQAzcV4lOcpr5Lqt4LHED5mKvm/4YfpuuT3I3XCdWfdG5SB7ciiB4Go+xQdddy3zZMiwm1fEwIB8XjFf2cxoJdccLQ2yxf+9diedBP04EsMHrvxKDhQ7/vHl7xF2MMFTDKl3WFd23vvcjpR1JgNAKYprG/e1p/7'  # noqa: E501
562) VAULT_V03_CONFIG_DATA = {
563)     'global': {
Marco Ricci Clean up testing machinery...

Marco Ricci authored 3 months ago

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

Marco Ricci authored 3 months ago

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

Marco Ricci authored 3 months ago

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

Marco Ricci authored 3 months ago

628)     },
629)     'services': {
630)         '(meta)': {
631)             'notes': 'This config was originally in storeroom format.',
632)         },
633)         DUMMY_SERVICE: DUMMY_CONFIG_SETTINGS.copy(),
634)     },
635) }
636) 
Marco Ricci Add more tests of the store...

Marco Ricci authored 3 months ago

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

Marco Ricci authored 3 months ago

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

Marco Ricci authored 3 months ago

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

Marco Ricci authored 3 months ago

684) )
685) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 5 months ago

686) skip_if_no_agent = pytest.mark.skipif(
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

687)     not os.environ.get('SSH_AUTH_SOCK'), reason='running SSH agent required'
688) )
Marco Ricci Test exporter data loading...

Marco Ricci authored 3 months ago

689) skip_if_cryptography_support = pytest.mark.skipif(
690)     importlib.util.find_spec('cryptography') is not None,
691)     reason='cryptography support available; cannot test "no support" scenario',
692) )
693) skip_if_no_cryptography_support = pytest.mark.skipif(
694)     importlib.util.find_spec('cryptography') is None,
695)     reason='no "cryptography" support',
696) )
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 4 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 4 months ago

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

Marco Ricci authored 5 months ago

702)     list1 = [
703)         Pair(value['public_key_data'], f'{key} test key'.encode('ASCII'))
704)         for key, value in SUPPORTED_KEYS.items()
705)     ]
706)     list2 = [
707)         Pair(value['public_key_data'], f'{key} test key'.encode('ASCII'))
708)         for key, value in UNSUITABLE_KEYS.items()
709)     ]
Marco Ricci Rename and regroup all test...

Marco Ricci authored 5 months ago

710)     return list1 + list2
711) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 4 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 4 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

720)     return list1[:1]
721) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 4 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 4 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 4 months ago

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

Marco Ricci authored 5 months ago

729)     ]
730) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

732) def phrase_from_key(key: bytes) -> bytes:
733)     if key == DUMMY_KEY1:  # pragma: no branch
734)         return DUMMY_PHRASE_FROM_KEY1
735)     raise KeyError(key)  # pragma: no cover
736) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

738) @contextlib.contextmanager
739) def isolated_config(
Marco Ricci Clean up testing machinery...

Marco Ricci authored 3 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 4 months ago

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

Marco Ricci authored 5 months ago

744)     env_name = prog_name.replace(' ', '_').upper() + '_PATH'
745)     with runner.isolated_filesystem():
746)         monkeypatch.setenv('HOME', os.getcwd())
747)         monkeypatch.setenv('USERPROFILE', os.getcwd())
748)         monkeypatch.delenv(env_name, raising=False)
Marco Ricci Rename the configuration fi...

Marco Ricci authored 3 months ago

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

Marco Ricci authored 3 months ago

751)         yield
752) 
753) 
754) @contextlib.contextmanager
755) def isolated_vault_config(
756)     monkeypatch: pytest.MonkeyPatch,
757)     runner: click.testing.CliRunner,
758)     config: Any,
759) ) -> Iterator[None]:
760)     with isolated_config(monkeypatch=monkeypatch, runner=runner):
Marco Ricci Rename the configuration fi...

Marco Ricci authored 3 months ago

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

Marco Ricci authored 5 months ago

763)             json.dump(config, outfile)
764)         yield
765) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 5 months ago

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

Marco Ricci authored 3 months ago

767) @contextlib.contextmanager
768) def isolated_vault_exporter_config(
769)     monkeypatch: pytest.MonkeyPatch,
770)     runner: click.testing.CliRunner,
771)     vault_config: str | bytes | None = None,
772)     vault_key: str | None = None,
773) ) -> Iterator[None]:
774)     if TYPE_CHECKING:
775)         chdir = contextlib.chdir
776)     else:
777)         try:
778)             chdir = contextlib.chdir
779)         except AttributeError:
780) 
781)             @contextlib.contextmanager
Marco Ricci Move exporter command-line...

Marco Ricci authored 3 months ago

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

Marco Ricci authored 3 months ago

783)                 oldpath = os.getcwd()
784)                 os.chdir(newpath)
785)                 yield
786)                 os.chdir(oldpath)
787) 
788)     with runner.isolated_filesystem():
789)         monkeypatch.setenv('HOME', os.getcwd())
790)         monkeypatch.setenv('USERPROFILE', os.getcwd())
791)         monkeypatch.delenv('VAULT_PATH', raising=False)
792)         monkeypatch.delenv('VAULT_KEY', raising=False)
793)         monkeypatch.delenv('LOGNAME', raising=False)
794)         monkeypatch.delenv('USER', raising=False)
795)         monkeypatch.delenv('USERNAME', raising=False)
796)         if vault_key is not None:
797)             monkeypatch.setenv('VAULT_KEY', vault_key)
798)         match vault_config:
799)             case str():
800)                 with open('.vault', 'w', encoding='UTF-8') as outfile:
801)                     print(vault_config, file=outfile)
802)             case bytes():
803)                 os.makedirs('.vault', mode=0o700, exist_ok=True)
804)                 with (
805)                     chdir('.vault'),
806)                     tempfile.NamedTemporaryFile(suffix='.zip') as tmpzipfile,
807)                 ):
808)                     for line in vault_config.splitlines():
809)                         tmpzipfile.write(base64.standard_b64decode(line))
810)                     tmpzipfile.flush()
811)                     tmpzipfile.seek(0, 0)
812)                     with zipfile.ZipFile(tmpzipfile.file) as zipfileobj:
813)                         zipfileobj.extractall()
814)             case None:
815)                 pass
816)             case _:  # pragma: no cover
817)                 assert_never(vault_config)
818)         yield
819) 
820) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 5 months ago

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

Marco Ricci authored 5 months ago

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

Marco Ricci authored 3 months ago

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

Marco Ricci authored 4 months ago

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