8c9ca812be07a78de272aad82c08251cbaae5164
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 Support Python 3.10 and PyP...

Marco Ricci authored 2 months ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

13) import pytest
14) 
Marco Ricci Consolidate `types` submodu...

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

16) 
17) __all__ = ()
18) 
19) if TYPE_CHECKING:
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 1 month ago

20)     from collections.abc import Iterator, Mapping
21) 
22)     import click.testing
23)     from typing_extensions import Any, TypedDict
24) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

25)     class SSHTestKey(TypedDict):
26)         private_key: bytes
27)         public_key: bytes | str
28)         public_key_data: bytes
29)         expected_signature: bytes | None
30)         derived_passphrase: bytes | str | None
31) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

36) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
37) QyNTUxOQAAACCBeIFoJtYCSF8P/zJIb+TBMIncHGpFBgnpCQ/7whJpdgAAAKDweO7H8Hju
38) xwAAAAtzc2gtZWQyNTUxOQAAACCBeIFoJtYCSF8P/zJIb+TBMIncHGpFBgnpCQ/7whJpdg
39) AAAEAbM/A869nkWZbe2tp3Dm/L6gitvmpH/aRZt8sBII3ExYF4gWgm1gJIXw//Mkhv5MEw
40) idwcakUGCekJD/vCEml2AAAAG3Rlc3Qga2V5IHdpdGhvdXQgcGFzc3BocmFzZQEC
41) -----END OPENSSH PRIVATE KEY-----
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

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

Marco Ricci authored 2 months ago

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

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 2 months ago

97)     },
98)     'rsa': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

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

Marco Ricci authored 2 months ago

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

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

Marco Ricci authored 2 months ago

197)         '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

198)     },
199) }
200) 
201) UNSUITABLE_KEYS: Mapping[str, SSHTestKey] = {
202)     'dsa1024': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

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

Marco Ricci authored 2 months ago

259)         'expected_signature': None,
260)         'derived_passphrase': None,
261)     },
262)     'ecdsa256': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

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

Marco Ricci authored 2 months ago

285)         'expected_signature': None,
286)         'derived_passphrase': None,
287)     },
288)     'ecdsa384': {
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 2 months ago

347) 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

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

Marco Ricci authored 1 month ago

350)     not os.environ.get('SSH_AUTH_SOCK'), reason='running SSH agent required'
351) )
352) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

357)     list1 = [
358)         Pair(value['public_key_data'], f'{key} test key'.encode('ASCII'))
359)         for key, value in SUPPORTED_KEYS.items()
360)     ]
361)     list2 = [
362)         Pair(value['public_key_data'], f'{key} test key'.encode('ASCII'))
363)         for key, value in UNSUITABLE_KEYS.items()
364)     ]
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

365)     return list1 + list2
366) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

371)     list1 = [
372)         Pair(value['public_key_data'], f'{key} test key'.encode('ASCII'))
373)         for key, value in SUPPORTED_KEYS.items()
374)     ]
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

375)     return list1[:1]
376) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

384)     ]
385) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

387) def phrase_from_key(key: bytes) -> bytes:
388)     if key == DUMMY_KEY1:  # pragma: no branch
389)         return DUMMY_PHRASE_FROM_KEY1
390)     raise KeyError(key)  # pragma: no cover
391) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

393) @contextlib.contextmanager
394) def isolated_config(
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

395)     monkeypatch: Any,
396)     runner: click.testing.CliRunner,
397)     config: Any,
Marco Ricci Fix typing issues in mypy s...

Marco Ricci authored 1 month ago

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

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

400)     env_name = prog_name.replace(' ', '_').upper() + '_PATH'
401)     with runner.isolated_filesystem():
402)         monkeypatch.setenv('HOME', os.getcwd())
403)         monkeypatch.setenv('USERPROFILE', os.getcwd())
404)         monkeypatch.delenv(env_name, raising=False)
Marco Ricci Consolidate `types` submodu...

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

407)             json.dump(config, outfile)
408)         yield
409) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

412)     del args, kwargs  # Unused.