Small QoL improvements for wallet developers (#2651)
* Small changes for wallet devs * Move create_nonce into Keychain trait * Replace match by map_err * Add flag to Slate to skip fee check * Fix secp dependency * Remove check_fee flag in Slate
This commit is contained in:
@@ -142,6 +142,15 @@ impl Keychain for ExtKeychain {
|
||||
Ok(BlindingFactor::from_secret_key(sum))
|
||||
}
|
||||
|
||||
fn create_nonce(&self, commit: &Commitment) -> Result<SecretKey, Error> {
|
||||
// hash(commit|wallet root secret key (m)) as nonce
|
||||
let root_key = self.derive_key(0, &Self::root_key_id())?;
|
||||
let res = blake2::blake2b::blake2b(32, &commit.0, &root_key.0[..]);
|
||||
let res = res.as_bytes();
|
||||
SecretKey::from_slice(&self.secp, &res)
|
||||
.map_err(|e| Error::RangeProof(format!("Unable to create nonce: {:?}", e).to_string()))
|
||||
}
|
||||
|
||||
fn sign(&self, msg: &Message, amount: u64, id: &Identifier) -> Result<Signature, Error> {
|
||||
let skey = self.derive_key(amount, id)?;
|
||||
let sig = self.secp.sign(msg, &skey)?;
|
||||
|
||||
@@ -468,6 +468,7 @@ pub trait Keychain: Sync + Send + Clone {
|
||||
fn derive_key(&self, amount: u64, id: &Identifier) -> Result<SecretKey, Error>;
|
||||
fn commit(&self, amount: u64, id: &Identifier) -> Result<Commitment, Error>;
|
||||
fn blind_sum(&self, blind_sum: &BlindSum) -> Result<BlindingFactor, Error>;
|
||||
fn create_nonce(&self, commit: &Commitment) -> Result<SecretKey, Error>;
|
||||
fn sign(&self, msg: &Message, amount: u64, id: &Identifier) -> Result<Signature, Error>;
|
||||
fn sign_with_blinding(&self, _: &Message, _: &BlindingFactor) -> Result<Signature, Error>;
|
||||
fn set_use_switch_commits(&mut self, value: bool);
|
||||
|
||||
Reference in New Issue
Block a user