Giter Club home page Giter Club logo

alkali's Introduction

alkali

crates.io docs.rs CI status

Safe, idiomatic Rust bindings to the Sodium cryptographic library.

Sodium is a fast, modern cryptographic library written in C. This crate intends to provide a higher-level API for making use of the constructs Sodium provides. These constructs include simple-to-use symmetric and asymmetric authenticated encryption, signatures, hashing, password derivation, and key exchange: In short, the majority of operations required for many modern cryptographic protocols.

The intention for this library is to be a replacement for sodiumoxide, which is now deprecated. Lots of design decisions here were inspired by this library, so thanks to all of its contributors!

Usage/Documentation

Comprehensive documentation for this library is available on docs.rs. The intention is for the entire library to be well documented, with illustrative examples and information on security concerns.

Security/Vulnerability Disclosures

If you find a vulnerability in alkali, please immediately contact [email protected] with details.

My age public key is:

age1gglesedq4m2z9kc7urjhq3zlpc6qewcwpcna7s0lwh8k2c4e6fxqf3kdvq

License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

alkali's People

Contributors

tom25519 avatar iazel avatar

Stargazers

Brend Smits avatar KoolAyydMAN avatar Andrew Peterson avatar Ruurd Adema avatar  avatar Matthew McDade avatar prongbang avatar deVOID avatar Amar Sood avatar Matt Mahdieh avatar Matthew avatar  avatar Frank Denis avatar

Watchers

 avatar

Forkers

youainti iazel

alkali's Issues

Add support for serde

I think it would be rather beneficial if this library had support for Serde, making it easy to export structs containing some of these primatives.

For example, when trying to serialize a struct with

#[derive(Debug, Deserialize, Serialize)]
struct Test {
    a : Signature
}

I get the error

error[E0277]: the trait bound `[u8;64]: Serialize` is not satisfied
#[derive(Debug, Deserialize, Serialize)]
                             ^^^^^^^^^ the trait `Serialize` is not implemented for `[u8; 64]`
struct Test {
    a : Signature
    - required by a bound introduced by this call
}

By making the underlying types serialized in the crate, it would be much simpler to export some of the data as needed.

Can cipher_stream structs be made compatible with Send?

I'd like to be able to pass an EncryptionStream to a thread that pumps bytes from a source into an encrypted sink, and similar for DecryptionStream. But these structs are !Send, so I can't. Can they be marked Send using unsafe, or reconfigured in some way to allow it using safe Rust?

Resumable encrypted stream?

Hello,

I'm working on a resumable file upload for my project, but I want to always encrypt data whenever I write to disk. This sounds like the perfect job for encrypted streams, but I'm not sure on how to handle the "resumable" part.

What I wish to do, would be to save the final stream state on close, then once I need to upload more data, I could read this record, repopulate stream state and keep going from there. As far as I can see, this isn't possible because stream state is private and not accessible.

What would you suggest for such a case? Would it be worth to expose such state?

Thanks once again for your time ๐Ÿ™

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.