pub struct Provider {
pub keypair: RsaKeyPair,
pub sr: SystemRandom,
}
Expand description
Struct for for crypto methods.
Fields
keypair: RsaKeyPair
sr: SystemRandom
Implementations
sourceimpl 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 RefUnwindSafe for Provider
impl Send for Provider
impl Sync for Provider
impl Unpin for Provider
impl UnwindSafe for Provider
Blanket Implementations
impl<T> AbiExample for T
impl<T> AbiExample for T
default fn example() -> T
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<T> Pointable for T
impl<T> Pointable for T
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more