uniauth 1.0.3

Easy-to-use abstraction over authentication
Documentation
# Uniauth

Easy-to-use abstraction over authentication.

# How it works

1. Application tells the server of a requested action (for example, to log in) and asks for a nonce.
2. Server issues a nonce which will never be used again.
3. Application tells the user's local uniauth daemon to sign a challenge using the nonce, service name and username.
4. User authenticates/authorizes the action.
5. Daemon signs the challenge and response is sent from the application to the server.
6. Server verifies the challenge against the user's key(s).

# Server
Servers only store public keys, if/when the server is compromised the attacker cannot do anything with them.

# Daemon
Uniauth daemons can do anything, from being completely autonomous to using a hardware authenticator.

# Signature Algorithms

The application-daemon protocol supports any algorithm with a signature under 256 bytes long, but currently only **ed25519** is implemented.

It is advised to serialize keys using 16-bit lengths for potential compatibility with large keys like RSA.