Crate nkeys[][src]

nkeys

The nkeys is a Rust port of the official NATS Go nkeys implementation.

Nkeys provides library functions to create ed25519 keys using the special prefix encoding system used by NATS 2.0+ security.

Examples

use nkeys::KeyPair;

// Create a user key pair
let user = KeyPair::new_user();

// Sign some data with the user's full key pair
let msg = "this is super secret".as_bytes();
let sig = user.sign(&msg).unwrap();
let res = user.verify(msg, sig.as_slice());
assert!(res.is_ok());

// Access the encoded seed (the information that needs to be kept safe/secret)
let seed = user.seed().unwrap();
// Access the public key, which can be safely shared
let pk = user.public_key();

// Create a full User who can sign and verify from a private seed.
let user = KeyPair::from_seed(&seed);

// Create a user that can only verify and not sign
let user = KeyPair::from_public_key(&pk).unwrap();
assert!(user.seed().is_err());

Notes

The following is a list of the valid prefixes / key pair types available. Note that there are more key pair types available in this crate than there are in the original Go implementation for NATS.

  • N - Server
  • C - Cluster
  • O - Operator
  • A - Account
  • U - User
  • M - Module
  • V - Service / Service Provider
  • P - Private Key

Modules

error

Error wrappers and boilerplate

Macros

err

A handy macro borrowed from the signatory crate that lets library-internal code generate more readable exception handling flows

Structs

KeyPair

The main interface used for reading and writing nkey-encoded key pairs, including seeds and public keys. Instances of this type cannot be cloned.

Enums

KeyPairType

The authoritative list of valid key pair types that are used for cryptographically secure identities