rust-bitcoin-unsafe-fast/src/util/key.rs

68 lines
1.6 KiB
Rust
Raw Normal View History

2018-03-14 03:53:03 +00:00
// Rust Bitcoin Library
// Written in 2014 by
// Andrew Poelstra <apoelstra@wpsoftware.net>
// 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 <http://creativecommons.org/publicdomain/zero/1.0/>.
//
//! Bitcoin Keys
//!
//! Keys used in Bitcoin that can be roundtrip (de)serialized.
2018-03-14 03:53:03 +00:00
//!
pub use util::ecdsa::{PrivateKey, PublicKey};
2019-03-19 14:49:27 +00:00
use std::fmt;
use std::error;
use secp256k1;
2018-03-14 03:53:03 +00:00
use util::base58;
2019-09-09 09:53:50 +00:00
/// A key-related error.
2021-01-14 15:03:53 +00:00
#[derive(Debug, PartialEq, Eq, Clone)]
2019-09-09 09:53:50 +00:00
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 {
2021-01-14 15:03:53 +00:00
Error::Base58(ref e) => write!(f, "Key base58 error: {}", e),
Error::Secp256k1(ref e) => write!(f, "Key secp256k1 error: {}", e),
2019-09-09 09:53:50 +00:00
}
}
}
impl error::Error for Error {
2020-09-14 14:55:42 +00:00
fn cause(&self) -> Option<&dyn error::Error> {
2019-09-09 09:53:50 +00:00
match *self {
Error::Base58(ref e) => Some(e),
Error::Secp256k1(ref e) => Some(e),
}
}
}
#[doc(hidden)]
impl From<base58::Error> for Error {
fn from(e: base58::Error) -> Error {
Error::Base58(e)
}
}
#[doc(hidden)]
impl From<secp256k1::Error> for Error {
fn from(e: secp256k1::Error) -> Error {
Error::Secp256k1(e)
}
}