From c998fbe2ae4fc433d254e939e7fb53f28c2d248a Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Fri, 2 Mar 2018 11:56:40 -0700 Subject: [PATCH] Sign the owner's public key Without this, the accountant will reject transfers from different entities if they are for the same amount and to the same entity. --- src/event.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/event.rs b/src/event.rs index d452e9e6b5..3d32aaf338 100644 --- a/src/event.rs +++ b/src/event.rs @@ -75,12 +75,15 @@ pub fn sign_transaction_data( keypair: &Ed25519KeyPair, to: &PublicKey, ) -> Signature { - sign_serialized(&(data, to), keypair) + let from = &Some(get_pubkey(keypair)); + sign_serialized(&(from, to, data), keypair) } /// Return a signature for the given data using the private key from the given keypair. pub fn sign_claim_data(data: &T, keypair: &Ed25519KeyPair) -> Signature { - sign_transaction_data(data, keypair, &get_pubkey(keypair)) + let to = get_pubkey(keypair); + let from: Option = None; + sign_serialized(&(&from, &to, data), keypair) } /// Verify a signed message with the given public key. @@ -109,7 +112,7 @@ pub fn verify_event(event: &Event) -> bool { sig, } = *event { - let sign_data = serialize(&(&data, &to)).unwrap(); + let sign_data = serialize(&(&from, &to, &data)).unwrap(); if !verify_signature(&from.unwrap_or(to), &sign_data, &sig) { return false; }