seedkeeper-manager 5.9.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. seedkeeper_manager-5.9.2/COPYING +26 -0
  2. seedkeeper_manager-5.9.2/NEWS +404 -0
  3. seedkeeper_manager-5.9.2/PKG-INFO +238 -0
  4. seedkeeper_manager-5.9.2/README.adoc +186 -0
  5. seedkeeper_manager-5.9.2/man/ykman.1 +96 -0
  6. seedkeeper_manager-5.9.2/pyproject.toml +85 -0
  7. seedkeeper_manager-5.9.2/tests/__init__.py +0 -0
  8. seedkeeper_manager-5.9.2/tests/conftest.py +4 -0
  9. seedkeeper_manager-5.9.2/tests/device/__init__.py +0 -0
  10. seedkeeper_manager-5.9.2/tests/device/cli/__init__.py +0 -0
  11. seedkeeper_manager-5.9.2/tests/device/cli/conftest.py +31 -0
  12. seedkeeper_manager-5.9.2/tests/device/cli/piv/__init__.py +0 -0
  13. seedkeeper_manager-5.9.2/tests/device/cli/piv/conftest.py +56 -0
  14. seedkeeper_manager-5.9.2/tests/device/cli/piv/test_fips.py +19 -0
  15. seedkeeper_manager-5.9.2/tests/device/cli/piv/test_generate_cert_and_csr.py +308 -0
  16. seedkeeper_manager-5.9.2/tests/device/cli/piv/test_key_management.py +621 -0
  17. seedkeeper_manager-5.9.2/tests/device/cli/piv/test_management_key.py +181 -0
  18. seedkeeper_manager-5.9.2/tests/device/cli/piv/test_misc.py +46 -0
  19. seedkeeper_manager-5.9.2/tests/device/cli/piv/test_pin_puk.py +167 -0
  20. seedkeeper_manager-5.9.2/tests/device/cli/piv/test_read_write_object.py +113 -0
  21. seedkeeper_manager-5.9.2/tests/device/cli/piv/util.py +10 -0
  22. seedkeeper_manager-5.9.2/tests/device/cli/test_config.py +236 -0
  23. seedkeeper_manager-5.9.2/tests/device/cli/test_hsmauth.py +443 -0
  24. seedkeeper_manager-5.9.2/tests/device/cli/test_misc.py +25 -0
  25. seedkeeper_manager-5.9.2/tests/device/cli/test_oath.py +604 -0
  26. seedkeeper_manager-5.9.2/tests/device/cli/test_openpgp.py +233 -0
  27. seedkeeper_manager-5.9.2/tests/device/cli/test_otp.py +675 -0
  28. seedkeeper_manager-5.9.2/tests/device/cli/test_securitydomain.py +136 -0
  29. seedkeeper_manager-5.9.2/tests/device/condition.py +86 -0
  30. seedkeeper_manager-5.9.2/tests/device/conftest.py +116 -0
  31. seedkeeper_manager-5.9.2/tests/device/test_ccid.py +9 -0
  32. seedkeeper_manager-5.9.2/tests/device/test_fips_u2f_commands.py +59 -0
  33. seedkeeper_manager-5.9.2/tests/device/test_hsmauth.py +348 -0
  34. seedkeeper_manager-5.9.2/tests/device/test_interfaces.py +28 -0
  35. seedkeeper_manager-5.9.2/tests/device/test_oath.py +248 -0
  36. seedkeeper_manager-5.9.2/tests/device/test_openpgp.py +351 -0
  37. seedkeeper_manager-5.9.2/tests/device/test_otp.py +162 -0
  38. seedkeeper_manager-5.9.2/tests/device/test_piv.py +885 -0
  39. seedkeeper_manager-5.9.2/tests/device/test_scp.py +50 -0
  40. seedkeeper_manager-5.9.2/tests/device/test_securitydomain.py +209 -0
  41. seedkeeper_manager-5.9.2/tests/files/rsa_1024_key.pem +15 -0
  42. seedkeeper_manager-5.9.2/tests/files/rsa_2048_cert.der +0 -0
  43. seedkeeper_manager-5.9.2/tests/files/rsa_2048_cert.pem +18 -0
  44. seedkeeper_manager-5.9.2/tests/files/rsa_2048_cert_metadata.pem +20 -0
  45. seedkeeper_manager-5.9.2/tests/files/rsa_2048_key.pem +27 -0
  46. seedkeeper_manager-5.9.2/tests/files/rsa_2048_key_cert.pfx +0 -0
  47. seedkeeper_manager-5.9.2/tests/files/rsa_2048_key_cert_encrypted.pfx +0 -0
  48. seedkeeper_manager-5.9.2/tests/files/rsa_2048_key_encrypted.pem +30 -0
  49. seedkeeper_manager-5.9.2/tests/files/scp/.gitignore +1 -0
  50. seedkeeper_manager-5.9.2/tests/files/scp/cert.ca-kloc.ecdsa.pem +12 -0
  51. seedkeeper_manager-5.9.2/tests/files/scp/cert.ka-kloc.ecdsa.pem +13 -0
  52. seedkeeper_manager-5.9.2/tests/files/scp/cert.oce.ecka.pem +12 -0
  53. seedkeeper_manager-5.9.2/tests/files/scp/certs.oce.pem +25 -0
  54. seedkeeper_manager-5.9.2/tests/files/scp/generate_files.sh +115 -0
  55. seedkeeper_manager-5.9.2/tests/files/scp/oce.pfx +0 -0
  56. seedkeeper_manager-5.9.2/tests/files/scp/sk.oce.ecka.pem +5 -0
  57. seedkeeper_manager-5.9.2/tests/ruff.toml +2 -0
  58. seedkeeper_manager-5.9.2/tests/test_core.py +101 -0
  59. seedkeeper_manager-5.9.2/tests/test_device.py +233 -0
  60. seedkeeper_manager-5.9.2/tests/test_hsmauth.py +65 -0
  61. seedkeeper_manager-5.9.2/tests/test_management.py +6 -0
  62. seedkeeper_manager-5.9.2/tests/test_oath.py +98 -0
  63. seedkeeper_manager-5.9.2/tests/test_piv.py +238 -0
  64. seedkeeper_manager-5.9.2/tests/test_scancodes.py +349 -0
  65. seedkeeper_manager-5.9.2/tests/test_util.py +210 -0
  66. seedkeeper_manager-5.9.2/tests/util.py +41 -0
  67. seedkeeper_manager-5.9.2/ykman/__init__.py +28 -0
  68. seedkeeper_manager-5.9.2/ykman/_cli/__init__.py +26 -0
  69. seedkeeper_manager-5.9.2/ykman/_cli/__main__.py +683 -0
  70. seedkeeper_manager-5.9.2/ykman/_cli/apdu.py +211 -0
  71. seedkeeper_manager-5.9.2/ykman/_cli/config.py +728 -0
  72. seedkeeper_manager-5.9.2/ykman/_cli/fido.py +989 -0
  73. seedkeeper_manager-5.9.2/ykman/_cli/hsmauth.py +860 -0
  74. seedkeeper_manager-5.9.2/ykman/_cli/info.py +215 -0
  75. seedkeeper_manager-5.9.2/ykman/_cli/oath.py +1051 -0
  76. seedkeeper_manager-5.9.2/ykman/_cli/openpgp.py +658 -0
  77. seedkeeper_manager-5.9.2/ykman/_cli/otp.py +956 -0
  78. seedkeeper_manager-5.9.2/ykman/_cli/piv.py +1559 -0
  79. seedkeeper_manager-5.9.2/ykman/_cli/script.py +107 -0
  80. seedkeeper_manager-5.9.2/ykman/_cli/securitydomain.py +447 -0
  81. seedkeeper_manager-5.9.2/ykman/_cli/util.py +468 -0
  82. seedkeeper_manager-5.9.2/ykman/base.py +87 -0
  83. seedkeeper_manager-5.9.2/ykman/device.py +345 -0
  84. seedkeeper_manager-5.9.2/ykman/diagnostics.py +247 -0
  85. seedkeeper_manager-5.9.2/ykman/fido.py +113 -0
  86. seedkeeper_manager-5.9.2/ykman/hid/__init__.py +101 -0
  87. seedkeeper_manager-5.9.2/ykman/hid/base.py +73 -0
  88. seedkeeper_manager-5.9.2/ykman/hid/fido.py +79 -0
  89. seedkeeper_manager-5.9.2/ykman/hid/freebsd.py +302 -0
  90. seedkeeper_manager-5.9.2/ykman/hid/linux.py +130 -0
  91. seedkeeper_manager-5.9.2/ykman/hid/macos.py +298 -0
  92. seedkeeper_manager-5.9.2/ykman/hid/windows.py +372 -0
  93. seedkeeper_manager-5.9.2/ykman/hsmauth.py +46 -0
  94. seedkeeper_manager-5.9.2/ykman/logging.py +89 -0
  95. seedkeeper_manager-5.9.2/ykman/logging_setup.py +66 -0
  96. seedkeeper_manager-5.9.2/ykman/oath.py +99 -0
  97. seedkeeper_manager-5.9.2/ykman/openpgp.py +156 -0
  98. seedkeeper_manager-5.9.2/ykman/otp.py +128 -0
  99. seedkeeper_manager-5.9.2/ykman/pcsc/__init__.py +284 -0
  100. seedkeeper_manager-5.9.2/ykman/piv.py +837 -0
  101. seedkeeper_manager-5.9.2/ykman/py.typed +0 -0
  102. seedkeeper_manager-5.9.2/ykman/scancodes/__init__.py +48 -0
  103. seedkeeper_manager-5.9.2/ykman/scancodes/bepo.py +134 -0
  104. seedkeeper_manager-5.9.2/ykman/scancodes/de.py +133 -0
  105. seedkeeper_manager-5.9.2/ykman/scancodes/fr.py +130 -0
  106. seedkeeper_manager-5.9.2/ykman/scancodes/it.py +137 -0
  107. seedkeeper_manager-5.9.2/ykman/scancodes/modhex.py +68 -0
  108. seedkeeper_manager-5.9.2/ykman/scancodes/norman.py +132 -0
  109. seedkeeper_manager-5.9.2/ykman/scancodes/uk.py +132 -0
  110. seedkeeper_manager-5.9.2/ykman/scancodes/us.py +132 -0
  111. seedkeeper_manager-5.9.2/ykman/scripting.py +257 -0
  112. seedkeeper_manager-5.9.2/ykman/settings.py +122 -0
  113. seedkeeper_manager-5.9.2/ykman/util.py +218 -0
  114. seedkeeper_manager-5.9.2/yubikit/__init__.py +31 -0
  115. seedkeeper_manager-5.9.2/yubikit/core/__init__.py +438 -0
  116. seedkeeper_manager-5.9.2/yubikit/core/fido.py +141 -0
  117. seedkeeper_manager-5.9.2/yubikit/core/otp.py +275 -0
  118. seedkeeper_manager-5.9.2/yubikit/core/smartcard/__init__.py +511 -0
  119. seedkeeper_manager-5.9.2/yubikit/core/smartcard/scp.py +375 -0
  120. seedkeeper_manager-5.9.2/yubikit/hsmauth.py +718 -0
  121. seedkeeper_manager-5.9.2/yubikit/logging.py +39 -0
  122. seedkeeper_manager-5.9.2/yubikit/management.py +772 -0
  123. seedkeeper_manager-5.9.2/yubikit/oath.py +566 -0
  124. seedkeeper_manager-5.9.2/yubikit/openpgp.py +1793 -0
  125. seedkeeper_manager-5.9.2/yubikit/piv.py +1537 -0
  126. seedkeeper_manager-5.9.2/yubikit/py.typed +0 -0
  127. seedkeeper_manager-5.9.2/yubikit/securitydomain.py +381 -0
  128. seedkeeper_manager-5.9.2/yubikit/support.py +611 -0
  129. seedkeeper_manager-5.9.2/yubikit/yubiotp.py +928 -0
@@ -0,0 +1,26 @@
1
+ Copyright (c) 2015 Yubico AB
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or
5
+ without modification, are permitted provided that the following
6
+ conditions are met:
7
+
8
+ 1. Redistributions of source code must retain the above copyright
9
+ notice, this list of conditions and the following disclaimer.
10
+ 2. Redistributions in binary form must reproduce the above
11
+ copyright notice, this list of conditions and the following
12
+ disclaimer in the documentation and/or other materials provided
13
+ with the distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
18
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
19
+ COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
25
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26
+ POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,404 @@
1
+ * Version 5.9.1 (released 2026-04-15)
2
+ ** Restrict DLL search paths (YSA-2026-01).
3
+ ** Improve device information when listing YubiKeys with no serial number visible over OTP.
4
+ ** Windows and MacOS installers build with Python 3.14.4
5
+
6
+ * Version 5.9.0 (released 2026-01-22)
7
+ ** OATH: Add support for importing credentials from PSKC files.
8
+ ** OATH: Add --generate flag to "oath accounts add" command to generate random secrets.
9
+ ** CLI: Include attached devices in error output when device selection fails.
10
+ ** PIV: Add support for decompressing certificates using CXF.
11
+ ** PIV: Correct display of PIN attempts remaining when >= 15.
12
+ ** PIV: Deprecate ykman.piv.parse_rfc4514_string. Use from_rfc4514_string from cryptography instead.
13
+ ** OpenPGP: Improve error handling for YubiKey NEO.
14
+ ** HSM Auth: Add "hsmauth credentials change-password" command.
15
+ ** Bugfix: Fix error handling in "apdu" command.
16
+ ** Dependency: Add python-pskc library for PSKC support.
17
+ ** Windows and MacOS installers built with Python 3.14.2
18
+
19
+ * Version 5.8.0 (released 2025-09-03)
20
+ ** Python 3.10 or later is now required.
21
+ ** CLI: The "otp settings" command now supports --serial-usb-visible.
22
+ ** CLI: List PIV "retired" key slots after normal slots.
23
+ ** CLI: Add --no-update-chuid to "piv certificate" commands.
24
+ ** CLI: Improve "fido" command error handing when FIDO2 is disabled/missing.
25
+ ** CLI: Support "fido reset" when multiple keys are connected.
26
+ ** Windows CLI: Fix issue with command line arguments starting with "~".
27
+ ** Add "YkmanDevice.reinsert" method to simplify reconnecting a YubiKey.
28
+ ** PIV: Add "PivSession.get_serial" method.
29
+ ** Building the project now uses uv.
30
+ ** Windows and MacOS installers built with Python 3.13.7
31
+
32
+ * Version 5.7.2 (released 2025-06-09)
33
+ This is a Windows-only patch release.
34
+ ** FIDO reset over NFC on Windows fixed.
35
+ ** Windows installer built with Python 3.13.4
36
+
37
+ * Version 5.7.1 (released 2025-06-09)
38
+ ** Bugfix: Fix OTP connections for YubiKeys with all other USB interfaces deactivated.
39
+ ** Windows and MacOS installers built with Python 3.13.4
40
+
41
+ * Version 5.7.0 (released 2025-05-28)
42
+ ** Python 3.9 or later is now required.
43
+ ** PIV: Improve error handling for the Printed data slot.
44
+ ** PIV: Improve error handling when decompressing malformed certificates.
45
+ ** Fix incompatibility with pyscard 2.2.2.
46
+ ** Improve compatibility with NFC readers that don't support extended APDUs.
47
+ ** Building the project now requires Poetry version 2.0 or later.
48
+ ** Windows and MacOS installers built with Python 3.13.3
49
+
50
+ * Version 5.6.1 (released 2025-03-18)
51
+ ** Fix: Version 5.6.0 uses Exclusive smart card connections, which caused connections
52
+ to fail if another application was accessing the YubiKey. This version adds a
53
+ fallback to use non-exclusive connections in case of such a failure.
54
+ ** Bugfix: APDU encoding was slightly incorrect for commands which specify Le, but no
55
+ data body. This caused issued on some platforms.
56
+ ** CLI: The "fido info" command now shows the YubiKey AAGUID, when available.
57
+
58
+ * Version 5.6.0 (released 2025-03-12)
59
+ ** SCP: Add support for specifying Le (needed in OpenPGP get_challenge).
60
+ ** PIV: When writing a new CHUID, prefer to keep data from the old one if possible.
61
+ ** CLI: Specifying public-key is now optional when generating a PIV certificate,
62
+ if a public key can be read from the YubiKey itself.
63
+ ** CLI: (YK FIPS) Disallow --protect for PIV when not in FIPS approved state.
64
+ ** CLI: Support specifying Le in "apdu" command.
65
+ ** CLI: Show OpenPGP key information in "openpgp info" and "openpgp keys info" commands.
66
+ ** CLI: Detect OpenPGP memory corruption, and correctly factory reset OpenPGP if needed.
67
+ ** CLI: Don't fail on corrupted configuration files, instead show a warning.
68
+ ** Require Poetry >= 2.0 for building and packaging of the library.
69
+ ** Bugfix: CLI - Don't use extended APDUs in the "apdu" command on old YubiKeys which
70
+ do not support it.
71
+
72
+ * Version 5.5.1 (released 2024-07-01)
73
+ ** Bugfix: CLI - Don't use formatting that doesn't work on older Python versions.
74
+ Note: As the 5.5.0 installers bundle Python 3.12, this will be a source-only release.
75
+
76
+ * Version 5.5.0 (released 2024-06-26)
77
+ ** Add Secure Channel support to smartcard sessions.
78
+ ** Support extended APDUs in the "apdu" command (this is now the default).
79
+ ** HSMAuth: Treat management key as a PIN/password instead of a key, adding new CLI
80
+ commands.
81
+ ** PIV: Deprecate explicit passing of management key type when authenticating.
82
+ ** CLI: Add "config nfc --restrict" command to set "NFC restricted mode".
83
+ ** CLI: Display more information about PIN complexity and FIPS status for compatible
84
+ YubiKeys.
85
+ ** CLI: Improved error messages for illegal values of PIV PIN and PUK.
86
+ ** CLI: Drop error messages for old 3.x commands.
87
+ ** CLI: Removal of --upload for YubiCloud credentials. Export to CSV and upload via web
88
+ instead.
89
+ ** CLI: Add more detailed information to the CLI output for several commands.
90
+
91
+ * Version 5.4.0 (released 2024-03-27)
92
+ ** Support for YubiKey Bio Multi-protocol Edition.
93
+ ** CLI: Improve error messages for several failures.
94
+ ** Attempt to send SIGHUP to yubikey-agent if it is blocking the connection.
95
+ ** Bugfix: Allow "fido config" to work when no PIN is set on the YubiKey.
96
+ ** Bugfix: MacOS - Fix race condition resulting in unneeded delay in fido commands over
97
+ USB.
98
+ ** Bugfix: Linux - Fix error when listing OTP devices when no YubiKeys are attached.
99
+ ** Bugfix: OpenPGP - Fix RSA key generation on YubiKey NEO.
100
+
101
+ * Version 5.3.0 (released 2024-01-31)
102
+ ** FIDO: Add new CLI commands for PIN management and authenticator config
103
+ (force-change, set-min-length, toggle-always-uv, enable-ep-attestation).
104
+ ** PIV: Improve handling of legacy "PUK blocked" flag.
105
+ ** PIV: Improve handling of malformed certificates.
106
+ ** PIV: Display key information in "piv info" output on supported devices.
107
+ ** OTP: Fix some commands incorrectly showing errors when used over NFC/CCID.
108
+ ** Add tab-completion for YubiKey serial numbers and NFC readers.
109
+
110
+ * Version 5.2.1 (released 2023-10-10)
111
+ ** Add support for Python 3.12.
112
+ ** OATH: detect and remove corrupted credentials.
113
+ ** Bugfix: HSMAUTH: Fix order of CLI arguments.
114
+
115
+ * Version 5.2.0 (released 2023-08-21)
116
+ ** PIV: Support for compressed certificates.
117
+ ** OpenPGP: Use InvalidPinError for wrong PIN.
118
+ ** Add YubiHSM Auth application support.
119
+ ** Improved API documentation.
120
+ ** Scripting: Add name attribute to device.
121
+ ** Bugfix: PIV: don't throw InvalidPasswordError on malformed PEM private key.
122
+
123
+ * Version 5.1.1 (released 2023-04-27)
124
+ ** Bugfix: PIV: string representation of SLOT caused infinite loop on Python <3.11.
125
+ ** Bugfix: Fix errors in 'ykman config nfc' on YubiKeys without NFC capability.
126
+ ** Bugfix: Fix error message shown when invalid modhex input length given for YubiOTP.
127
+
128
+ * Version 5.1.0 (released 2023-04-17)
129
+ ** Add OpenPGP functionality to supported API.
130
+ ** Add PIV key info command to CLI.
131
+ ** PIV: Support signing prehashed data via API.
132
+ ** Bugfix: Fix signing PIV certificates/CSRs with key that always requires PIN.
133
+ ** Bugfix: Fix incorrect display name detection for certain keys over NFC.
134
+
135
+ * Version 5.0.1 (released 2023-01-17)
136
+ ** Bugfix: Fix the interactive confirmation prompt for some CLI commands.
137
+ ** Bugfix: OpenPGP Signature PIN policy values were swapped.
138
+ ** Bugfix: FIDO: Handle discoverable credentials that are missing name or displayName.
139
+ ** Add support for Python 3.11.
140
+ ** Remove extra whitespace characters from CLI into command output.
141
+
142
+ * Version 5.0.0 (released 2022-10-19)
143
+ ** Various cleanups and improvements to the API.
144
+ ** Improvements to the handling of YubiKeys and connections.
145
+ ** Command aliases for ykman 3.x (introduced in ykman 4.0) have now been dropped.
146
+ ** Installers for ykman are now provided for Windows (amd64) and MacOS (universal2).
147
+ ** Logging has been improved, and a new TRAFFIC level has been introduced.
148
+ ** The codebase has been improved for scripting usage, either directly as a Python
149
+ module, or via the new "ykman script" command.
150
+ See doc/Scripting.adoc, doc/Library_Usage.adoc, and examples/ for more details.
151
+ ** PIV: Add support for dotted-string OIDs when parsing RFC4514 strings.
152
+ ** PIV: Drop support for signing certificates and CSRs with SHA-1.
153
+ ** FIDO: Credential management commands have been improved to deal with ambiguity
154
+ in certain cases.
155
+ ** OATH: Access Keys ("remembered" passwords) are now stored in the system keyring.
156
+ ** OpenPGP: Commands have been added to manage PINs.
157
+
158
+ * Version 4.0.9 (released 2022-06-17)
159
+ ** Dependency: Add support for python-fido2 1.x
160
+ ** Fix: Drop stated support for Click 6 as features from 7 are being used.
161
+
162
+ * Version 4.0.8 (released 2022-01-31)
163
+ ** Bugfix: Fix error message for invalid modhex when programing a YubiOTP credential.
164
+ ** Bugfix: Fix issue with displaying a Steam credential when it is the only account.
165
+ ** Bugfix: Prevent installation of files in site-packages root.
166
+ ** Bugfix: Fix cleanup logic in PIV for protected management key.
167
+ ** Add support for token identifier when programming slot-based HOTP.
168
+ ** Add support for programming NDEF in text mode.
169
+ ** Dependency: Add support for Cryptography <= 38.
170
+
171
+ * Version 4.0.7 (released 2021-09-08)
172
+ ** Bugfix release: Fix broken naming for "YubiKey 4", and a small OATH issue with
173
+ touch Steam credentials.
174
+
175
+ * Version 4.0.6 (released 2021-09-08)
176
+ ** Improve handling of YubiKey device reboots.
177
+ ** More consistently mask PIN/password input in prompts.
178
+ ** Support switching mode over CCID for YubiKey Edge.
179
+ ** Run pkill from PATH instead of fixed location.
180
+
181
+ * Version 4.0.5 (released 2021-07-16)
182
+ ** Bugfix: Fix PIV feature detection for some YubiKey NEO versions.
183
+ ** Bugfix: Fix argument short form for --period when adding TOTP credentials.
184
+ ** Bugfix: More strict validation for some arguments, resulting in better error messages.
185
+ ** Bugfix: Correctly handle TOTP credentials using period != 30 AND touch_required.
186
+ ** Bugfix: Fix prompting for access code in the otp settings command (now uses "-A -").
187
+
188
+ * Version 4.0.3 (released 2021-05-17)
189
+ ** Add support for fido reset over NFC.
190
+ ** Bugfix: The --touch argument to piv change-management-key was ignored.
191
+ ** Bugfix: Don't prompt for password when importing PIV key/cert if file is invalid.
192
+ ** Bugfix: Fix setting touch-eject/auto-eject for YubiKey 4 and NEO.
193
+ ** Bugfix: Detect PKCS#12 format when outer sequence uses indefinite length.
194
+ ** Dependency: Add support for Click 8.
195
+
196
+ * Version 4.0.2 (released 2021-04-12)
197
+ ** Update device names.
198
+ ** Add read_info output to the --diagnose command, and show exception types.
199
+ ** Bugfix: Fix read_info for YubiKey Plus.
200
+
201
+ * Version 4.0.1 (released 2021-03-29)
202
+ ** Add support for YK5-based FIPS YubiKeys.
203
+ ** Bugfix: Fix OTP device enumeration on Win32.
204
+
205
+ * Version 4.0.0 (released 2021-03-02)
206
+ ** Drop support for Python < 3.6.
207
+ ** Drop reliance on libusb and libykpersonalize.
208
+ ** Support the "fido" and "otp" subcommands over NFC (using the --reader flag)
209
+ ** New "ykman --diagnose" command to aid in troubleshooting.
210
+ ** New "ykman apdu" command for sending raw APDUs over the smart card interface.
211
+ ** Restructuring of subcommands, with aliases for old versions (to be removed
212
+ in a future release).
213
+ ** Major changes to the underlying "library" code:
214
+ *** New "yubikit" package added for custom development and advanced scripting.
215
+ *** Type hints added for a large part of the "public" API.
216
+ ** OpenPGP: Add support for KDF enabled YubiKeys.
217
+ ** Static password: Add support for FR, IT, UK and BEPO keyboard layouts.
218
+
219
+ * Version 3.1.2 (released 2021-01-21)
220
+ ** Bugfix release: Fix dependency on python-fido2 version.
221
+
222
+ * Version 3.1.1 (released 2020-01-29)
223
+ ** Add support for YubiKey 5C NFC
224
+ ** OpenPGP: set-touch now performs compatibility checks before prompting for PIN
225
+ ** OpenPGP: Improve error messages and documentation for set-touch
226
+ ** PIV: read-object command no longer adds a trailing newline
227
+ ** CLI: Hint at missing permissions when opening a device fails
228
+ ** Linux: Improve error handling when pcscd is not running
229
+ ** Windows: Improve how .DLL files are loaded, thanks to Marius Gabriel Mihai for reporting this!
230
+ ** Bugfix: set-touch now accepts the cached-fixed option
231
+ ** Bugfix: Fix crash in OtpController.prepare_upload_key() error parsing
232
+ ** Bugfix: Fix crash in piv info command when a certificate slot contains an invalid certificate
233
+ ** Library: PivController.read_certificate(slot) now wraps certificate parsing exceptions in new exception type `InvalidCertificate`
234
+ ** Library: PivController.list_certificates() now returns `None` for slots containing invalid certificate, instead of raising an exception
235
+
236
+ * Version 3.1.0 (released 2019-08-20)
237
+ ** Add support for YubiKey 5Ci
238
+ ** OpenPGP: the info command now prints OpenPGP specification version as well
239
+ ** OpenPGP: Update support for attestation to match OpenPGP v3.4
240
+ ** PIV: Use UTC time for self-signed certificates
241
+ ** OTP: Static password now supports the Norman keyboard layout
242
+
243
+ * Version 3.0.0 (released 2019-06-24)
244
+ ** Add support for new YubiKey Preview and lightning form factor
245
+ ** FIDO: Support for credential management
246
+ ** OpenPGP: Support for OpenPGP attestation, cardholder certificates and cached touch policies
247
+ ** OTP: Add flag for using numeric keypad when sending digits
248
+
249
+ * Version 2.1.1 (released 2019-05-28)
250
+ ** OTP: Add initial support for uploading Yubico OTP credentials to YubiCloud
251
+ ** Don't automatically select the U2F applet on YubiKey NEO, it might be blocked by the OS
252
+ ** ChalResp: Always pad challenge correctly
253
+ ** Bugfix: Don't crash with older versions of cryptography
254
+ ** Bugfix: Password was always prompted in OATH command, even if sent as argument
255
+
256
+ * Version 2.1.0 (released 2019-03-11)
257
+ ** Add --reader flag to ykman list, to list available smart card readers
258
+ ** FIPS: Checking if a YubiKey FIPS is in FIPS mode is now opt-in, with the --check-fips flag
259
+ ** PIV: Add commands for writing and reading arbitrary PIV objects
260
+ ** PIV: Verify that the PIN must be between 6 - 8 characters long
261
+ ** PIV: In import-certificate, make the verification that the certificate and private key matches opt-in, with the --verify flag
262
+ ** PIV: The piv info command now shows the serial number of the certificates
263
+ ** PIV: The piv info command now shows the full Distinguished Name (DN) of the certificate subject and issuer, if possible
264
+ ** PIV: Malformed certificates are now handled better
265
+ ** OpenPGP: The openpgp touch command now shows current touch policies
266
+ ** The ykman usb/nfc config command now accepts openpgp as well as opgp as an argument
267
+ ** Bugfix: Fix support for german (DE) keyboard layout for static passwords
268
+
269
+ * Version 2.0.0 (released 2019-01-09)
270
+ ** Add support for Security Key NFC
271
+ ** Add experimental support for external smart card reader. See --reader flag
272
+ ** Add a minimal manpage
273
+ ** Add examples in help texts
274
+ ** PIV: update CHUID when importing a certificate
275
+ ** PIV: Optionally validate that private key and certificate match when importing a certificate (on by default in CLI)
276
+ ** PIV: Improve support for importing certificate chains and .PEM files with comments
277
+ ** Breaking API changes:
278
+ *** Merge CCID status word constants into a single SW enum in ykman.driver_ccid
279
+ *** Throw custom exception types instead of raw APDUErrors from many methods of PivController
280
+ *** Write CLI prompts to standard error instead of standard output
281
+ *** Replace function `ykman.util.parse_certificate` with `parse_certificates` which returns a list
282
+
283
+ * Version 1.0.1 (released 2018-10-10)
284
+ ** Support for YubiKey 5A
285
+ ** OATH: Ignore extra parameters in URI parsing
286
+ ** Bugfix: Never say that NFC is supported for YubiKeys without NFC
287
+
288
+ * Version 1.0.0 (released 2018-09-24)
289
+ ** Add support for YubiKey 5 Series
290
+ ** Config: Add flag to generate a random configuration lock
291
+ ** OATH: Give a proper error message when a touch credential times out
292
+ ** NDEF: Allow setting the NDEF prefix from the CLI
293
+ ** FIDO: Block reset when multiple YubiKeys are connected
294
+
295
+ * Version 0.7.1 (released 2018-07-09)
296
+ ** Support for YubiKey FIPS.
297
+ ** OTP: Allow setting and removing access codes on the slots.
298
+ ** Interfaces: set-lock-code now only accepts hexadecimal inputs.
299
+ ** Bugfix: Don't fail to open the YubiKey when the serial is not visible.
300
+
301
+ * Version 0.7.0 (released 2018-05-07)
302
+ ** Support for YubiKey Preview.
303
+ ** Add command to configure enabled applications over USB and NFC. See ykman config -h.
304
+ ** Add command for selecting which slot to use for NDEF. See ykman otp ndef -h.
305
+
306
+ * Version 0.6.1 (released 2018-04-16)
307
+ ** Support for YubiKeys with FIDO2. See ykman fido -h
308
+ ** Report the form factor for YubiKeys that support it.
309
+ ** OTP: slot command is now called otp. See ykman otp -h for all changes.
310
+ ** Static password: Add support for different keyboard layouts. See ykman otp static -h
311
+ ** PIV: Signatures for CSRs are now correct.
312
+ ** PIV: Commands on slots with PIN policy ALWAYS no longer fail if the YubiKey has a management key protected by PIN.
313
+ ** Mode: The U2F mode is now called FIDO.
314
+ ** Dependencies: libu2f-host is no longer used for FIDO communication over USB, instead the python library fido2 is used.
315
+
316
+ * Version 0.6.0 (released 2018-02-09)
317
+ ** OpenPGP: Expose remaining PIN retries in info command and API.
318
+ ** CCID: Only try YubiKey smart card readers by default.
319
+ ** Handle NEO issues with challenge-response credentials better.
320
+ ** Improve logging.
321
+ ** Improve error handling when opening device over OTP.
322
+ ** Bugfix: Fix adding OTP data through the interactive prompt.
323
+
324
+ * Version 0.5.0 (released 2017-12-15)
325
+ ** API breaking changes:
326
+ *** OATH: New API more similar to yubioath-android
327
+ ** CLI breaking changes:
328
+ *** OATH: Touch prompt now written to stderr instead of stdout
329
+ *** OATH: `-a|--algorithm` option to `list` command removed
330
+ *** OATH: Columns in `code` command are now dynamically spaced depending on contents
331
+ *** OATH: `delete` command now requires confirmation or `-f|--force` argument
332
+ *** OATH: IDs printed by `list` command now include TOTP period if not 30
333
+ *** Changed outputs:
334
+ **** INFO: "Device name" output changed to "Device type"
335
+ **** PIV: "Management key is stored on device" output changed to "Management key is stored on the YubiKey"
336
+ **** PIV: "All PIV data have been cleared from the device" output changed to "All PIV data have been cleared from your YubiKey"
337
+ **** PIV: "The current management key is stored on the device" prompt changed to "The current management key is stored on the YubiKey"
338
+ **** SLOT: "blank to use device serial" prompt changed to "blank to use YubiKey serial number"
339
+ **** SLOT: "Using device serial" output changed to "Using YubiKey device serial"
340
+ **** Lots of failure case outputs changed
341
+ ** New features:
342
+ *** Support for multiple devices via new top-level option `-d|--device`
343
+ *** New top-level option `-l|--log-level` to enable logging
344
+ *** OATH: Support for remembering passwords locally.
345
+ *** OATH: New option `-s|--single` for `code` command
346
+ *** PIV: `set-pin-retries` command now warns that PIN and PUK will be reset to factory defaults, and prints those defaults after resetting
347
+ ** API bug fixes:
348
+ *** OATH: `valid_from` and `valid_to` for `Code` are now absolute instead of relative to the credential period
349
+ *** OATH: `period` for non-TOTP `Code` is now `None`
350
+
351
+ * Version 0.4.6 (released 2017-10-17)
352
+ ** Will now attempt to open device 3 times before failing
353
+ ** OpenPGP: Don't say data is removed when not
354
+ ** OpenPGP: Don't swallow APDU errors
355
+ ** PIV: Block on-chip RSA key generation for firmware versions 4.2.0 to 4.3.4 (inclusive) since these chips are vulnerable to http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-15361[CVE-2017-15631].
356
+
357
+ * Version 0.4.5 (released 2017-09-14)
358
+ ** OATH: Don't print issuer if there is no issuer.
359
+
360
+ * Version 0.4.4 (released 2017-09-06)
361
+ ** OATH: Fix yet another issue with backwards compatibility, for adding new credentials.
362
+
363
+ * Version 0.4.3 (released 2017-09-06)
364
+ ** OATH: Fix issue with backwards compatibility, when used as a library.
365
+
366
+ * Version 0.4.2 (released 2017-09-05)
367
+ ** OATH: Support 7 digit credentials.
368
+ ** OATH: Support credentials with a period other than 30 seconds.
369
+ ** OATH: The remove command is now called delete.
370
+
371
+ * Version 0.4.1 (released 2017-08-10)
372
+ ** PIV: Dropped support for deriving a management key from PIN.
373
+ ** PIV: Added support for generating a random management key and storing it on the device protected by the PIN.
374
+ ** OpenPGP: The reset command now handles a device in terminated state.
375
+ ** OATH: Credential filtering is now working properly on Python 2.
376
+
377
+ * Version 0.4.0 (released 2017-06-19)
378
+ ** Added PIV support. The tool and library now supports most of the PIV functionality found on the YubiKey 4 and NEO. To list the available commands, run ykman piv -h.
379
+ ** Mode command now supports adding and removing modes incrementally.
380
+
381
+ * Version 0.3.3 (released 2017-05-08)
382
+ ** Bugfix: Fix issue with OATH credentials from Steam on YubiKey 4.
383
+
384
+ * Version 0.3.2 (released 2017-04-24)
385
+ ** Allow access code input through an interactive prompt.
386
+ ** Bugfix: Some versions of YubiKey NEO occasionally failed calculating challenge-response credentials with touch.
387
+
388
+ * Version 0.3.1 (released 2017-03-13)
389
+ ** Allow programming of TOTP credentials in YubiKey Slots using the chalresp command.
390
+ ** Add a calculate command (and library support) to perform a challenge-response operation. Can also be used to generate TOTP codes for credentials stored in a slot.
391
+ ** OATH: Remove whitespace in secret keys provided by the user.
392
+ ** OATH: Prompt the user to touch the YubiKey for HOTP touch credentials.
393
+ ** Bugfix: The flag for showing hidden credentials was not working correctly for the oath code command.
394
+
395
+ * Version 0.3.0 (released 2017-01-23)
396
+ ** OATH functionality added. The tool now exposes the OATH functionality found on the YubiKey 4 and NEO. To list the available commands, run ykman oath -h.
397
+ ** Added support for randomly generated static passwords.
398
+
399
+ * Version 0.2.0 (released 2016-11-23)
400
+ ** Removed all GUI code. This project is now only for the python library and CLI tool. The GUI will be re-released separately in a different project.
401
+ ** Added command to update settings for YubiKey Slots.
402
+
403
+ * Version 0.1.0 (released 2016-07-07)
404
+ ** Initial release for beta testing.
@@ -0,0 +1,238 @@
1
+ Metadata-Version: 2.4
2
+ Name: seedkeeper-manager
3
+ Version: 5.9.2
4
+ Summary: Satochip fork of yubikey-manager: library and CLI for managing your YubiKey/Seedkeeper configuration. Drop-in replacement (same `yubikit`/`ykman` import names).
5
+ License: Copyright (c) 2015 Yubico AB
6
+ All rights reserved.
7
+
8
+ Redistribution and use in source and binary forms, with or
9
+ without modification, are permitted provided that the following
10
+ conditions are met:
11
+
12
+ 1. Redistributions of source code must retain the above copyright
13
+ notice, this list of conditions and the following disclaimer.
14
+ 2. Redistributions in binary form must reproduce the above
15
+ copyright notice, this list of conditions and the following
16
+ disclaimer in the documentation and/or other materials provided
17
+ with the distribution.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
+ COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
+ POSSIBILITY OF SUCH DAMAGE.
31
+ License-File: COPYING
32
+ Keywords: yubikey,yubiotp,piv,fido
33
+ Author: Dain Nilsson
34
+ Author-email: <dain@yubico.com>
35
+ Maintainer: Toporin
36
+ Maintainer-email: <satochip.wallet@gmail.com>
37
+ Requires-Python: >=3.10, <4
38
+ Classifier: Development Status :: 5 - Production/Stable
39
+ Classifier: Intended Audience :: End Users/Desktop
40
+ Classifier: Topic :: Security :: Cryptography
41
+ Classifier: Topic :: Utilities
42
+ Requires-Dist: click (>=8.0,<9)
43
+ Requires-Dist: cryptography (>=3.0,<49)
44
+ Requires-Dist: fido2 (>=2.0,<3)
45
+ Requires-Dist: keyring (>=23.4,<26)
46
+ Requires-Dist: pyscard (>=2.0,<3)
47
+ Requires-Dist: python-pskc (>=1.3,<2)
48
+ Requires-Dist: pywin32 (>=223) ; sys_platform == "win32"
49
+ Project-URL: Homepage, https://github.com/Toporin/seedkeeper-manager
50
+ Description-Content-Type: text/plain
51
+
52
+ == YubiKey Manager CLI (Satochip fork)
53
+
54
+ NOTE: This is a fork of Yubico's https://github.com/Yubico/yubikey-manager[yubikey-manager],
55
+ published to PyPI as `seedkeeper-manager`. It is a *drop-in replacement*: the importable
56
+ package names (`yubikit`, `ykman`) and the `ykman` CLI command are unchanged, so a project can
57
+ switch to this fork by changing only its requirement from `yubikey-manager` to
58
+ `seedkeeper-manager` — no code changes. Note that `seedkeeper-manager` and `yubikey-manager`
59
+ cannot be installed in the same environment at the same time.
60
+
61
+ image:https://github.com/Toporin/seedkeeper-manager/actions/workflows/source-package.yml/badge.svg["Source package build", link="https://github.com/Toporin/seedkeeper-manager/actions/workflows/source-package.yml"]
62
+ image:https://github.com/Toporin/seedkeeper-manager/actions/workflows/windows.yml/badge.svg["Windows build", link="https://github.com/Toporin/seedkeeper-manager/actions/workflows/windows.yml"]
63
+ image:https://github.com/Toporin/seedkeeper-manager/actions/workflows/macOS.yml/badge.svg["MacOS build", link="https://github.com/Toporin/seedkeeper-manager/actions/workflows/macOS.yml"]
64
+ image:https://github.com/Toporin/seedkeeper-manager/actions/workflows/ubuntu.yml/badge.svg["Ubuntu build", link="https://github.com/Toporin/seedkeeper-manager/actions/workflows/ubuntu.yml"]
65
+
66
+ Python 3.10 (or later) library and command line tool for configuring a YubiKey.
67
+ If you're looking for a graphical application, check out https://developers.yubico.com/yubioath-flutter/[Yubico Authenticator].
68
+
69
+ === Usage
70
+ For more usage information and examples, see the https://docs.yubico.com/software/yubikey/tools/ykman/Using_the_ykman_CLI.html[YubiKey Manager CLI User Manual].
71
+
72
+ ....
73
+ Usage: ykman [OPTIONS] COMMAND [ARGS]...
74
+
75
+ Configure your YubiKey via the command line.
76
+
77
+ Examples:
78
+
79
+ List connected YubiKeys, only output serial number:
80
+ $ ykman list --serials
81
+
82
+ Show information about YubiKey with serial number 0123456:
83
+ $ ykman --device 0123456 info
84
+
85
+ Options:
86
+ -d, --device SERIAL specify which YubiKey to interact with by serial number
87
+ -r, --reader NAME specify a YubiKey by smart card reader name (can't be used with --device or list)
88
+ -l, --log-level [ERROR|WARNING|INFO|DEBUG|TRAFFIC]
89
+ enable logging at given verbosity level
90
+ --log-file FILE write log to FILE instead of printing to stderr (requires --log-level)
91
+ --diagnose show diagnostics information useful for troubleshooting
92
+ -v, --version show version information about the app
93
+ --full-help show --help output, including hidden commands
94
+ -h, --help show this message and exit
95
+
96
+ Commands:
97
+ info show general information
98
+ list list connected YubiKeys
99
+ config enable or disable applications
100
+ fido manage the FIDO applications
101
+ oath manage the OATH application
102
+ openpgp manage the OpenPGP application
103
+ otp manage the YubiOTP application
104
+ piv manage the PIV application
105
+ ....
106
+
107
+ The `--help` argument can also be used to get detailed information about specific
108
+ subcommands:
109
+
110
+ ykman oath --help
111
+
112
+ === Versioning/Compatibility
113
+ This project follows https://semver.org/[Semantic Versioning]. Any project
114
+ depending on seedkeeper-manager should take care when specifying version ranges to
115
+ not include any untested major version, as it is likely to have backwards
116
+ incompatible changes. For example, you should NOT depend on ">=5", as it has no
117
+ upper bound. Instead, depend on ">=5, <6", as any release before 6 will be
118
+ compatible.
119
+
120
+ Note that any private variables (names starting with '_') are not part of the
121
+ public API, and may be changed between versions at any time.
122
+
123
+ === Installation
124
+ YubiKey Manager can be installed independently of platform by using pip (or
125
+ equivalent):
126
+
127
+ pip install --user seedkeeper-manager
128
+
129
+ On Linux platforms you will need `pcscd` installed and running to be able to
130
+ communicate with a YubiKey over the SmartCard interface. Additionally, you may
131
+ need to set permissions for your user to access YubiKeys via the HID interfaces.
132
+ More information available link:doc/Device_Permissions.adoc[here].
133
+
134
+ Some of the libraries used by seedkeeper-manager have C-extensions, and may require
135
+ additional dependencies to build, such as http://www.swig.org/[swig] and
136
+ potentially https://pcsclite.apdu.fr/[PCSC lite].
137
+
138
+ === Pre-built packages
139
+ Pre-built packages specific to your platform may be available from Yubico or
140
+ third parties. Please refer to your platforms native package manager for
141
+ detailed instructions on how to install, if available.
142
+
143
+ ==== Windows
144
+ A Windows installer is available to download from the
145
+ https://github.com/Toporin/seedkeeper-manager/releases/latest[Releases page].
146
+
147
+ ==== MacOS
148
+ A MacOS installer is available to download from the
149
+ https://github.com/Toporin/seedkeeper-manager/releases/latest[Releases page].
150
+
151
+ Additionally, packages are available from Homebrew and MacPorts.
152
+
153
+ ===== Input Monitoring access on MacOS
154
+ When running one of the `ykman otp` commands you may run into an error such as:
155
+ `Failed to open device for communication: -536870174`. This indicates a problem
156
+ with the permission to access the OTP (keyboard) USB interface.
157
+
158
+ To access a YubiKey over this interface the application needs the `Input
159
+ Monitoring` permission. If you are not automatically prompted to grant this
160
+ permission, you may have to do so manually. Note that it is the _terminal_ you
161
+ are using that needs the permission, not the ykman executable.
162
+
163
+ To add your terminal application to the `Input Monitoring` permission list, go
164
+ to `System Preferences -> Security & Privacy -> Privacy -> Input Monitoring` to
165
+ resolve this.
166
+
167
+ ===== Uninstallation of the MacOS .pkg
168
+ To uninstall yubikey-manager when installed via the pgk installer, run:
169
+
170
+ $ sudo rm -rf /usr/local/bin/ykman /usr/local/ykman
171
+
172
+ ==== Linux
173
+ Packages are available for several Linux distributions by third party package
174
+ maintainers.
175
+
176
+ Python-specific tools such as pip, pipx, or uv can be used directly to install and
177
+ manage seedkeeper-manager, and is generally the recommended approach.
178
+
179
+ ==== FreeBSD
180
+ Although not being officially supported on this platform, YubiKey Manager can be
181
+ installed on FreeBSD. It's available via its ports tree or as pre-built package.
182
+ Should you opt to install and use YubiKey Manager on this platform, please be aware
183
+ that it's **NOT** maintained by Yubico.
184
+
185
+ To install the binary package, use `pkg install pyXY-yubikey-manager`, with `pyXY`
186
+ specifying the version of Python the package was built for, so in order to install
187
+ YubiKey Manager for Python 3.8, use:
188
+
189
+ # pkg install py38-yubikey-manager
190
+
191
+ For more information about how to install packages or ports on FreeBSD, please refer
192
+ to its official documentation: https://docs.freebsd.org/en/books/handbook/ports[FreeBSD Handbook].
193
+
194
+ In order to use `ykman otp` commands, you need to make sure the _uhid(4)_ driver
195
+ attaches to the USB device:
196
+
197
+ # usbconfig ugenX.Y add_quirk UQ_KBD_IGNORE
198
+ # usbconfig ugenX.Y reset
199
+
200
+ The correct device to operate on _(ugenX.Y)_ can be determined using
201
+ `usbconfig list`.
202
+
203
+ When using FreeBSD 13 or higher, you can switch to the more modern _hidraw(4)_
204
+ driver. This allows YubiKey Manager to access OTP HID in a non-exclusive way,
205
+ so that the key will still function as a USB keyboard:
206
+
207
+ # sysrc kld_list+="hidraw hkbd"
208
+ # cat >>/boot/loader.conf<<EOF
209
+ hw.usb.usbhid.enable="1"
210
+ hw.usb.quirk.0="0x1050 0x0010 0 0xffff UQ_KBD_IGNORE" # YKS_OTP
211
+ hw.usb.quirk.1="0x1050 0x0110 0 0xffff UQ_KBD_IGNORE" # NEO_OTP
212
+ hw.usb.quirk.2="0x1050 0x0111 0 0xffff UQ_KBD_IGNORE" # NEO_OTP_CCID
213
+ hw.usb.quirk.3="0x1050 0x0114 0 0xffff UQ_KBD_IGNORE" # NEO_OTP_FIDO
214
+ hw.usb.quirk.4="0x1050 0x0116 0 0xffff UQ_KBD_IGNORE" # NEO_OTP_FIDO_CCID
215
+ hw.usb.quirk.5="0x1050 0x0401 0 0xffff UQ_KBD_IGNORE" # YK4_OTP
216
+ hw.usb.quirk.6="0x1050 0x0403 0 0xffff UQ_KBD_IGNORE" # YK4_OTP_FIDO
217
+ hw.usb.quirk.7="0x1050 0x0405 0 0xffff UQ_KBD_IGNORE" # YK4_OTP_CCID
218
+ hw.usb.quirk.8="0x1050 0x0407 0 0xffff UQ_KBD_IGNORE" # YK4_OTP_FIDO_CCID
219
+ hw.usb.quirk.9="0x1050 0x0410 0 0xffff UQ_KBD_IGNORE" # YKP_OTP_FIDO
220
+ EOF
221
+ # reboot
222
+
223
+ ==== From source (for development)
224
+ To install from source, see the link:doc/Development.adoc[development]
225
+ instructions.
226
+
227
+ === Shell completion
228
+
229
+ Experimental shell completion for the command line tool is available, provided
230
+ by the underlying CLI library (`click`) but it is not enabled by default. To
231
+ enable it, run this command once (for Bash):
232
+
233
+ $ source <(_YKMAN_COMPLETE=bash_source ykman | sudo tee /etc/bash_completion.d/ykman)
234
+
235
+ More information on shell completion (including instructions for other shells) is
236
+ available at:
237
+ https://click.palletsprojects.com/en/stable/shell-completion/
238
+