Struct Provider

Source
pub struct Provider {
    pub keypair: RsaKeyPair,
    pub sr: SystemRandom,
}
Expand description

Struct for for crypto methods.

Fields§

§keypair: RsaKeyPair§sr: SystemRandom

Implementations§

Source§

impl Provider

Source

pub async fn from_keypair_path(keypair_path: PathBuf) -> Result<Provider, Error>

Reads a JsonWebKey from a PathBuf and stores it as a signature::RsaKeyPair in the keypair property of Provider for future use in signing and funding transactions.

Source

pub fn from_keypair_path_sync(keypair_path: PathBuf) -> Result<Provider, Error>

Sync version of Provider::from_keypair_path.

Source

pub fn keypair_modulus(&self) -> Result<Base64, Error>

Returns the full modulus of the stored keypair. Encoded as a Base64Url String, represents the associated network address. Also used in the calculation of transaction signatures.

Source

pub fn wallet_address(&self) -> Result<Base64, Error>

Calculates the wallet address of the provided keypair according to addressing in documentation.

 let arweave = Arweave::from_keypair_path(
     PathBuf::from("tests/fixtures/arweave-key-7eV1qae4qVNqsNChg3Scdi-DpOLJPCogct4ixoq1WNg.json"),
     Url::from_str("http://url.com").unwrap()
 ).await?;
 let calc = arweave.crypto.wallet_address()?;
 let actual = String::from("7eV1qae4qVNqsNChg3Scdi-DpOLJPCogct4ixoq1WNg");
 assert_eq!(&calc.to_string(), &actual);
Source

pub fn sign(&self, message: &[u8]) -> Result<Vec<u8>, Error>

Source

pub fn verify(&self, signature: &[u8], message: &[u8]) -> Result<(), Error>

Verifies that a message was signed by the public key of the Provider.key keypair.

 let crypto = Provider::from_keypair_path(PathBuf::from("tests/fixtures/arweave-key-7eV1qae4qVNqsNChg3Scdi-DpOLJPCogct4ixoq1WNg.json")).await?;
 let message = String::from("hello, world");
 let rng = rand::SystemRandom::new();
 let signature = crypto.sign(&message.as_bytes())?;

 assert_eq!((), crypto.verify(&signature.as_ref(), &message.as_bytes())?);
Source

pub fn hash_sha256(&self, message: &[u8]) -> Result<[u8; 32], Error>

Source

pub fn hash_all_sha256(&self, messages: Vec<&[u8]>) -> Result<[u8; 32], Error>

Returns a SHA256 hash of the the concatenated SHA256 hashes of a vector of messages.

Source

pub fn deep_hash(&self, deep_hash_item: DeepHashItem) -> Result<[u8; 48], Error>

Calculates data root of transaction in accordance with implementation in arweave-js. DeepHashItem is a recursive Enum that allows the function to be applied to nested Vec<u8> of arbitrary depth.

Source

pub fn fill_rand(&self, dest: &mut [u8]) -> Result<(), Error>

Trait Implementations§

Source§

impl Default for Provider

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> AbiExample for T

Source§

default fn example() -> T

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,