Skip to content
Snippets Groups Projects
Commit 3bd07819 authored by qh11's avatar qh11
Browse files

Update transaction.rs

parent 770b7e85
No related branches found
No related tags found
No related merge requests found
use serde::{Serialize,Deserialize};
use ring::signature::{Ed25519KeyPair, Signature, KeyPair, VerificationAlgorithm, EdDSAParameters};
use rand::Rng;
use crate::types::address::Address;
use bincode::serialize;
use serde::{Serialize,Deserialize};
#[derive(Serialize, Deserialize, Debug, Default, Clone)]
pub struct Transaction {
sender: Address,
receiver: Address,
value: u32
}
#[derive(Serialize, Deserialize, Debug, Default, Clone)]
pub struct SignedTransaction {
transaction: Transaction,
signature_vec: Vec<u8>,
public_key_vec: Vec<u8>
}
/// Create digital signature of a transaction
pub fn sign(t: &Transaction, key: &Ed25519KeyPair) -> Signature {
unimplemented!()
let serializeT = bincode::serialize(&t).unwrap();
let signature = key.sign(&serializeT);
signature
//unimplemented!()
}
/// Verify digital signature of a transaction, using public key instead of secret key
pub fn verify(t: &Transaction, public_key: &[u8], signature: &[u8]) -> bool {
unimplemented!()
let serializeT = serialize(&t).unwrap();
let unparsed = ring::signature::UnparsedPublicKey::new(&ring::signature::ED25519, public_key);
let result = unparsed.verify(&serializeT, signature);
let mut ans:bool = false;
if result == Ok(()) {
ans = true;
} else {
ans = false;
}
return ans;
//unimplemented!()
}
#[cfg(any(test, test_utilities))]
pub fn generate_random_transaction() -> Transaction {
unimplemented!()
let sender: [u8; 20] = rand::random();
let receiver: [u8; 20] = rand::random();
let value: u32 = rand::random();
let newTransaction = Transaction {
sender: sender.into(),
receiver: receiver.into(),
value: value
};
newTransaction
//unimplemented!()
}
// DO NOT CHANGE THIS COMMENT, IT IS FOR AUTOGRADER. BEFORE TEST
......@@ -53,4 +85,4 @@ mod tests {
}
}
// DO NOT CHANGE THIS COMMENT, IT IS FOR AUTOGRADER. AFTER TEST
\ No newline at end of file
// DO NOT CHANGE THIS COMMENT, IT IS FOR AUTOGRADER. AFTER TEST
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment