aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md65
1 files changed, 47 insertions, 18 deletions
diff --git a/README.md b/README.md
index a29ac6f..fa408c2 100644
--- a/README.md
+++ b/README.md
@@ -1,38 +1,54 @@
<!---
Copyright (C) 2019 Robin Krahl <robin.krahl@ireas.org>
-SPDX-License-Identifier: MIT
+SPDX-License-Identifier: CC0-1.0
-->
# nitrokey-rs
A libnitrokey wrapper for Rust providing access to Nitrokey devices.
-[Documentation][]
+## Usage
+
+For usage information, have a look at the [API reference][API reference] and at
+the [examples][] in the `examples` directory. You can also have a look at the
+[`nitrocli`][] crate, a command-line interface for Nitrokey devices that uses
+this crate.
## Compatibility
-The required [`libnitrokey`][] version is built from source. The host system
+This crate provides access to all features of the [`libnitrokey`][] C API for
+both the Nitrokey Pro and the Nitrokey Storage: general configuration, one-time
+password generation, the password safe and the secure storage on the Nitrokey
+Storage.
+
+The required `libnitrokey` version is built from source. The host system
must provide `libhidapi-libusb0` (Linux) or `libhidapi` (non-Linux) in the
default library search path. Depending on your system, you might also have to
install the [Nitrokey udev rules][].
-Currently, this crate provides access to the common features of the Nitrokey
-Pro and the Nitrokey Storage: general configuration, OTP generation and the
-password safe. Basic support for the secure storage on the Nitrokey Storage is
-available but still under development.
+If you want to use a precompiled version of `libnitrokey`, you can set the
+`USE_SYSTEM_LIBNITROKEY` environment variable during build. In this case,
+`libnitrokey` must be available in the library search path.
### Unsupported Functions
The following functions provided by `libnitrokey` are deliberately not
supported by `nitrokey-rs`:
+- `NK_connect_with_ID`, `NK_list_devices_by_cpuID`. These functions can be
+ replaced by calls to `NK_connect_with_path` and `NK_list_devices`, which
+ also have a cleaner API.
+- `NK_enable_firmware_update_pro`, `NK_change_firmware_password_pro`. These
+ functions execute commands that are not yet supported by the Nitrokey Pro
+ firmware.
- `NK_get_device_model`. We know which model we connected to, so we can
provide this information without calling `libnitrokey`.
-- `NK_is_AES_supported`. This method is no longer needed for Nitrokey devices
- with a recent firmware version.
+- `NK_is_AES_supported`. This function is no longer needed for Nitrokey
+ devices with a recent firmware version.
+- `NK_send_startup`. Currently, this function is redundant to `NK_get_time`.
- `NK_set_unencrypted_volume_rorw_pin_type_user`,
`NK_set_unencrypted_read_only`, `NK_set_unencrypted_read_write`. These
- methods are only relevant for older firmware versions (pre-v0.51). As the
+ functions are only relevant for older firmware versions (pre-v0.51). As the
Nitrokey Storage firmware can be updated easily, we do not support these
outdated versions.
- `NK_totp_get_time`, `NK_status`. These functions are deprecated.
@@ -55,14 +71,22 @@ Note that the tests assume that the device’s passwords are the factory default
(admin PIN `12345678`, user PIN `123456`, update password `12345678`) and that
an AES key has been built. Some tests will overwrite the data stored on the
Nitrokey device or perform a factory reset. Never execute the tests if you
-unless yout want to destroy all data on all connected Nitrokey devices!
+don’t want to destroy all data on any connected Nitrokey device!
+
+The test suite contains some test that take very long to execute, for example
+filling the SD card of a Nitrokey Storage with random data. These tests are
+ignored per default. Use `cargo test -- --ignored` to execute the tests.
## Acknowledgments
-Thanks to Nitrokey UG for providing a Nitrokey Storage to support the
+Thanks to Nitrokey UG for providing two Nitrokey devices to support the
development of this crate. Thanks to Daniel Mueller for contributions to
`nitrokey-rs` and for the `nitrokey-test` crate.
+## Minimum Supported Rust Version
+
+This crate supports Rust 1.40.0 or later.
+
## Contact
For bug reports, patches, feature requests or other messages, please send a
@@ -70,16 +94,21 @@ mail to [nitrokey-rs-dev@ireas.org][].
## License
-This project is licensed under the [MIT License][]. `libnitrokey` is licensed
-under the [LGPL-3.0][].
+This project is licensed under the [MIT][] license. The documentation and
+configuration files contained in this repository are licensed under the
+[Creative Commons Zero][CC0] license. You can find a copy of the license texts
+in the `LICENSES` directory. `libnitrokey` is licensed under the [LGPL-3.0][].
-`nitrokey-rs` complies with [version 2.0 of the REUSE practices][reuse].
+`nitrokey-rs` complies with [version 3.0 of the REUSE specification][reuse].
-[Documentation]: https://docs.rs/nitrokey
+[API reference]: https://docs.rs/nitrokey
+[examples]: https://git.ireas.org/nitrokey-rs/tree/examples
+[`nitrocli`]: https://github.com/d-e-s-o/nitrocli
[Nitrokey udev rules]: https://www.nitrokey.com/documentation/frequently-asked-questions-faq#openpgp-card-not-available
[`libnitrokey`]: https://github.com/nitrokey/libnitrokey
[`nitrokey-test`]: https://github.com/d-e-s-o/nitrokey-test
[nitrokey-rs-dev@ireas.org]: mailto:nitrokey-rs-dev@ireas.org
-[MIT license]: https://opensource.org/licenses/MIT
+[MIT]: https://opensource.org/licenses/MIT
+[CC0]: https://creativecommons.org/publicdomain/zero/1.0/
[LGPL-3.0]: https://opensource.org/licenses/lgpl-3.0.html
-[reuse]: https://reuse.software/practices/2.0/
+[reuse]: https://reuse.software/practices/3.0/