0ea17f021eb19d00de8d7583cab2cf260ce6ff1f
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 Rename and regroup all test...

Marco Ricci authored 2 months ago

15) import derivepassphrase
16) import derivepassphrase.cli
17) import derivepassphrase.types
18) import ssh_agent_client
19) import ssh_agent_client.types
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) 
353) skip_if_no_agent = pytest.mark.skipif(
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

354)     not os.environ.get('SSH_AUTH_SOCK'), reason='running SSH agent required'
355) )
356) 
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

357) 
358) def list_keys(
359)     self: Any = None,
360) ) -> list[ssh_agent_client.types.KeyCommentPair]:
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 1 month ago

361)     del self  # Unused.
362)     Pair = ssh_agent_client.types.KeyCommentPair  # noqa: N806
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

363)     list1 = [
364)         Pair(value['public_key_data'], f'{key} test key'.encode('ASCII'))
365)         for key, value in SUPPORTED_KEYS.items()
366)     ]
367)     list2 = [
368)         Pair(value['public_key_data'], f'{key} test key'.encode('ASCII'))
369)         for key, value in UNSUITABLE_KEYS.items()
370)     ]
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

371)     return list1 + list2
372) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

374) def list_keys_singleton(
375)     self: Any = None,
376) ) -> list[ssh_agent_client.types.KeyCommentPair]:
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 1 month ago

377)     del self  # Unused.
378)     Pair = ssh_agent_client.types.KeyCommentPair  # noqa: N806
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

379)     list1 = [
380)         Pair(value['public_key_data'], f'{key} test key'.encode('ASCII'))
381)         for key, value in SUPPORTED_KEYS.items()
382)     ]
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

383)     return list1[:1]
384) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

386) def suitable_ssh_keys(
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

387)     conn: Any,
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

388) ) -> Iterator[ssh_agent_client.types.KeyCommentPair]:
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 1 month ago

389)     del conn  # Unused.
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

390)     yield from [
391)         ssh_agent_client.types.KeyCommentPair(DUMMY_KEY1, b'no comment'),
392)         ssh_agent_client.types.KeyCommentPair(DUMMY_KEY2, b'a comment'),
393)     ]
394) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

396) def phrase_from_key(key: bytes) -> bytes:
397)     if key == DUMMY_KEY1:  # pragma: no branch
398)         return DUMMY_PHRASE_FROM_KEY1
399)     raise KeyError(key)  # pragma: no cover
400) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

402) @contextlib.contextmanager
403) def isolated_config(
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

404)     monkeypatch: Any,
405)     runner: click.testing.CliRunner,
406)     config: Any,
Marco Ricci Fix typing issues in mypy s...

Marco Ricci authored 1 month ago

407) ) -> Iterator[None]:
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

409)     env_name = prog_name.replace(' ', '_').upper() + '_PATH'
410)     with runner.isolated_filesystem():
411)         monkeypatch.setenv('HOME', os.getcwd())
412)         monkeypatch.setenv('USERPROFILE', os.getcwd())
413)         monkeypatch.delenv(env_name, raising=False)
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 1 month ago

414)         os.makedirs(
415)             os.path.dirname(derivepassphrase.cli._config_filename()),
416)             exist_ok=True,
417)         )
418)         with open(
419)             derivepassphrase.cli._config_filename(),
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

420)             'w',
421)             encoding='UTF-8',
Marco Ricci Fix style issues with ruff...

Marco Ricci authored 1 month ago

422)         ) as outfile:
Marco Ricci Rename and regroup all test...

Marco Ricci authored 2 months ago

423)             json.dump(config, outfile)
424)         yield
425) 
Marco Ricci Reformat everything with ruff

Marco Ricci authored 1 month ago

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

Marco Ricci authored 2 months ago

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

Marco Ricci authored 1 month ago

428)     del args, kwargs  # Unused.