Consolidate crypto functionality in ethcore-crypto. (#8432)
* Consolidate crypto functionality in `ethcore-crypto`.
- Move `ecdh`/`ecies` modules to `ethkey`.
- Refactor `ethcore-crypto` to use file per module.
- Replace `subtle` with `ethcore_crypto::is_equal`.
- Add `aes_gcm` module to `ethcore-crypto`.
* Rename `aes::{encrypt,decrypt,decrypt_cbc}` ...
... to `aes::{encrypt_128_ctr,decrypt_128_ctr,decrypt_128_cbc}`.
This commit is contained in:
committed by
Marek Kotewicz
parent
a4c7843a07
commit
e30839e85f
83
ethcore/crypto/src/error.rs
Normal file
83
ethcore/crypto/src/error.rs
Normal file
@@ -0,0 +1,83 @@
|
||||
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
|
||||
// This file is part of Parity.
|
||||
|
||||
// Parity is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// Parity is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
use rcrypto;
|
||||
use ring;
|
||||
|
||||
quick_error! {
|
||||
#[derive(Debug)]
|
||||
pub enum Error {
|
||||
Scrypt(e: ScryptError) {
|
||||
cause(e)
|
||||
from()
|
||||
}
|
||||
Symm(e: SymmError) {
|
||||
cause(e)
|
||||
from()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
quick_error! {
|
||||
#[derive(Debug)]
|
||||
pub enum ScryptError {
|
||||
// log(N) < r / 16
|
||||
InvalidN {
|
||||
display("Invalid N argument of the scrypt encryption")
|
||||
}
|
||||
// p <= (2^31-1 * 32)/(128 * r)
|
||||
InvalidP {
|
||||
display("Invalid p argument of the scrypt encryption")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
quick_error! {
|
||||
#[derive(Debug)]
|
||||
pub enum SymmError wraps PrivSymmErr {
|
||||
RustCrypto(e: rcrypto::symmetriccipher::SymmetricCipherError) {
|
||||
display("symmetric crypto error")
|
||||
from()
|
||||
}
|
||||
Ring(e: ring::error::Unspecified) {
|
||||
display("symmetric crypto error")
|
||||
cause(e)
|
||||
from()
|
||||
}
|
||||
Offset(x: usize) {
|
||||
display("offset {} greater than slice length", x)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl SymmError {
|
||||
pub(crate) fn offset_error(x: usize) -> SymmError {
|
||||
SymmError(PrivSymmErr::Offset(x))
|
||||
}
|
||||
}
|
||||
|
||||
impl From<ring::error::Unspecified> for SymmError {
|
||||
fn from(e: ring::error::Unspecified) -> SymmError {
|
||||
SymmError(PrivSymmErr::Ring(e))
|
||||
}
|
||||
}
|
||||
|
||||
impl From<rcrypto::symmetriccipher::SymmetricCipherError> for SymmError {
|
||||
fn from(e: rcrypto::symmetriccipher::SymmetricCipherError) -> SymmError {
|
||||
SymmError(PrivSymmErr::RustCrypto(e))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user