<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nitrokey-rs/src, branch master</title>
<subtitle>Rust interface to libnitrokey</subtitle>
<id>https://git.ireas.org/nitrokey-rs/atom?h=master</id>
<link rel='self' href='https://git.ireas.org/nitrokey-rs/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.ireas.org/nitrokey-rs/'/>
<updated>2020-08-30T16:52:15Z</updated>
<entry>
<title>Use map_err(|_| x) instead of or_else(|_| Err(x))</title>
<updated>2020-08-30T16:52:15Z</updated>
<author>
<name>Robin Krahl</name>
<email>robin.krahl@ireas.org</email>
</author>
<published>2020-08-30T16:52:15Z</published>
<link rel='alternate' type='text/html' href='https://git.ireas.org/nitrokey-rs/commit/?id=b2607cbd3f239be9d09204921db278424cc7a6be'/>
<id>urn:sha1:b2607cbd3f239be9d09204921db278424cc7a6be</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove custom source implementation for Error</title>
<updated>2020-08-30T16:43:31Z</updated>
<author>
<name>Robin Krahl</name>
<email>robin.krahl@ireas.org</email>
</author>
<published>2020-08-30T16:43:31Z</published>
<link rel='alternate' type='text/html' href='https://git.ireas.org/nitrokey-rs/commit/?id=e9a89be939acf22cf17e3d6bc505a968a98d3dee'/>
<id>urn:sha1:e9a89be939acf22cf17e3d6bc505a968a98d3dee</id>
<content type='text'>
This patch removes the custom implementation of the source method of the
std::error::Error trait for the error::Error type.  This means that the
default implementation is used that always returns None.  The reason for
this change is that we already print the error message of the source
error in the Display implementation.  This leads to a duplicated error
message if both Display and source are checked, for example with
anyhow’s error formatting.

See this thread for more information:
	https://lists.sr.ht/~ireas/nitrokey-rs-dev/%3C6e0b4dc8-9059-a113-e98e-b49e52818c75%40posteo.net%3E
</content>
</entry>
<entry>
<title>Ensure Error trait implementations</title>
<updated>2020-07-08T21:03:02Z</updated>
<author>
<name>Robin Krahl</name>
<email>robin.krahl@ireas.org</email>
</author>
<published>2020-07-08T20:58:41Z</published>
<link rel='alternate' type='text/html' href='https://git.ireas.org/nitrokey-rs/commit/?id=f1e83eb81879412e1de9898238ba58289bb6cb24'/>
<id>urn:sha1:f1e83eb81879412e1de9898238ba58289bb6cb24</id>
<content type='text'>
The anyhow crate requires that error types are error::Error, Send, Sync
and 'static.  This patch implements a simple static assertion that our
Error type implements these traits.
</content>
</entry>
<entry>
<title>Remove Error::RandError variant</title>
<updated>2020-07-08T21:02:56Z</updated>
<author>
<name>Robin Krahl</name>
<email>robin.krahl@ireas.org</email>
</author>
<published>2020-07-08T20:22:10Z</published>
<link rel='alternate' type='text/html' href='https://git.ireas.org/nitrokey-rs/commit/?id=3f402dc13530ce4de167bae843200cfbd72ed69b'/>
<id>urn:sha1:3f402dc13530ce4de167bae843200cfbd72ed69b</id>
<content type='text'>
Since we update rand_os to version 0.2 in commit
6c138eaa850c745b97b7e48a201db0cbaad8e1e0, the random number generation
can no longer fail.  Therefore the Error::RandError variant is no longer
needed.

As we did not want to break the public API, we still kept the RandError
variant.  This patch removes the RandError variant for good.
</content>
</entry>
<entry>
<title>Remove sync::PoisonError from Error::PoisonError</title>
<updated>2020-07-08T21:02:49Z</updated>
<author>
<name>Robin Krahl</name>
<email>robin.krahl@ireas.org</email>
</author>
<published>2020-07-08T10:08:26Z</published>
<link rel='alternate' type='text/html' href='https://git.ireas.org/nitrokey-rs/commit/?id=98232c7bc262dd3902b8f3e299196ab9c83fb355'/>
<id>urn:sha1:98232c7bc262dd3902b8f3e299196ab9c83fb355</id>
<content type='text'>
Previously, the Error::PoisonError contained the sync::PoisonError that
caused the error.  This is problematic as sync::PoisonError does not
implement Send, making it impossible to use the Error enum with the
anyhow crate.  At the same time, storing the sync::PoisonError is not
very useful.  If a user wants to access the poisoned lock, they can call
the force_take function.

Therefore we remove the sync::PoisonError value from the Error::
PoisonError variant.  This also allows us to simplify the
From&lt;sync::PoisonError&lt;…&gt;&gt; and From&lt;sync::TryLockError&lt;…&gt;&gt;
implementations as we no longer need to know the type of the mutex that
caused the error.

For more information, see this thread:
	https://lists.sr.ht/~ireas/nitrokey-rs-dev/%3C68ed0f3f-d98f-63bc-04d2-81b6d6cde560%40posteo.net%3E
</content>
</entry>
<entry>
<title>Use find(…) instead of skip_while(…).next()</title>
<updated>2020-07-08T21:02:43Z</updated>
<author>
<name>Robin Krahl</name>
<email>robin.krahl@ireas.org</email>
</author>
<published>2020-07-08T10:25:31Z</published>
<link rel='alternate' type='text/html' href='https://git.ireas.org/nitrokey-rs/commit/?id=cf460cbb5e616d12f5e6b1f64acddf3ec0e7b087'/>
<id>urn:sha1:cf460cbb5e616d12f5e6b1f64acddf3ec0e7b087</id>
<content type='text'>
This patch replaces calls to skip_while(…).next() for an iter::Iterator
with a call to find(…), as suggested by clippy.
</content>
</entry>
<entry>
<title>Remove unused imports</title>
<updated>2020-07-08T21:02:34Z</updated>
<author>
<name>Robin Krahl</name>
<email>robin.krahl@ireas.org</email>
</author>
<published>2020-07-08T10:18:41Z</published>
<link rel='alternate' type='text/html' href='https://git.ireas.org/nitrokey-rs/commit/?id=9f80512a11926c5ec3f869ad5e220b3b350eec9a'/>
<id>urn:sha1:9f80512a11926c5ec3f869ad5e220b3b350eec9a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refactor string handling in util</title>
<updated>2020-02-03T10:31:21Z</updated>
<author>
<name>Robin Krahl</name>
<email>robin.krahl@ireas.org</email>
</author>
<published>2020-01-28T16:56:53Z</published>
<link rel='alternate' type='text/html' href='https://git.ireas.org/nitrokey-rs/commit/?id=d905aafe208536203dd319e5dc48bd250180a8ef'/>
<id>urn:sha1:d905aafe208536203dd319e5dc48bd250180a8ef</id>
<content type='text'>
The util module provides helper methods to deal with the C strings
returned by libnitrokey.  The current implementation has to problems:
- It causes unnecessary allocations if we only want to look at the
  string, for example in get_serial_number.
- If the conversion from a CStr to a String fails, the string pointer
  is not freed.

Therefore this patch introduces the run_with_str function that executes
a function with the string returned by libnitrokey and then makes sure
that the pointer is freed correctly.
</content>
</entry>
<entry>
<title>Represent serial numbers using SerialNumber struct</title>
<updated>2020-02-03T10:30:57Z</updated>
<author>
<name>Robin Krahl</name>
<email>robin.krahl@ireas.org</email>
</author>
<published>2020-01-28T16:38:47Z</published>
<link rel='alternate' type='text/html' href='https://git.ireas.org/nitrokey-rs/commit/?id=4fb865af37093d9b0ee039d8ae48fb2a820f3760'/>
<id>urn:sha1:4fb865af37093d9b0ee039d8ae48fb2a820f3760</id>
<content type='text'>
In a previous commit, we changed the serial number representation from a
string to an integer.  This made it easier to compare serial numbers,
but also introduced new problems:
- Serial numbers should be formatted consistently, for example as
  "{:#010x}".  It is hard to ensure this for an integer value.
- The format of the serial number may be subject to change.  Users
  should not rely too much on the u32 representation.

Therefore we introduce a new SerialNumber struct that represents a
serial number.  Currently it only stores a u32 value.  The following
traits and functions can be used to access its value:
- FromStr for string parsing
- ToString/Display for string formatting
- as_u32 to access the underlying integer value
</content>
</entry>
<entry>
<title>Use NK_get_status to implement Device::get_config</title>
<updated>2020-02-03T09:22:13Z</updated>
<author>
<name>Robin Krahl</name>
<email>robin.krahl@ireas.org</email>
</author>
<published>2020-01-29T12:52:19Z</published>
<link rel='alternate' type='text/html' href='https://git.ireas.org/nitrokey-rs/commit/?id=c1f48ce6c614586042db8891d2eebf19d2212ce4'/>
<id>urn:sha1:c1f48ce6c614586042db8891d2eebf19d2212ce4</id>
<content type='text'>
libnitrokey’s NK_read_config function returns a pointer to an array that
has been allocated using new[].  We would have to delete this pointer
using delete[], but we only have access to free.  Therefore this patch
modifies the Device::get_config function to call NK_get_status instead
of NK_read_config.

This also makes the code more safe as we get the data as a struct
instead of an array.  It does not add much overhead as NK_read_config
also executes the GET_STATUS command on the Nitrokey device.
</content>
</entry>
</feed>
