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
impl Provider
Sourcepub async fn from_keypair_path(keypair_path: PathBuf) -> Result<Provider, Error>
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.
Sourcepub fn from_keypair_path_sync(keypair_path: PathBuf) -> Result<Provider, Error>
pub fn from_keypair_path_sync(keypair_path: PathBuf) -> Result<Provider, Error>
Sync version of Provider::from_keypair_path
.
Sourcepub fn keypair_modulus(&self) -> Result<Base64, Error>
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.
Sourcepub fn wallet_address(&self) -> Result<Base64, Error>
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);
pub fn sign(&self, message: &[u8]) -> Result<Vec<u8>, Error>
Sourcepub fn verify(&self, signature: &[u8], message: &[u8]) -> Result<(), Error>
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())?);
pub fn hash_sha256(&self, message: &[u8]) -> Result<[u8; 32], Error>
Sourcepub fn hash_all_sha256(&self, messages: Vec<&[u8]>) -> Result<[u8; 32], Error>
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.
Sourcepub fn deep_hash(&self, deep_hash_item: DeepHashItem) -> Result<[u8; 48], Error>
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.
pub fn fill_rand(&self, dest: &mut [u8]) -> Result<(), Error>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Provider
impl RefUnwindSafe for Provider
impl Send for Provider
impl Sync for Provider
impl Unpin for Provider
impl UnwindSafe for Provider
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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