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
// Copyright 2018 The Exonum Team // // 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. //! Cryptographic primitives used in the service. //! //! # Commitments and range proofs //! //! See [`Commitment`] and [`SimpleRangeProof`] docs for details on cryptographic commitments. //! Commitments are used in the service instead of plaintext account balances and transfer amounts. //! Proofs are present in [`Transfer`] transactions, allowing to assert that the transferred amount //! is positive (i.e., the sender cannot create tokens for herself out of thin air //! by "transferring" negative amount to somebody), and that the sender has enough tokens to //! perform the transfer. //! //! # Public-key encryption //! //! [`enc`](::crypto::enc) module re-exports necessary primitives to [encrypt data](::EncryptedData) //! within `Transfer`s. //! //! [`Commitment`]: ::crypto::Commitment //! [`SimpleRangeProof`]: ::crypto::SimpleRangeProof //! [`Transfer`]: ::transactions::Transfer pub mod enc; mod proofs; mod serialization; pub use self::proofs::{Commitment, Opening, SimpleRangeProof};