Giter Club home page Giter Club logo

aead-io's Introduction

aead-io

Provides a wrapper around a Write/Read object and a StreamPrimitive to provide an easy interface for doing correct encryption.

let key = b"my very super super secret key!!".into();
let plaintext = b"hello world!";

let ciphertext = {
    let mut ciphertext = Vec::default();
    let mut writer = EncryptBE32BufWriter::<ChaCha20Poly1305, _, _>::new(
        key,
        &Default::default(), // please use a better nonce ;)
        Vec::with_capacity(128),
        &mut ciphertext,
    )
    .unwrap();
    writer.write_all(plaintext)?;
    writer.flush()?;
    ciphertext
};

let decrypted = {
    let mut reader = DecryptBE32BufReader::<ChaCha20Poly1305, _, _>::new(
        key,
        Vec::with_capacity(256),
        ciphertext.as_slice(),
    )
    .unwrap();
    let mut out = Vec::new();
    let _ = reader.read_to_end(&mut out).unwrap();
    out
};

assert_eq!(decrypted, plaintext);
#

no_std

This package is compatible with no_std environments. Just disable the default features, and implement the Buffer, CappedBuffer, ResizeBuffer, Write and Read accordingly. There should be some default implementations for Vec<u8> and byte slices

License: MIT OR Apache-2.0

aead-io's People

Contributors

jpopesculian avatar kvinwang avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.