0be132367e57855736c2c4163dd6c606f2b88d23
Marco Ricci Import initial project files

Marco Ricci authored 4 months ago

1) # SPDX-FileCopyrightText: 2024 Marco Ricci <m@the13thletter.info>
2) #
3) # SPDX-License-Identifier: MIT
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

4) 
5) from __future__ import annotations
6) 
7) import base64
8) import contextlib
9) import json
10) import os
Marco Ricci Add missing tests for rewor...

Marco Ricci authored 1 month ago

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

Marco Ricci authored 3 weeks ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

16) import pytest
Marco Ricci Add preliminary tests for t...

Marco Ricci authored 3 weeks ago

17) from typing_extensions import assert_never
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

24)     from collections.abc import Iterator, Mapping
25) 
26)     import click.testing
27)     from typing_extensions import Any, TypedDict
28) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

29)     class SSHTestKey(TypedDict):
30)         private_key: bytes
31)         public_key: bytes | str
32)         public_key_data: bytes
33)         expected_signature: bytes | None
34)         derived_passphrase: bytes | str | None
35) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

69) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAASgAAAAlz
70) c2gtZWQ0NDgAAAA54vZy009Wu8wExjvEb3hqtLz1GO/+d5vmGUbErWQ4AUO9mYLT
71) zHJHc2m4s+yWzP29Cc3EcxizLG8AAAAA8BdhfCcXYXwnAAAACXNzaC1lZDQ0OAAA
72) ADni9nLTT1a7zATGO8RveGq0vPUY7/53m+YZRsStZDgBQ72ZgtPMckdzabiz7JbM
73) /b0JzcRzGLMsbwAAAAByM7GIMRvWJB3YD6SIpAF2uudX4ozZe0X917wPwiBrs373
74) 9TM1n94Nib6hrxGNmCk2iBQDe2KALPgA4vZy009Wu8wExjvEb3hqtLz1GO/+d5vm
75) GUbErWQ4AUO9mYLTzHJHc2m4s+yWzP29Cc3EcxizLG8AAAAAG3Rlc3Qga2V5IHdp
76) dGhvdXQgcGFzc3BocmFzZQECAwQFBgcICQ==
77) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 2 months ago

101)     },
102)     'rsa': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

104) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
105) NhAAAAAwEAAQAAAYEAsaHu6Xs4cVsuDSNJlMCqoPVgmDgEviI8TfXmHKqX3JkIqI3LsvV7
106) Ijf8WCdTveEq7CkuZhImtsR52AOEVAoU8mDXDNr+nJ5wUPzf1UIaRjDe0lcXW4SlF01hQs
107) G4wYDuqxshwelraB/L3e0zhD7fjYHF8IbFsqGlFHWEwOtlfhhfbxJsTGguLm4A8/gdEJD5
108) 2rkqDcZpIXCHtJbCzW9aQpWcs/PDw5ylwl/3dB7jfxyfrGz4O3QrzsqhWEsip97mOmwl6q
109) CHbq8V8x9zu89D/H+bG5ijqxhijbjcVUW3lZfw/97gy9J6rG31HNar5H8GycLTFwuCFepD
110) mTEpNgQLKoe8ePIEPq4WHhFUovBdwlrOByUKKqxreyvWt5gkpTARz+9Lt8OjBO3rpqK8sZ
111) VKH3sE3de2RJM3V9PJdmZSs2b8EFK3PsUGdlMPM9pn1uk4uIItKWBmooOynuD8Ll6aPwuW
112) AFn3l8nLLyWdrmmEYzHWXiRjQJxy1Bi5AbHMOWiPAAAFkDPkuBkz5LgZAAAAB3NzaC1yc2
113) EAAAGBALGh7ul7OHFbLg0jSZTAqqD1YJg4BL4iPE315hyql9yZCKiNy7L1eyI3/FgnU73h
114) KuwpLmYSJrbEedgDhFQKFPJg1wza/pyecFD839VCGkYw3tJXF1uEpRdNYULBuMGA7qsbIc
115) Hpa2gfy93tM4Q+342BxfCGxbKhpRR1hMDrZX4YX28SbExoLi5uAPP4HRCQ+dq5Kg3GaSFw
116) h7SWws1vWkKVnLPzw8OcpcJf93Qe438cn6xs+Dt0K87KoVhLIqfe5jpsJeqgh26vFfMfc7
117) vPQ/x/mxuYo6sYYo243FVFt5WX8P/e4MvSeqxt9RzWq+R/BsnC0xcLghXqQ5kxKTYECyqH
118) vHjyBD6uFh4RVKLwXcJazgclCiqsa3sr1reYJKUwEc/vS7fDowTt66aivLGVSh97BN3Xtk
119) STN1fTyXZmUrNm/BBStz7FBnZTDzPaZ9bpOLiCLSlgZqKDsp7g/C5emj8LlgBZ95fJyy8l
120) na5phGMx1l4kY0CcctQYuQGxzDlojwAAAAMBAAEAAAF/cNVYT+Om4x9+SItcz5bOByGIOj
121) yWUH8f9rRjnr5ILuwabIDgvFaVG+xM1O1hWADqzMnSEcknHRkTYEsqYPykAtxFvjOFEh70
122) 6qRUJ+fVZkqRGEaI3oWyWKTOhcCIYImtONvb0LOv/HQ2H2AXCoeqjST1qr/xSuljBtcB8u
123) wxs3EqaO1yU7QoZpDcMX9plH7Rmc9nNfZcgrnktPk2deX2+Y/A5tzdVgG1IeqYp6CBMLNM
124) uhL0OPdDehgBoDujx+rhkZ1gpo1wcULIM94NL7VSHBPX0Lgh9T+3j1HVP+YnMAvhfOvfct
125) LlbJ06+TYGRAMuF2LPCAZM/m0FEyAurRgWxAjLXm+4kp2GAJXlw82deDkQ+P8cHNT6s9ZH
126) R5YSy3lpZ35594ZMOLR8KqVvhgJGF6i9019BiF91SDxjE+sp6dNGfN8W+64tHdDv2a0Mso
127) +8Qjyx7sTpi++EjLU8Iy73/e4B8qbXMyheyA/UUfgMtNKShh6sLlrD9h2Sm9RFTuEAAADA
128) Jh3u7WfnjhhKZYbAW4TsPNXDMrB0/t7xyAQgFmko7JfESyrJSLg1cO+QMOiDgD7zuQ9RSp
129) NIKdPsnIna5peh979mVjb2HgnikjyJECmBpLdwZKhX7MnIvgKw5lnQXHboEtWCa1N58l7f
130) srzwbi9pFUuUp9dShXNffmlUCjDRsVLbK5C6+iaIQyCWFYK8mc6dpNkIoPKf+Xg+EJCIFQ
131) oITqeu30Gc1+M+fdZc2ghq0b6XLthh/uHEry8b68M5KglMAAAAwQDw1i+IdcvPV/3u/q9O
132) /kzLpKO3tbT89sc1zhjZsDNjDAGluNr6n38iq/XYRZu7UTL9BG+EgFVfIUV7XsYT5e+BPf
133) 13VS94rzZ7maCsOlULX+VdMO2zBucHIoec9RUlRZrfB21B2W7YGMhbpoa5lN3lKJQ7afHo
134) dXZUMp0cTFbOmbzJgSzO2/NE7BhVwmvcUzTDJGMMKuxBO6w99YKDKRKm0PNLFDz26rWm9L
135) dNS2MVfVuPMTpzT26HQG4pFageq9cAAADBALzRBXdZF8kbSBa5MTUBVTTzgKQm1C772gJ8
136) T01DJEXZsVtOv7mUC1/m/by6Hk4tPyvDBuGj9hHq4N7dPqGutHb1q5n0ADuoQjRW7BXw5Q
137) vC2EAD91xexdorIA5BgXU+qltBqzzBVzVtF7+jOZOjfzOlaTX9I5I5veyeTaTxZj1XXUzi
138) btBNdMEJJp7ifucYmoYAAwE7K+VlWagDEK2y8Mte9y9E+N0uO2j+h85sQt/UIb2iE/vhcg
139) Bgp6142WnSCQAAABt0ZXN0IGtleSB3aXRob3V0IHBhc3NwaHJhc2UB
140) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

145)             00 00 00 07 73 73 68 2d 72 73 61
146)             00 00 00 03 01 00 01
147)             00 00 01 81 00
148)             b1 a1 ee e9 7b 38 71 5b 2e 0d 23 49 94 c0 aa a0
149)             f5 60 98 38 04 be 22 3c 4d f5 e6 1c aa 97 dc 99
150)             08 a8 8d cb b2 f5 7b 22 37 fc 58 27 53 bd e1 2a
151)             ec 29 2e 66 12 26 b6 c4 79 d8 03 84 54 0a 14 f2
152)             60 d7 0c da fe 9c 9e 70 50 fc df d5 42 1a 46 30
153)             de d2 57 17 5b 84 a5 17 4d 61 42 c1 b8 c1 80 ee
154)             ab 1b 21 c1 e9 6b 68 1f cb dd ed 33 84 3e df 8d
155)             81 c5 f0 86 c5 b2 a1 a5 14 75 84 c0 eb 65 7e 18
156)             5f 6f 12 6c 4c 68 2e 2e 6e 00 f3 f8 1d 10 90 f9
157)             da b9 2a 0d c6 69 21 70 87 b4 96 c2 cd 6f 5a 42
158)             95 9c b3 f3 c3 c3 9c a5 c2 5f f7 74 1e e3 7f 1c
159)             9f ac 6c f8 3b 74 2b ce ca a1 58 4b 22 a7 de e6
160)             3a 6c 25 ea a0 87 6e af 15 f3 1f 73 bb cf 43 fc
161)             7f 9b 1b 98 a3 ab 18 62 8d b8 dc 55 45 b7 95 97
162)             f0 ff de e0 cb d2 7a ac 6d f5 1c d6 ab e4 7f 06
163)             c9 c2 d3 17 0b 82 15 ea 43 99 31 29 36 04 0b 2a
164)             87 bc 78 f2 04 3e ae 16 1e 11 54 a2 f0 5d c2 5a
165)             ce 07 25 0a 2a ac 6b 7b 2b d6 b7 98 24 a5 30 11
166)             cf ef 4b b7 c3 a3 04 ed eb a6 a2 bc b1 95 4a 1f
167)             7b 04 dd d7 b6 44 93 37 57 d3 c9 76 66 52 b3 66
168)             fc 10 52 b7 3e c5 06 76 53 0f 33 da 67 d6 e9 38
169)             b8 82 2d 29 60 66 a2 83 b2 9e e0 fc 2e 5e 9a 3f
170)             0b 96 00 59 f7 97 c9 cb 2f 25 9d ae 69 84 63 31
171)             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 1 month ago

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

Marco Ricci authored 2 months ago

174)             00 00 00 07 73 73 68 2d 72 73 61
175)             00 00 01 80
176)             a2 10 7c 2e f6 bb 53 a8 74 2a a1 19 99 ad 81 be
177)             79 9c ed d6 9d 09 4e 6e c5 18 48 33 90 77 99 68
178)             f7 9e 03 5a cd 4e 18 eb 89 7d 85 a2 ee ae 4a 92
179)             f6 6f ce b9 fe 86 7f 2a 6b 31 da 6e 1a fe a2 a5
180)             88 b8 44 7f a1 76 73 b3 ec 75 b5 d0 a6 b9 15 97
181)             65 09 13 7d 94 21 d1 fb 5d 0f 8b 23 04 77 c2 c3
182)             55 22 b1 a0 09 8a f5 38 2a d6 7f 1b 87 29 a0 25
183)             d3 25 6f cb 64 61 07 98 dc 14 c5 84 f8 92 24 5e
184)             50 11 6b 49 e5 f0 cc 29 cb 29 a9 19 d8 a7 71 1f
185)             91 0b 05 b1 01 4b c2 5f 00 a5 b6 21 bf f8 2c 9d
186)             67 9b 47 3b 0a 49 6b 79 2d fc 1d ec 0c b0 e5 27
187)             22 d5 a9 f8 d3 c3 f9 df 48 68 e9 fb ef 3c dc 26
188)             bf cf ea 29 43 01 a6 e3 c5 51 95 f4 66 6d 8a 55
189)             e2 47 ec e8 30 45 4c ae 47 e7 c9 a4 21 8b 64 ba
190)             b6 88 f6 21 f8 73 b9 cb 11 a1 78 75 92 c6 5a e5
191)             64 fe ed 42 d9 95 99 e6 2b 6f 3c 16 3c 28 74 a4
192)             72 2f 0d 3f 2c 33 67 aa 35 19 8e e7 b5 11 2f b3
193)             f7 6a c5 02 e2 6f a3 42 e3 62 19 99 03 ea a5 20
194)             e7 a1 e3 bc c8 06 a3 b5 7c d6 76 5d df 6f 60 46
195)             83 2a 08 00 d6 d3 d9 a4 c1 41 8c f8 60 56 45 81
196)             da 3b a2 16 1f 9e 4e 75 83 17 da c3 53 c3 3e 19
197)             a4 1b bc d2 29 b8 78 61 2b 78 e6 b1 52 b0 d5 ec
198)             de 69 2c 48 62 d9 fd d1 9b 6b b0 49 db d3 ff 38
199)             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 1 month ago

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

Marco Ricci authored 2 months ago

201)         '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 2 months ago

202)     },
203) }
204) 
205) UNSUITABLE_KEYS: Mapping[str, SSHTestKey] = {
206)     'dsa1024': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

208) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABsQAAAAdzc2gtZH
209) NzAAAAgQC7KAZXqBGNVLBQPrcMYAoNW54BhD8aIhe7BDWYzJcsaMt72VKSkguZ8+XR7nRa
210) 0C/ZsBi+uJp0dpxy9ZMTOWX4u5YPMeQcXEdGExZIfimGqSOAsy6fCld2IfJZJZExcCmhe9
211) Ssjsd3YSAPJRluOXFQc95MZoR5hMwlIDD8QzrE7QAAABUA99nOZOgd7aHMVGoXpUEBcn7H
212) ossAAACALr2Ag3hxM3rKdxzVUw8fX0VVPXO+3+Kr8hGe0Kc/7NwVaBVL1GQ8fenBuWynpA
213) UbH0wo3h1wkB/8hX6p+S8cnu5rIBlUuVNwLw/bIYohK98LfqTYK/V+g6KD+8m34wvEiXZm
214) qywY54n2bksch1Nqvj/tNpLzExSx/XS0kSM1aigAAACAbQNRPcVEuGDrEcf+xg5tgAejPX
215) BPXr/Jss+Chk64km3mirMYjAWyWYtVcgT+7hOYxtYRin8LyMLqKRmqa0Q5UrvDfChgLhvs
216) G9YSb/Mpw5qm8PiHSafwhkaz/te3+8hKogqoe7sd+tCF06IpJr5k70ACiNtRGqssNF8Elr
217) l1efYAAAH4swlfVrMJX1YAAAAHc3NoLWRzcwAAAIEAuygGV6gRjVSwUD63DGAKDVueAYQ/
218) GiIXuwQ1mMyXLGjLe9lSkpILmfPl0e50WtAv2bAYvriadHaccvWTEzll+LuWDzHkHFxHRh
219) MWSH4phqkjgLMunwpXdiHyWSWRMXApoXvUrI7Hd2EgDyUZbjlxUHPeTGaEeYTMJSAw/EM6
220) xO0AAAAVAPfZzmToHe2hzFRqF6VBAXJ+x6LLAAAAgC69gIN4cTN6yncc1VMPH19FVT1zvt
221) /iq/IRntCnP+zcFWgVS9RkPH3pwblsp6QFGx9MKN4dcJAf/IV+qfkvHJ7uayAZVLlTcC8P
222) 2yGKISvfC36k2Cv1foOig/vJt+MLxIl2ZqssGOeJ9m5LHIdTar4/7TaS8xMUsf10tJEjNW
223) ooAAAAgG0DUT3FRLhg6xHH/sYObYAHoz1wT16/ybLPgoZOuJJt5oqzGIwFslmLVXIE/u4T
224) mMbWEYp/C8jC6ikZqmtEOVK7w3woYC4b7BvWEm/zKcOapvD4h0mn8IZGs/7Xt/vISqIKqH
225) u7HfrQhdOiKSa+ZO9AAojbURqrLDRfBJa5dXn2AAAAFQDJHfenj4EJ9WkehpdJatPBlqCW
226) 0gAAABt0ZXN0IGtleSB3aXRob3V0IHBhc3NwaHJhc2UBAgMEBQYH
227) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

232)             00 00 00 07 73 73 68 2d 64 73 73
233)             00 00 00 81 00
234)             bb 28 06 57 a8 11 8d 54 b0 50 3e b7 0c 60 0a 0d
235)             5b 9e 01 84 3f 1a 22 17 bb 04 35 98 cc 97 2c 68
236)             cb 7b d9 52 92 92 0b 99 f3 e5 d1 ee 74 5a d0 2f
237)             d9 b0 18 be b8 9a 74 76 9c 72 f5 93 13 39 65 f8
238)             bb 96 0f 31 e4 1c 5c 47 46 13 16 48 7e 29 86 a9
239)             23 80 b3 2e 9f 0a 57 76 21 f2 59 25 91 31 70 29
240)             a1 7b d4 ac 8e c7 77 61 20 0f 25 19 6e 39 71 50
241)             73 de 4c 66 84 79 84 cc 25 20 30 fc 43 3a c4 ed
242)             00 00 00 15 00 f7 d9 ce 64
243)             e8 1d ed a1 cc 54 6a 17 a5 41 01 72 7e c7 a2 cb
244)             00 00 00 80
245)             2e bd 80 83 78 71 33 7a ca 77 1c d5 53 0f 1f 5f
246)             45 55 3d 73 be df e2 ab f2 11 9e d0 a7 3f ec dc
247)             15 68 15 4b d4 64 3c 7d e9 c1 b9 6c a7 a4 05 1b
248)             1f 4c 28 de 1d 70 90 1f fc 85 7e a9 f9 2f 1c 9e
249)             ee 6b 20 19 54 b9 53 70 2f 0f db 21 8a 21 2b df
250)             0b 7e a4 d8 2b f5 7e 83 a2 83 fb c9 b7 e3 0b c4
251)             89 76 66 ab 2c 18 e7 89 f6 6e 4b 1c 87 53 6a be
252)             3f ed 36 92 f3 13 14 b1 fd 74 b4 91 23 35 6a 28
253)             00 00 00 80
254)             6d 03 51 3d c5 44 b8 60 eb 11 c7 fe c6 0e 6d 80
255)             07 a3 3d 70 4f 5e bf c9 b2 cf 82 86 4e b8 92 6d
256)             e6 8a b3 18 8c 05 b2 59 8b 55 72 04 fe ee 13 98
257)             c6 d6 11 8a 7f 0b c8 c2 ea 29 19 aa 6b 44 39 52
258)             bb c3 7c 28 60 2e 1b ec 1b d6 12 6f f3 29 c3 9a
259)             a6 f0 f8 87 49 a7 f0 86 46 b3 fe d7 b7 fb c8 4a
260)             a2 0a a8 7b bb 1d fa d0 85 d3 a2 29 26 be 64 ef
261)             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 1 month ago

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

Marco Ricci authored 2 months ago

263)         'expected_signature': None,
264)         'derived_passphrase': None,
265)     },
266)     'ecdsa256': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

268) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
269) 1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQTLbU0zDwsk2Dvp+VYIrsNVf5gWwz2S
270) 3SZ8TbxiQRkpnGSVqyIoHJOJc+NQItAa7xlJ/8Z6gfz57Z3apUkaMJm6AAAAuKeY+YinmP
271) mIAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMttTTMPCyTYO+n5
272) Vgiuw1V/mBbDPZLdJnxNvGJBGSmcZJWrIigck4lz41Ai0BrvGUn/xnqB/PntndqlSRowmb
273) oAAAAhAKIl/3n0pKVIxpZkXTGtii782Qr4yIcvHdpxjO/QsIqKAAAAG3Rlc3Qga2V5IHdp
274) dGhvdXQgcGFzc3BocmFzZQECAwQ=
275) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

280)             00 00 00 13 65 63 64 73 61 2d 73 68 61 32 2d 6e
281)             69 73 74 70 32 35 36
282)             00 00 00 08 6e 69 73 74 70 32 35 36
283)             00 00 00 41 04
284)             cb 6d 4d 33 0f 0b 24 d8 3b e9 f9 56 08 ae c3 55
285)             7f 98 16 c3 3d 92 dd 26 7c 4d bc 62 41 19 29 9c
286)             64 95 ab 22 28 1c 93 89 73 e3 50 22 d0 1a ef 19
287)             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 1 month ago

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

Marco Ricci authored 2 months ago

289)         'expected_signature': None,
290)         'derived_passphrase': None,
291)     },
292)     'ecdsa384': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

294) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAiAAAABNlY2RzYS
295) 1zaGEyLW5pc3RwMzg0AAAACG5pc3RwMzg0AAAAYQSgkOjkAvq7v5vHuj3KBL4/EAWcn5hZ
296) DyKcbyV0eBMGFq7hKXQlZqIahLVqeMR0QqmkxNJ2rly2VHcXneq3vZ+9fIsWCOdYk5WP3N
297) ZPzv911Xn7wbEkC7QndD5zKlm4pBUAAADomhj+IZoY/iEAAAATZWNkc2Etc2hhMi1uaXN0
298) cDM4NAAAAAhuaXN0cDM4NAAAAGEEoJDo5AL6u7+bx7o9ygS+PxAFnJ+YWQ8inG8ldHgTBh
299) au4Sl0JWaiGoS1anjEdEKppMTSdq5ctlR3F53qt72fvXyLFgjnWJOVj9zWT87/ddV5+8Gx
300) JAu0J3Q+cypZuKQVAAAAMQD5sTy8p+B1cn/DhOmXquui1BcxvASqzzevkBlbQoBa73y04B
301) 2OdqVOVRkwZWRROz0AAAAbdGVzdCBrZXkgd2l0aG91dCBwYXNzcGhyYXNlAQIDBA==
302) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

307)             00 00 00 13
308)             65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70
309)             33 38 34
310)             00 00 00 08 6e 69 73 74 70 33 38 34
311)             00 00 00 61 04
312)             a0 90 e8 e4 02 fa bb bf 9b c7 ba 3d ca 04 be 3f
313)             10 05 9c 9f 98 59 0f 22 9c 6f 25 74 78 13 06 16
314)             ae e1 29 74 25 66 a2 1a 84 b5 6a 78 c4 74 42 a9
315)             a4 c4 d2 76 ae 5c b6 54 77 17 9d ea b7 bd 9f bd
316)             7c 8b 16 08 e7 58 93 95 8f dc d6 4f ce ff 75 d5
317)             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 1 month ago

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

Marco Ricci authored 2 months ago

319)         'expected_signature': None,
320)         'derived_passphrase': None,
321)     },
322) }
323) 
324) DUMMY_SERVICE = 'service1'
325) DUMMY_PASSPHRASE = b'my secret passphrase\n'
326) DUMMY_KEY1 = SUPPORTED_KEYS['ed25519']['public_key_data']
327) DUMMY_KEY1_B64 = base64.standard_b64encode(DUMMY_KEY1).decode('ASCII')
328) DUMMY_KEY2 = SUPPORTED_KEYS['rsa']['public_key_data']
329) DUMMY_KEY2_B64 = base64.standard_b64encode(DUMMY_KEY2).decode('ASCII')
Marco Ricci Avoid crashing when overrid...

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

332) DUMMY_CONFIG_SETTINGS = {
333)     'length': 10,
334)     'upper': 1,
335)     'lower': 1,
336)     'repeat': 5,
337)     'number': 1,
338)     'space': 1,
339)     'dash': 1,
340)     'symbol': 1,
341) }
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 2 weeks ago

353) VAULT_MASTER_KEY = 'vault key'
354) VAULT_V02_CONFIG = 'P7xeh5y4jmjpJ2pFq4KUcTVoaE9ZOEkwWmpVTURSSWQxbGt6emN4aFE4eFM3anVPbDRNTGpOLzY3eDF5aE1YTm5LNWh5Q1BwWTMwM3M5S083MWRWRFlmOXNqSFJNcStGMWFOS3c2emhiOUNNenZYTmNNMnZxaUErdlRoOGF2ZHdGT1ZLNTNLOVJQcU9jWmJrR3g5N09VcVBRZ0ZnSFNUQy9HdFVWWnFteVhRVkY3MHNBdnF2ZWFEbFBseWRGelE1c3BFTnVUckRQdWJSL29wNjFxd2Y2ZVpob3VyVzRod3FKTElTenJ1WTZacTJFOFBtK3BnVzh0QWVxcWtyWFdXOXYyenNQeFNZbWt1MDU2Vm1kVGtISWIxWTBpcWRFbyswUVJudVVhZkVlNVpGWDA4WUQ2Q2JTWW81SnlhQ2Zxa3cxNmZoQjJES0Uyd29rNXpSck5iWVBrVmEwOXFya1NpMi9saU5LL3F0M3N3MjZKekNCem9ER2svWkZ0SUJLdmlHRno0VlQzQ3pqZTBWcTM3YmRiNmJjTkhqUHZoQ0NxMW1ldW1XOFVVK3pQMEtUMkRMVGNvNHFlOG40ck5KcGhsYXg1b1VzZ1NYU1B2T3RXdEkwYzg4NWE3YWUzOWI1MDI0MThhMWZjODQ3MDA2OTJmNDQ0MDkxNGFiNmRlMGQ2YjZiNjI5NGMwN2IwMmI4MGZi'  # noqa: E501
355) VAULT_V02_CONFIG_DATA = {
356)     'global': {
357)         'phrase': DUMMY_PASSPHRASE.decode('utf-8').rstrip('\n'),
358)     },
359)     'services': {
360)         '(meta)': {
361)             'notes': 'This config was originally in v0.2 format.',
362)         },
363)         DUMMY_SERVICE: DUMMY_CONFIG_SETTINGS.copy(),
364)     },
365) }
366) VAULT_V03_CONFIG = 'sBPBrr8BFHPxSJkV/A53zk9zwDQHFxLe6UIusCVvzFQre103pcj5xxmE11lMTA0U2QTYjkhRXKkH5WegSmYpAnzReuRsYZlWWp6N4kkubf+twZ9C3EeggPm7as2Af4TICHVbX4uXpIHeQJf9y1OtqrO+SRBrgPBzgItoxsIxebxVKgyvh1CZQOSkn7BIzt9xKhDng3ubS4hQ91fB0QCumlldTbUl8tj4Xs5JbvsSlUMxRlVzZ0OgAOrSsoWELXmsp6zXFa9K6wIuZa4wQuMLQFHiA64JO1CR3I+rviWCeMlbTOuJNx6vMB5zotKJqA2hIUpN467TQ9vI4g/QTo40m5LT2EQKbIdTvBQAzcV4lOcpr5Lqt4LHED5mKvm/4YfpuuT3I3XCdWfdG5SB7ciiB4Go+xQdddy3zZMiwm1fEwIB8XjFf2cxoJdccLQ2yxf+9diedBP04EsMHrvxKDhQ7/vHl7xF2MMFTDKl3WFd23vvcjpR1JgNAKYprG/e1p/7'  # noqa: E501
367) VAULT_V03_CONFIG_DATA = {
368)     'global': {
369)         'phrase': DUMMY_PASSPHRASE.decode('utf-8').rstrip('\n'),
370)     },
371)     'services': {
372)         '(meta)': {
373)             'notes': 'This config was originally in v0.3 format.',
374)         },
375)         DUMMY_SERVICE: DUMMY_CONFIG_SETTINGS.copy(),
376)     },
377) }
378) VAULT_STOREROOM_CONFIG_ZIPPED = b"""
379) UEsDBBQAAAAIAJ1WGVnTVFGT0gAAAOYAAAAFAAAALmtleXMFwclSgzAAANC7n9GrBzBldcYDE5Al
380) EKbFAvGWklBAtqYsBcd/973fw8LFox76w/vb34tzhD5OATeEAk6tJ6Fbp3WrvkJO7l0KIjtxCLfY
381) ORm8ScEDPbNkyVwGLmZNTuQzXPMl/GnLO0I2PmUhRcxSj2Iy6PUy57up4thL6zndYwtyORpyCTGy
382) ibbjIeq/K/9atsHkl680nwsKFVk1i97gbGhG4gC5CMS8aUx8uebuToRCDsAT61UQVp0yEjw1bhm1
383) 6UPWzM2wyfMGMyY1ox5HH/9QSwMEFAAAAAgAnVYZWd1pX+EFAwAA1AMAAAIAAAAwMA3ON7abQAAA
384) wP4fwy0FQUR3ZASLYEkCOnKOEtHPd7e7KefPr71YP800/vqN//3hAywvUaCcTYb6TbKS/kYcVnvG
385) wGA5N8ksjpFNCu5BZGu953GdoVnOfN6PNXoluWOS2JzO23ELNJ2m9nDn0uDhwC39VHJT1pQdejIw
386) CovQTEWmBH53FJufhNSZKQG5s1fMcw9hqn3NbON6wRDquOjLe/tqWkG1yiQDSF5Ail8Wd2UaA7vo
387) 40QorG1uOBU7nPlDx/cCTDpSqwTZDkkAt6Zy9RT61NUZqHSMIgKMerj3njXOK+1q5sA/upSGvMrN
388) 7/JpSEhcmu7GDvQJ8TyLos6vPCSmxO6RRG3X4BLpqHkTgeqHz+YDZwTV+6y5dvSmTSsCP5uPCmi+
389) 7r9irZ1m777iL2R8NFH0QDIo1GFsy1NrUvWq4TGuvVIbkHrML5mFdR6ajNhRjL/6//1crYAMLHxo
390) qkjGz2Wck2dmRd96mFFAfdQ1/BqDgi6X/KRwHL9VmhpdjcKJhuE04xLYgTCyKLv8TkFfseNAbN3N
391) 7KvVW7QVF97W50pzXzy3Ea3CatNQkJ1DnkR0vc0dsHd1Zr0o1acUaAa65B2yjYXCk3TFlMo9TNce
392) OWBXzJrpaZ4N7bscdwCF9XYesSMpxBDpwyCIVyJ8tHZVf/iS4pE6u+XgvD42yef+ujhM/AyboqPk
393) sFNV/XoNpmWIySdkTMmwu72q1GfPqr01ze/TzCVrCe0KkFcZhe77jrLPOnRCIarF2c9MMHNfmguU
394) A0tJ8HodQb/zehL6C9KSiNWfG+NlK1Dro1sGKhiJETLMFru272CNlwQJmzTHuKAXuUvJmQCfmLfL
395) EPrxoE08fu+v6DKnSopnG8GTkbscPZ+K5q2kC6m7pCizKO1sLKG7fMBRnJxnel/vmpY2lFCB4ADy
396) no+dvqBl6z3X/ji9AFXC9X8HRd+8u57OS1zV4OhiVd7hMy1U8F5qbIBms+FS6QbL9NhIb2lFN4VO
397) 3+ITZz1sPJBl68ZgJWOV6O4F5cAHGKl/UEsDBBQAAAAIAJ1WGVn9pqLBygEAACsCAAACAAAAMDMN
398) z8mWa0AAANB9f0ZvLZQhyDsnC0IMJShDBTuzJMZoktLn/ft79w/u7/dWvZb7OHz/Yf5+yYUBMTNK
399) RrCI1xIQs67d6yI6bM75waX0gRLdKMGyC5O2SzBLs57V4+bqxo5xI2DraLTVeniUXLxkLyjRnC4u
400) 24Vp+7p+ppt9DlVNNZp7rskQDOe47mbgViNeE5oXpg/oDgTcfQYNvt8V0OoyKbIiNymOW/mB3hze
401) D1EHqTWQvFZB5ANGpLMM0U10xWYAClzuVJXKm/n/8JgVaobY38IjzxXyk4iPkQUuYtws73Kan871
402) R3mZa7/j0pO6Wu0LuoV+czp9yZEH/SU42lCgjEsZ9Mny3tHaF09QWU4oB7HI+LBhKnFJ9c0bHEky
403) OooHgzgTIa0y8fbpst30PEUwfUAS+lYzPXG3y+QUiy5nrJFPb0IwESd9gIIOVSfZK63wvD5ueoxj
404) O9bn2gutSFT6GO17ibguhXtItAjPbZWfyyQqHRyeBcpT7qbzQ6H1Of5clEqVdNcetAg8ZMKoWTbq
405) /vSSQ2lpkEqT0tEQo7zwKBzeB37AysB5hhDCPn1gUTER6d+1S4dzwO7HhDf9kG+3botig2Xm1Dz9
406) A1BLAwQUAAAACACdVhlZs14oCcgBAAArAgAAAgAAADA5BcHJkqIwAADQe39GXz2wE5gqDxAGQRZF
407) QZZbDIFG2YwIga7593nv93sm9N0M/fcf4d+XcUlVE+kvustz3BU7FjHOaW+u6TRsfNKzLh74mO1w
408) IXUlM/2sGKKuY5sYrW5N+oGqit2zLBYv57mFvH/S8pWGYDGzUnU1CdTL3B4Yix+Hk8E/+m0cSi2E
409) dnAibw1brWVXM++8iYcUg84TMbJXntFYCyrNw1NF+008I02PeH4C8oDID6fIoKvsw3p7WJJ/I9Yp
410) a6oJzlJiP5JGxRxZPj50N6EMtzNB+tZoIGxgtOFVpiJ05yMQFztY6I6LKIgvXW/s919GIjGshqdM
411) XVPFxaKG4p9Iux/xazf48FY8O7SMmbQC1VsXIYo+7eSpIY67VzrCoh41wXPklOWS6CV8RR/JBSqq
412) 8lHkcz8L21lMCOrVR1Cs0ls4HLIhUkqr9YegTJ67VM7xevUsgOI7BkPDldiulRgX+sdPheCyCacu
413) e7/b/nk0SXWF7ZBxsR1awYqwkFKz41/1bZDsETsmd8n1DHycGIvRULv3yYhKcvWQ4asAMhP1ks5k
414) AgOcrM+JFvpYA86Ja8HCqCg8LihEI1e7+m8F71Lpavv/UEsDBBQAAAAIAJ1WGVnKO2Ji+AEAAGsC
415) AAACAAAAMWENx7dyo0AAANDen+GWAonMzbggLsJakgGBOhBLlGBZsjz373eve7+fKyJTM/Sff85/
416) P5QMwMFfAWipfXwvFPWU582cd3t7JVV5pBV0Y1clL4eKUd0w1m1M5JrkgW5PlfpOVedgABSe4zPY
417) LnSIZVuen5Eua9QY8lQ7rxW7YIqeajhgLfL54BIcY90fd8ANixlcM8V23Z03U35Txba0BbSguc0f
418) NRF83cWp+7rOYgNO9wWLs915oQmWAqAtqRYCiWlgAtxYFg0MnNS4/G80FvFmQTh0cjwcF1xEVPeW
419) l72ky84PEA0QMgRtQW+HXWtE0/vQTtNKzvNqPfrGZCldL5nk9PWhhPEQ/azyW11bz2eB+aM0g0r7
420) 0/5YkO9er10YonsBT1rEn0lfBXDHwtwbxG2bdqELTuEtX2+OEih7K43rN2EvpXX47azaNpe/drIz
421) wgAdhpfZ/mZwaGFX0c7r5HCTnroNRi5Bx/vu7m1A7Nt1dix4Gl/aPLCWQzpwmdIMJDiqD1RGpc5v
422) +pDLrpfhZOVhLjAPSQ0V7mm/XNSca8oIsDjwdvR438RQCU56mrlypklS4/tJAe0JZNZIgBmJszjG
423) AFbsmNYTJ9GmULB9lXmTWmrME592S285iWU5SsJcE1s+3oQw9QrvWB+e3bGAd9e+VFmFqr6+/gFQ
424) SwECHgMUAAAACACdVhlZ01RRk9IAAADmAAAABQAAAAAAAAABAAAApIEAAAAALmtleXNQSwECHgMU
425) AAAACACdVhlZ3Wlf4QUDAADUAwAAAgAAAAAAAAABAAAApIH1AAAAMDBQSwECHgMUAAAACACdVhlZ
426) /aaiwcoBAAArAgAAAgAAAAAAAAABAAAApIEaBAAAMDNQSwECHgMUAAAACACdVhlZs14oCcgBAAAr
427) AgAAAgAAAAAAAAABAAAApIEEBgAAMDlQSwECHgMUAAAACACdVhlZyjtiYvgBAABrAgAAAgAAAAAA
428) AAABAAAApIHsBwAAMWFQSwUGAAAAAAUABQDzAAAABAoAAAAA
429) """
430) VAULT_STOREROOM_CONFIG_DATA = {
431)     'global': {
432)         'phrase': DUMMY_PASSPHRASE.decode('utf-8').rstrip('\n'),
433)     },
434)     'services': {
435)         '(meta)': {
436)             'notes': 'This config was originally in storeroom format.',
437)         },
438)         DUMMY_SERVICE: DUMMY_CONFIG_SETTINGS.copy(),
439)     },
440) }
441) 
442) CANNOT_LOAD_CRYPTOGRAPHY = (
443)     b'Cannot load the required Python module "cryptography".'
444) )
445) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

447)     not os.environ.get('SSH_AUTH_SOCK'), reason='running SSH agent required'
448) )
449) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

454)     list1 = [
455)         Pair(value['public_key_data'], f'{key} test key'.encode('ASCII'))
456)         for key, value in SUPPORTED_KEYS.items()
457)     ]
458)     list2 = [
459)         Pair(value['public_key_data'], f'{key} test key'.encode('ASCII'))
460)         for key, value in UNSUITABLE_KEYS.items()
461)     ]
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

462)     return list1 + list2
463) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

468)     list1 = [
469)         Pair(value['public_key_data'], f'{key} test key'.encode('ASCII'))
470)         for key, value in SUPPORTED_KEYS.items()
471)     ]
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

472)     return list1[:1]
473) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

481)     ]
482) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

484) def phrase_from_key(key: bytes) -> bytes:
485)     if key == DUMMY_KEY1:  # pragma: no branch
486)         return DUMMY_PHRASE_FROM_KEY1
487)     raise KeyError(key)  # pragma: no cover
488) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

490) @contextlib.contextmanager
491) def isolated_config(
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

492)     monkeypatch: Any,
493)     runner: click.testing.CliRunner,
494)     config: Any,
Marco Ricci Fix typing issues in mypy s...

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

497)     env_name = prog_name.replace(' ', '_').upper() + '_PATH'
498)     with runner.isolated_filesystem():
499)         monkeypatch.setenv('HOME', os.getcwd())
500)         monkeypatch.setenv('USERPROFILE', os.getcwd())
501)         monkeypatch.delenv(env_name, raising=False)
Marco Ricci Consolidate `types` submodu...

Marco Ricci authored 1 month ago

502)         os.makedirs(os.path.dirname(cli._config_filename()), exist_ok=True)
503)         with open(cli._config_filename(), 'w', encoding='UTF-8') as outfile:
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

504)             json.dump(config, outfile)
505)         yield
506) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 3 weeks ago

508) @contextlib.contextmanager
509) def isolated_vault_exporter_config(
510)     monkeypatch: pytest.MonkeyPatch,
511)     runner: click.testing.CliRunner,
512)     vault_config: str | bytes | None = None,
513)     vault_key: str | None = None,
514) ) -> Iterator[None]:
515)     if TYPE_CHECKING:
516)         chdir = contextlib.chdir
517)     else:
518)         try:
519)             chdir = contextlib.chdir
520)         except AttributeError:
521) 
522)             @contextlib.contextmanager
Marco Ricci Move exporter command-line...

Marco Ricci authored 2 weeks ago

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

Marco Ricci authored 3 weeks ago

524)                 oldpath = os.getcwd()
525)                 os.chdir(newpath)
526)                 yield
527)                 os.chdir(oldpath)
528) 
529)     with runner.isolated_filesystem():
530)         monkeypatch.setenv('HOME', os.getcwd())
531)         monkeypatch.setenv('USERPROFILE', os.getcwd())
532)         monkeypatch.delenv('VAULT_PATH', raising=False)
533)         monkeypatch.delenv('VAULT_KEY', raising=False)
534)         monkeypatch.delenv('LOGNAME', raising=False)
535)         monkeypatch.delenv('USER', raising=False)
536)         monkeypatch.delenv('USERNAME', raising=False)
537)         if vault_key is not None:
538)             monkeypatch.setenv('VAULT_KEY', vault_key)
539)         match vault_config:
540)             case str():
541)                 with open('.vault', 'w', encoding='UTF-8') as outfile:
542)                     print(vault_config, file=outfile)
543)             case bytes():
544)                 os.makedirs('.vault', mode=0o700, exist_ok=True)
545)                 with (
546)                     chdir('.vault'),
547)                     tempfile.NamedTemporaryFile(suffix='.zip') as tmpzipfile,
548)                 ):
549)                     for line in vault_config.splitlines():
550)                         tmpzipfile.write(base64.standard_b64decode(line))
551)                     tmpzipfile.flush()
552)                     tmpzipfile.seek(0, 0)
553)                     with zipfile.ZipFile(tmpzipfile.file) as zipfileobj:
554)                         zipfileobj.extractall()
555)             case None:
556)                 pass
557)             case _:  # pragma: no cover
558)                 assert_never(vault_config)
559)         yield
560) 
561) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

563)     del args, kwargs  # Unused.
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

564)     return DUMMY_PASSPHRASE.decode('UTF-8')