// Rust Bitcoin Library // Written in 2014 by // Andrew Poelstra // To the extent possible under law, the author(s) have dedicated all // copyright and related and neighboring rights to this software to // the public domain worldwide. This software is distributed without // any warranty. // // You should have received a copy of the CC0 Public Domain Dedication // along with this software. // If not, see . // //! Bitcoin Keys //! //! Keys used in Bitcoin that can be roundtrip (de)serialized. //! pub use util::ecdsa::{PrivateKey, PublicKey}; use std::fmt; use std::error; use secp256k1; use util::base58; /// A key-related error. #[derive(Debug, PartialEq, Eq, Clone)] pub enum Error { /// Base58 encoding error Base58(base58::Error), /// secp256k1-related error Secp256k1(secp256k1::Error), } impl fmt::Display for Error { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self { Error::Base58(ref e) => write!(f, "Key base58 error: {}", e), Error::Secp256k1(ref e) => write!(f, "Key secp256k1 error: {}", e), } } } impl error::Error for Error { fn cause(&self) -> Option<&dyn error::Error> { match *self { Error::Base58(ref e) => Some(e), Error::Secp256k1(ref e) => Some(e), } } } #[doc(hidden)] impl From for Error { fn from(e: base58::Error) -> Error { Error::Base58(e) } } #[doc(hidden)] impl From for Error { fn from(e: secp256k1::Error) -> Error { Error::Secp256k1(e) } }