1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
// Copyright 2019 Stichting Organism // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // Schnorr via ristretto // // Modified From the hard work off: // Authors: // - Isis Agora Lovecruft <isis@patternsinthevoid.net> // - Jeff Burdges <jeff@web3.foundation> // - The Tari Project Authors // - Cathie Yun <cathieyun@gmail.com> // - Tess Rinearson <tess.rinearson@gmail.com> // - Oleg Andreev <oleganza@gmail.com> //Modeled from //https://github.com/dalek-cryptography/ed25519-dalek/blob/master/src/ed25519.rs //Useful links: //https://blockstream.com/2018/01/23/musig-key-aggregation-schnorr-signatures/ //https://github.com/sipa/bips/blob/bip-schnorr/bip-schnorr.mediawiki //https://medium.com/cryptoadvance/how-schnorr-signatures-may-improve-bitcoin-91655bcb4744 mod errors; pub use errors::SchnorrError; pub mod tools; pub use crate::tools::{ SigningContext }; pub mod keys; pub mod signature; pub mod ecdh; // Export everything public in schnorr. pub use crate::signature::{ Signature, SIGNATURE_LENGTH, verify_batch, sign_multi, verify_multi }; pub use crate::keys::*; pub use crate::ecdh::{ diffie_hellman, SharedSecret }; // //taken from futures lib:) // pub mod prelude { // //! A "prelude" for crates using the `schnorr` crate. // //! // //! This prelude is similar to the standard library's prelude in that you'll // //! almost always want to import its entire contents, but unlike the // //! standard library's prelude you'll have to do so manually: // //! // //! ``` // //! use schnorr::prelude::*; // //! ``` // //! // //! The prelude may grow over time as additional items see ubiquitous use. // // Export everything public in schnorr. // pub use crate::signature::{ // Signature, // SIGNATURE_LENGTH, // verify_batch, // sign_multi, // verify_multi // }; // pub use crate::errors::SchnorrError; // pub use crate::keys::*; // pub use crate::tools::{ SigningContext }; // pub use crate::ecdh::{ // diffie_hellman, // SharedSecret // }; // }