Show the crate…
1 unstable release
0.1.0 | Jan 9, 2020 |
---|
#49 in #decentralized-identity
6KB
79 lines
oin
Every user has a ed25519 keypair in oin, verifying signatures instead of username/password.
Authorization Schema
use ed25519_dalek::{Keypair, PublicKey, SecretKey, PUBLIC_KEY_LENGTH};
use oin::Identity;
fn main() {
// sk is for client
// id if for server
let (mut id, sk) = Identity::new();
let client = Keypair {
secret: SecretKey::from_bytes(&sk).unwrap(),
public: PublicKey::from_bytes(&id.pkey).unwrap(),
};
// 1. client send auth request
// 2. server receive the request and response a token
let token = Identity::token();
let sig = client.sign(&token).to_bytes();
// 3. client sign the token and send it back to the server
let dev = [0; PUBLIC_KEY_LENGTH];
assert!(id.auth(dev, token, sig).is_ok());
// 4. login successfully.
// more checks
let tk2 = Identity::token();
assert!(id.state(dev, token).is_ok());
assert!(id.update(dev, tk2).is_ok());
assert!(id.state(dev, tk2).is_ok());
}
TODO
- ser && de
Dependencies
~4MB
~75K SLoC